-
Notifications
You must be signed in to change notification settings - Fork 93
Доработан функционал смены ветки #49
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
base: develop
Are you sure you want to change the base?
Changes from 5 commits
88ac7ce
51ad26c
4cf0ab7
41490f6
54bed1b
d19e069
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 |
|---|---|---|
|
|
@@ -519,30 +519,81 @@ | |
| // | ||
| Функция ВыполнитьGitPull(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки) Экспорт | ||
|
|
||
| КомандныйФайл = Новый КомандныйФайл; | ||
| ИмяФайлаЛогаКоммита = ВременныеФайлы.СоздатьФайл("log"); | ||
| Если ЭтоWindows Тогда | ||
| КомандныйФайл.ДобавитьКоманду(СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", ЛокальныйРепозиторий)); | ||
| Иначе | ||
| КомандныйФайл.ДобавитьКоманду(СтроковыеФункции.ПодставитьПараметрыВСтроку("cd ""%1""", ЛокальныйРепозиторий)); | ||
| Если ЗначениеЗаполнено(ИмяВетки) Тогда | ||
|
|
||
| // надо проверить текущую ветку, совпдает ли она с требуемой | ||
| КомандныйФайлСтатуса = НовыйКомандныйФайлGit(ЛокальныйРепозиторий); | ||
|
|
||
| ПараметрыКоманды = Новый Массив; | ||
| ПараметрыКоманды.Добавить("git branch"); | ||
|
|
||
| Результат = ИсполнитьКомандныйФайлGit(КомандныйФайлСтатуса, ПараметрыКоманды); | ||
| Если Результат = 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. Не обрабатывается неуспешный результат git branch.
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. Тем более, что у нас API-метод |
||
|
|
||
| // вывод содержит много мусора, поэтому обработаем построчно | ||
| // нужная нам строка начинается с * | ||
| СтрокиФайла = СтрРазделить(КомандныйФайлСтатуса.ПолучитьВывод(), Символы.ПС, ЛОЖЬ); | ||
|
||
| НужноПереключитьВетку = ИСТИНА; | ||
|
|
||
| Для Ит = 0 По СтрокиФайла.Количество() - 1 Цикл | ||
|
|
||
| Если СтрНачинаетсяС(СтрокиФайла[Ит], "*") Тогда | ||
|
|
||
| ИмяТекущейВетки = СокрЛП(Сред(СтрокиФайла[Ит], 2)); | ||
| Если ИмяТекущейВетки <> ИмяВетки Тогда | ||
|
|
||
| Лог.Отладка("Текущая ветка репозитория '%1', а требуется '%2'", ИмяТекущейВетки, ИмяВетки); | ||
|
|
||
| Иначе | ||
|
|
||
| НужноПереключитьВетку = ЛОЖЬ; | ||
|
|
||
| КонецЕсли; | ||
|
|
||
| Прервать; | ||
|
|
||
| КонецЕсли; | ||
|
|
||
| КонецЦикла; | ||
|
|
||
| Если НужноПереключитьВетку Тогда | ||
|
|
||
| Лог.Информация("Переключаем на ветку '%1'", ИмяВетки); | ||
|
|
||
| КомандныйФайлВетка = НовыйКомандныйФайлGit(ЛокальныйРепозиторий); | ||
|
|
||
| ПараметрыКоманды = Новый Массив; | ||
| ПараметрыКоманды.Добавить("git checkout"); | ||
| ПараметрыКоманды.Добавить("-f"); | ||
| ПараметрыКоманды.Добавить(ИмяВетки); | ||
|
|
||
| Результат = ИсполнитьКомандныйФайлGit(КомандныйФайлВетка, ПараметрыКоманды); | ||
| ВыводКоманды = КомандныйФайлВетка.ПолучитьВывод(); | ||
| УдалитьВременныеФайлыПриНеобходимости(КомандныйФайлВетка.Закрыть()); | ||
| Если Результат <> 0 Тогда | ||
|
|
||
| ВызватьИсключение "Ошибка переключения на ветки " + ВыводКоманды; | ||
|
|
||
| КонецЕсли; | ||
|
|
||
| КонецЕсли; | ||
|
|
||
| КонецЕсли; | ||
|
|
||
| УдалитьВременныеФайлыПриНеобходимости(КомандныйФайлСтатуса.Закрыть()); | ||
|
|
||
| КонецЕсли; | ||
|
|
||
| КомандныйФайлPull = НовыйКомандныйФайлGit(ЛокальныйРепозиторий); | ||
|
|
||
| ПараметрыКоманды = Новый Массив; | ||
| ПараметрыКоманды.Добавить("git pull"); | ||
| ПараметрыКоманды.Добавить("-v"); | ||
| ПараметрыКоманды.Добавить(СтрЗаменить(УдаленныйРепозиторий, "%", "%%")); | ||
| ПараметрыКоманды.Добавить(КомандныйФайл.СуффиксПеренаправленияВывода(ИмяФайлаЛогаКоммита, Истина)); | ||
|
|
||
| СтрокаКоманды = СобратьКоманднуюСтроку(ПараметрыКоманды); | ||
| сообщение = "строкаКоманды = <"+?(строкаКоманды = Неопределено, "Неопределено", строкаКоманды)+">"; | ||
| Лог.Отладка(сообщение); | ||
| КомандныйФайл.ДобавитьКоманду(СтрокаКоманды); | ||
| КомандныйФайл.ДобавитьКоманду("exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); | ||
|
|
||
| Результат = КомандныйФайл.Исполнить(); | ||
| ВывестиТекстФайла(ИмяФайлаЛогаКоммита); | ||
| УдалитьВременныеФайлыПриНеобходимости(ИмяФайлаЛогаКоммита); | ||
| УдалитьВременныеФайлыПриНеобходимости(КомандныйФайл.Закрыть()); | ||
| Результат = ИсполнитьКомандныйФайлGit(КомандныйФайлPull, ПараметрыКоманды); | ||
| Лог.Отладка(КомандныйФайлPull.ПолучитьВывод()); | ||
| УдалитьВременныеФайлыПриНеобходимости(КомандныйФайлPull.Закрыть()); | ||
|
|
||
| Возврат Результат; | ||
|
|
||
|
|
@@ -1380,6 +1431,35 @@ | |
| Возврат ?(ДоменПочтыДляGitПоУмолчанию = Неопределено, "localhost", ДоменПочтыДляGitПоУмолчанию); | ||
| КонецФункции | ||
|
|
||
| Функция НовыйКомандныйФайлGit(ЛокальныйРепозиторий) | ||
|
|
||
| КомандныйФайл = Новый КомандныйФайл; | ||
| Если ЭтоWindows Тогда | ||
|
|
||
| КомандныйФайл.ДобавитьКоманду(СтрШаблон("cd /d ""%1""", ЛокальныйРепозиторий)); | ||
|
|
||
| Иначе | ||
|
|
||
| КомандныйФайл.ДобавитьКоманду(СтрШаблон("cd ""%1""", ЛокальныйРепозиторий)); | ||
|
|
||
| КонецЕсли; | ||
|
|
||
| Возврат КомандныйФайл; | ||
|
|
||
| КонецФункции | ||
|
|
||
| Функция ИсполнитьКомандныйФайлGit(КомандныйФайл, ПараметрыКоманды) | ||
|
|
||
| СтрокаКоманды = СобратьКоманднуюСтроку(ПараметрыКоманды); | ||
| Сообщение = СтрШаблон("СтрокаКоманды = <%1>", ?(СтрокаКоманды = Неопределено, "Неопределено", СтрокаКоманды)); | ||
| Лог.Отладка(Сообщение); | ||
| КомандныйФайл.ДобавитьКоманду(СтрокаКоманды); | ||
| КомандныйФайл.ДобавитьКоманду(СтрШаблон("exit %1", ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#"))); | ||
|
|
||
| Возврат КомандныйФайл.Исполнить(); | ||
|
|
||
| КонецФункции | ||
|
|
||
| ////////////////////////////////////////////////////////////////////////////////////////////// | ||
| СистемнаяИнформация = Новый СистемнаяИнформация; | ||
| ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; | ||
|
|
||
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.
Название
КомандныйФайлСтатусауже не отвечает своему назначения, т.к. вместо гит статус юзаем гит бранч