-
Notifications
You must be signed in to change notification settings - Fork 93
Замена использования bat при работе с git #69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -14,6 +14,7 @@ | |
| #Использовать strings | ||
| #Использовать 1commands | ||
| #Использовать v8unpack | ||
| #Использовать gitrunner | ||
|
|
||
| Перем Лог; | ||
| Перем мФайлПрограммыРаспаковки; | ||
|
|
@@ -421,153 +422,102 @@ | |
|
|
||
| КонецПроцедуры | ||
|
|
||
| // Выполняет фиксацию изменений в локальном каталоге git | ||
| ///////////////////////////////////// | ||
| // GIT Пересмотр | ||
|
|
||
| // <Описание процедуры> | ||
| // | ||
| Процедура ВыполнитьКоммитГит(Знач КаталогРабочейКопии, Знач Комментарий, Знач Автор, Знач Дата=Неопределено) Экспорт | ||
| Функция ПолучитьГитРепозиторий(Знач КаталогРабочейКопии) | ||
|
|
||
| Если Дата = Неопределено Тогда | ||
| Дата = ТекущаяДата(); | ||
| КонецЕсли; | ||
| ГитРепозиторий = Новый ГитРепозиторий; | ||
| ГитРепозиторий.УстановитьРабочийКаталог(КаталогРабочейКопии); | ||
| ГитРепозиторий.УстановитьНастройку("core.quotepath","false",РежимУстановкиНастроекGit.Локально); | ||
| ГитРепозиторий.УстановитьНастройку("merge.ours.driver","true",РежимУстановкиНастроекGit.Локально); | ||
| Возврат ГитРепозиторий; | ||
|
|
||
| КонецФункции // ПолучитьГитРепозиторий() | ||
|
|
||
| Функция ПодготовитьФайлКоммита(Знач Комментарий) | ||
|
|
||
| ИмяФайлаКомментария = ВременныеФайлы.СоздатьФайл("txt"); | ||
| ФайлКомментария = Новый ЗаписьТекста(ИмяФайлаКомментария, КодировкаТекста.UTF8NoBOM); | ||
| ФайлКомментария.Записать(?(ПустаяСтрока(Комментарий), ".", Комментарий)); | ||
| ФайлКомментария.Закрыть(); | ||
| Лог.Информация("Текст коммита: <"+Комментарий+">"); | ||
|
|
||
| КомандныйФайл = Новый КомандныйФайл; | ||
|
|
||
| КомандныйФайл.УстановитьКодировкуВывода(КодировкаТекста.UTF8); | ||
|
|
||
| ПрефиксЭкспортаПеременной = ?(ЭтоWindows, "set", "export"); | ||
| Если ЭтоWindows Тогда | ||
| КомандныйФайл.ДобавитьКоманду("cd /d " + ОбернутьВКавычки(КаталогРабочейКопии)); | ||
| Иначе | ||
| КомандныйФайл.ДобавитьКоманду("cd " + ОбернутьВКавычки(КаталогРабочейКопии)); | ||
| КонецЕсли; | ||
| КомандныйФайл.ДобавитьКоманду(ПрефиксЭкспортаПеременной + " GIT_AUTHOR_DATE="+ОбернутьВКавычки(ДатаPOSIX(Дата))); | ||
| КомандныйФайл.ДобавитьКоманду(ПрефиксЭкспортаПеременной + " GIT_COMMITTER_DATE="+ОбернутьВКавычки(ДатаPOSIX(Дата))); | ||
| КомандныйФайл.ДобавитьКоманду(СтрШаблон("git add -A .")); | ||
| Лог.Отладка(СтрШаблон("Текст коммита: %1", Комментарий)); | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
|
|
||
| авторДляГит = Автор; | ||
| Если Найти(Автор, "<") <= Найти(Автор, ">") Тогда | ||
| авторДляГит = Автор+" <"+Автор+"@localhost>"; // e-mail может быть удобен для поиска в связанных системах //авторДляГит = Автор+" <"+Автор+">"; | ||
| КонецЕсли; | ||
| Возврат ИмяФайлаКомментария; | ||
|
|
||
| КомандаКоммита = СтрШаблон("git commit -a --file=""%1"" --author=""%2"" ", ИмяФайлаКомментария, Автор); | ||
|
|
||
| КомандныйФайл.ДобавитьКоманду(КомандаКоммита); | ||
|
|
||
| Если Не ЭтоWindows Тогда | ||
| КомандныйФайл.ДобавитьКоманду("exit $#"); | ||
| Иначе | ||
| // сейчас аккуратно верну кодировку, | ||
| // иначе после выполнения коммита все последующие команды скриптов будут неверно отображаться в консоли! | ||
| КомандныйФайл.ДобавитьКоманду("set gitsync_exit=%ERRORLEVEL%"); | ||
| КомандныйФайл.ДобавитьКоманду("chcp 866 >nul");// >nul важен для исключения ненужной надписи с иероглифами | ||
| КомандныйФайл.ДобавитьКоманду("exit /b %gitsync_exit%"); | ||
| КонецЕсли; | ||
|
|
||
| ИмяФайлаВыполнения = КомандныйФайл.Закрыть(); | ||
|
|
||
| Если Лог.Уровень() = УровниЛога.Отладка Тогда | ||
| текстФайла = ""; | ||
| Если ПолучитьТекстФайла(ИмяФайлаВыполнения, текстФайла) Тогда | ||
| Лог.Отладка("ВыполнитьКоммитГит: текст файла запуска "+Символы.ВК+текстФайла); | ||
| Иначе | ||
| Лог.Ошибка("ВыполнитьКоммитГит: не удалось вывести текст пакетного файла"); | ||
| КонецЕсли; | ||
| КонецЕсли; | ||
| КонецФункции | ||
|
|
||
| рез = КомандныйФайл.Исполнить(); | ||
|
|
||
| Лог.Информация("ВыполнитьКоммитГит: Вызов git commit вернул код <" + рез + "> "); | ||
| // Выполняет фиксацию изменений в локальном каталоге git | ||
| // | ||
| Процедура ВыполнитьКоммитГит(Знач КаталогРабочейКопии, Знач Комментарий, Знач Автор, Знач Дата = Неопределено) Экспорт | ||
|
|
||
| ВыводКоманды = КомандныйФайл.ПолучитьВывод(); | ||
| Если рез <> 0 Тогда | ||
| Лог.Ошибка("ВыполнитьКоммитГит: Лог неудачной команды git commit %1%2", Символы.ПС, ВыводКоманды); | ||
| Иначе | ||
| Лог.Отладка("ВыполнитьКоммитГит: Лог команды git commit %1%2", Символы.ПС, ВыводКоманды); | ||
| Если Дата = Неопределено Тогда | ||
| Дата = ТекущаяДата(); | ||
| КонецЕсли; | ||
|
|
||
| УдалитьВременныеФайлыПриНеобходимости(ИмяФайлаВыполнения); | ||
| УдалитьВременныеФайлыПриНеобходимости(ИмяФайлаКомментария); | ||
|
|
||
| Если Рез <> 0 Тогда | ||
| ВызватьИсключение "Коммит в git выполнить не удалось. См. лог"; | ||
| КонецЕсли; | ||
| авторДляГит = Автор; | ||
|
|
||
| Лог.Отладка(СтрШаблон("Автор коммита: %1", авторДляГит)); | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
| ДатаДляГит = ДатаPOSIX(Дата); | ||
| Лог.Отладка(СтрШаблон("Дата коммита: %1", ДатаДляГит)); | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
| ИмяФайлаКомментария = ПодготовитьФайлКоммита(Комментарий); | ||
|
|
||
| ГитРепозиторий = ПолучитьГитРепозиторий(КаталогРабочейКопии); | ||
| // Выполнение индексации всех измененных файлов | ||
| ГитРепозиторий.ВыполнитьКоманду(СтрРазделить("add -A .", " ")); | ||
| ГитРепозиторий.Закоммитить(Комментарий, | ||
| Истина, | ||
| ИмяФайлаКомментария, | ||
| авторДляГит, | ||
| ДатаДляГит, | ||
| авторДляГит, | ||
| ДатаДляГит); | ||
| Лог.Отладка(СтрШаблон("Вывод команды Commit: %1", СокрЛП(ГитРепозиторий.ПолучитьВыводКоманды()))); | ||
|
|
||
| ЗавершитьПроцесс_TGitCache_exe(); | ||
|
|
||
| КонецПроцедуры | ||
|
|
||
| // Cтандартная процедура git push | ||
| // | ||
| Функция ВыполнитьGitPush(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки = Неопределено) Экспорт | ||
|
|
||
| КомандныйФайл = Новый КомандныйФайл; | ||
| ИмяФайлаЛогаКоммита = ВременныеФайлы.СоздатьФайл("log"); | ||
| Если ЭтоWindows Тогда | ||
| КомандныйФайл.ДобавитьКоманду(СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", ЛокальныйРепозиторий)); | ||
| Иначе | ||
| КомандныйФайл.ДобавитьКоманду(СтроковыеФункции.ПодставитьПараметрыВСтроку("cd ""%1""", ЛокальныйРепозиторий)); | ||
| КонецЕсли; | ||
|
|
||
| КомандныйФайл.ДобавитьКоманду("git gc --auto"); | ||
| ГитРепозиторий = ПолучитьГитРепозиторий(ЛокальныйРепозиторий); | ||
| // Оптимизация git | ||
| ГитРепозиторий.ВыполнитьКоманду(СтрРазделить("gc --auto", " ")); | ||
| Лог.Отладка(СтрШаблон("Вывод команды gc: %1", СокрЛП(ГитРепозиторий.ПолучитьВыводКоманды()))); | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
|
|
||
| ПараметрыКомандыPush = Новый Массив; | ||
| ПараметрыКомандыPush.Добавить("push -u"); | ||
| ПараметрыКомандыPush.Добавить(СтрЗаменить(УдаленныйРепозиторий, "%", "%%")); | ||
| ПараметрыКомандыPush.Добавить("--all -v"); | ||
|
|
||
| ПараметрыКоманды = Новый Массив; | ||
| ПараметрыКоманды.Добавить("git push -u"); | ||
| ПараметрыКоманды.Добавить(СтрЗаменить(УдаленныйРепозиторий, "%", "%%")); | ||
| ПараметрыКоманды.Добавить("--all -v"); | ||
| ПараметрыКоманды.Добавить(КомандныйФайл.СуффиксПеренаправленияВывода(ИмяФайлаЛогаКоммита, Истина)); | ||
|
|
||
| СтрокаКоманды = СобратьКоманднуюСтроку(ПараметрыКоманды); | ||
| Если Лог.Уровень() = УровниЛога.Отладка Тогда | ||
| сообщение = "строкаКоманды = <"+?(строкаКоманды = Неопределено, "Неопределено", строкаКоманды)+">"; | ||
| Лог.Отладка(сообщение); | ||
| КонецЕсли; | ||
| ГитРепозиторий.ВыполнитьКоманду(ПараметрыКомандыPush); | ||
|
|
||
| КомандныйФайл.ДобавитьКоманду(СтрокаКоманды); | ||
| КомандныйФайл.ДобавитьКоманду("exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); | ||
| Лог.Отладка(СтрШаблон("Вывод команды Push: %1", СокрЛП(ГитРепозиторий.ПолучитьВыводКоманды()))); | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
|
|
||
| Результат = КомандныйФайл.Исполнить(); | ||
| ВывестиТекстФайла(ИмяФайлаЛогаКоммита); | ||
| УдалитьВременныеФайлыПриНеобходимости(ИмяФайлаЛогаКоммита); | ||
| УдалитьВременныеФайлыПриНеобходимости(КомандныйФайл.Закрыть()); | ||
| ЗавершитьПроцесс_TGitCache_exe(); | ||
|
|
||
| Возврат Результат; | ||
| Возврат 0; | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @khorevaa @nixel2007 Почему подменяется возврат результата?
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ммм косяк. Надо подумать! Поправлю на досуге хотя там вылетить исключение уже из gitrunner |
||
|
|
||
| КонецФункции | ||
|
|
||
| // Cтандартная процедура git pull | ||
| // | ||
| Функция ВыполнитьGitPull(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки) Экспорт | ||
|
|
||
| КомандныйФайл = Новый КомандныйФайл; | ||
| ИмяФайлаЛогаКоммита = ВременныеФайлы.СоздатьФайл("log"); | ||
| Если ЭтоWindows Тогда | ||
| КомандныйФайл.ДобавитьКоманду(СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", ЛокальныйРепозиторий)); | ||
| Иначе | ||
| КомандныйФайл.ДобавитьКоманду(СтроковыеФункции.ПодставитьПараметрыВСтроку("cd ""%1""", ЛокальныйРепозиторий)); | ||
| КонецЕсли; | ||
|
|
||
| ПараметрыКоманды = Новый Массив; | ||
| ПараметрыКоманды.Добавить("git pull"); | ||
| ПараметрыКоманды.Добавить("-v"); | ||
| ПараметрыКоманды.Добавить(СтрЗаменить(УдаленныйРепозиторий, "%", "%%")); | ||
| ПараметрыКоманды.Добавить(КомандныйФайл.СуффиксПеренаправленияВывода(ИмяФайлаЛогаКоммита, Истина)); | ||
|
|
||
| СтрокаКоманды = СобратьКоманднуюСтроку(ПараметрыКоманды); | ||
| сообщение = "строкаКоманды = <"+?(строкаКоманды = Неопределено, "Неопределено", строкаКоманды)+">"; | ||
| Лог.Отладка(сообщение); | ||
| КомандныйФайл.ДобавитьКоманду(СтрокаКоманды); | ||
| КомандныйФайл.ДобавитьКоманду("exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); | ||
|
|
||
| Результат = КомандныйФайл.Исполнить(); | ||
| ВывестиТекстФайла(ИмяФайлаЛогаКоммита); | ||
| УдалитьВременныеФайлыПриНеобходимости(ИмяФайлаЛогаКоммита); | ||
| УдалитьВременныеФайлыПриНеобходимости(КомандныйФайл.Закрыть()); | ||
| ГитРепозиторий = ПолучитьГитРепозиторий(ЛокальныйРепозиторий); | ||
| ГитРепозиторий.Получить(УдаленныйРепозиторий, ИмяВетки); | ||
|
|
||
| Возврат Результат; | ||
| Лог.Отладка(СтрШаблон("Вывод команды Pull: %1", СокрЛП(ГитРепозиторий.ПолучитьВыводКоманды()))); | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Так и ПР висел хз скок времени |
||
|
|
||
| ЗавершитьПроцесс_TGitCache_exe(); | ||
|
|
||
| Возврат 0; | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @khorevaa @nixel2007 Почему подменяется возврат результата? |
||
|
|
||
| КонецФункции | ||
|
|
||
|
|
@@ -1399,6 +1349,7 @@ | |
| ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; | ||
|
|
||
| Лог = Логирование.ПолучитьЛог("oscript.app.gitsync"); | ||
|
|
||
| ДоменПочтыДляGitПоУмолчанию = "localhost"; | ||
| УдалятьВременныеФайлы = Ложь; | ||
| КоличествоЦикловОжиданияЛицензииПоУмолчанию = 1; | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Метод
ПолучитьГитРепозиторийне корректно вызываетсясам метод часто вызывается перед вызовом команд гита (пуш, коммит и т.п.)
а при вызове этот метод постоянно вызывает установку настроек, что совершенно не нужно для указанных команд :(
Предлагаю добавить установку этих параметров один раз в начале работы продукта, а в дальнейшем уже не устанавливать настройки.
@khorevaa @nixel2007
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@khorevaa @nixel2007 Соответствующая веселуха с ci-сервера проекта :(
дофига ненужных команд
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А не надо включать отладочные логи всех библиотек :Р
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Странные логи. Видимо из gitrunner. Надо посмотреть почему лезит
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
потому что я это логирую, очевидно. вангую, что Артур как обычно включил все логи через rootLogger. естественно он видит всею
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
тут проблема не в лишних логах, а в том, что вызывается лишние и абсолютно не нужные команды, о которых я уже писал выше.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Как раз в данном случае отладочные логи очень четко показывают проблему.