From 51ad26cc0764bf9830d9f587b93732f72089ea8b Mon Sep 17 00:00:00 2001 From: Maxmov Valery Date: Wed, 22 Feb 2017 15:58:48 +0300 Subject: [PATCH 1/5] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=81=D0=BC=D0=B5=D0=BD=D1=8B=20=D0=B2=D0=B5=D1=82?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\267\320\260\321\206\320\270\320\270.os" | 115 +++++++++++++++--- 1 file changed, 98 insertions(+), 17 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 31554074..5c21cb19 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -519,30 +519,71 @@ // Функция ВыполнитьGitPull(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки) Экспорт - КомандныйФайл = Новый КомандныйФайл; - ИмяФайлаЛогаКоммита = ВременныеФайлы.СоздатьФайл("log"); - Если ЭтоWindows Тогда - КомандныйФайл.ДобавитьКоманду(СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", ЛокальныйРепозиторий)); - Иначе - КомандныйФайл.ДобавитьКоманду(СтроковыеФункции.ПодставитьПараметрыВСтроку("cd ""%1""", ЛокальныйРепозиторий)); + КомандныйФайлPull = НовыйКомандныйФайлGit(ЛокальныйРепозиторий); + + Если ЗначениеЗаполнено(ИмяВетки) Тогда + + // надо проверить текущую ветку, совпдает ли она с требуемой + КомандныйФайлСтатуса = НовыйКомандныйФайлGit(ЛокальныйРепозиторий); + + ПараметрыКоманды = Новый Массив; + ПараметрыКоманды.Добавить("git status"); + ПараметрыКоманды.Добавить("-b"); + ПараметрыКоманды.Добавить("-s"); + + Результат = ИсполнитьКомандныйФайлGit(КомандныйФайлСтатуса, ПараметрыКоманды); + + Файл = Новый Файл(КомандныйФайлСтатуса.ИмяФайлаЛога); + Если Файл.Существует() Тогда + + ЧТ = Новый ЧтениеТекста(КомандныйФайлСтатуса.ИмяФайлаЛога, "utf-8"); + СтрокаФайла = ЧТ.Прочитать(); + ЧТ.Закрыть(); + + // формат строки ## master...origin/master etc + ПозицияРазделителя = СтрНайти(СтрокаФайла, "..."); + Если ПозицияРазделителя Тогда + + ИмяТекущейВетки = Сред(СтрокаФайла, 4, ПозицияРазделителя - 4); + Если ИмяТекущейВетки <> ИмяВетки Тогда + + Лог.Отладка("Текущая ветка репозитория '" + ИмяТекущейВетки + "', а требуется '" + ИмяВетки + "'"); + Лог.Информация("Переключаем ветку на '" + ИмяВетки + "'"); + + КомандныйФайлВетка = НовыйКомандныйФайлGit(ЛокальныйРепозиторий); + + ПараметрыКоманды = Новый Массив; + ПараметрыКоманды.Добавить("git checkout"); + ПараметрыКоманды.Добавить("-f"); + ПараметрыКоманды.Добавить(ИмяВетки); + + Результат = ИсполнитьКомандныйФайлGit(КомандныйФайлВетка, ПараметрыКоманды); + ВыводКоманды = КомандныйФайлВетка.КомандныйФайл.ПолучитьВывод(); + ЗакрытьКомандныйФайлGit(КомандныйФайлВетка); + Если Результат <> 0 Тогда + + ВызватьИсключение "Ошибка переключения ветки " + ВыводКоманды; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + ЗакрытьКомандныйФайлGit(КомандныйФайлСтатуса); + КонецЕсли; ПараметрыКоманды = Новый Массив; ПараметрыКоманды.Добавить("git pull"); ПараметрыКоманды.Добавить("-v"); ПараметрыКоманды.Добавить(СтрЗаменить(УдаленныйРепозиторий, "%", "%%")); - ПараметрыКоманды.Добавить(КомандныйФайл.СуффиксПеренаправленияВывода(ИмяФайлаЛогаКоммита, Истина)); - СтрокаКоманды = СобратьКоманднуюСтроку(ПараметрыКоманды); - сообщение = "строкаКоманды = <"+?(строкаКоманды = Неопределено, "Неопределено", строкаКоманды)+">"; - Лог.Отладка(сообщение); - КомандныйФайл.ДобавитьКоманду(СтрокаКоманды); - КомандныйФайл.ДобавитьКоманду("exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); - - Результат = КомандныйФайл.Исполнить(); - ВывестиТекстФайла(ИмяФайлаЛогаКоммита); - УдалитьВременныеФайлыПриНеобходимости(ИмяФайлаЛогаКоммита); - УдалитьВременныеФайлыПриНеобходимости(КомандныйФайл.Закрыть()); + Результат = ИсполнитьКомандныйФайлGit(КомандныйФайлPull, ПараметрыКоманды); + ВывестиТекстФайла(КомандныйФайлPull.ИмяФайлаЛога); + ЗакрытьКомандныйФайлGit(КомандныйФайлPull); Возврат Результат; @@ -1380,6 +1421,46 @@ Возврат ?(ДоменПочтыДляGitПоУмолчанию = Неопределено, "localhost", ДоменПочтыДляGitПоУмолчанию); КонецФункции +Функция НовыйКомандныйФайлGit(ЛокальныйРепозиторий) + + КомандныйФайл = Новый КомандныйФайл; + ИмяФайлаЛога = ВременныеФайлы.СоздатьФайл("log"); + Если ЭтоWindows Тогда + + КомандныйФайл.ДобавитьКоманду(СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", ЛокальныйРепозиторий)); + + Иначе + + КомандныйФайл.ДобавитьКоманду(СтроковыеФункции.ПодставитьПараметрыВСтроку("cd ""%1""", ЛокальныйРепозиторий)); + + КонецЕсли; + + Возврат Новый Структура("КомандныйФайл, ИмяФайлаЛога", КомандныйФайл, ИмяФайлаЛога); + +КонецФункции + +Функция ИсполнитьКомандныйФайлGit(КомандныйФайлОбъект, ПараметрыКоманды) + + КомандныйФайл = КомандныйФайлОбъект.КомандныйФайл; + + ПараметрыКоманды.Добавить(КомандныйФайл.СуффиксПеренаправленияВывода(КомандныйФайлОбъект.ИмяФайлаЛога, Истина)); + СтрокаКоманды = СобратьКоманднуюСтроку(ПараметрыКоманды); + Сообщение = "СтрокаКоманды = <" + ?(строкаКоманды = Неопределено, "Неопределено", строкаКоманды) + ">"; + Лог.Отладка(Сообщение); + КомандныйФайл.ДобавитьКоманду(СтрокаКоманды); + КомандныйФайл.ДобавитьКоманду("exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); + + Возврат КомандныйФайл.Исполнить(); + +КонецФункции + +Процедура ЗакрытьКомандныйФайлGit(КомандныйФайлОбъект) + + УдалитьВременныеФайлыПриНеобходимости(КомандныйФайлОбъект.КомандныйФайл.Закрыть()); + УдалитьВременныеФайлыПриНеобходимости(КомандныйФайлОбъект.ИмяФайлаЛога); + +КонецПроцедуры + ////////////////////////////////////////////////////////////////////////////////////////////// СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; From 4cf0ab7a50038b6119f1203bd6a1866f4c0a906a Mon Sep 17 00:00:00 2001 From: Maxmov Valery Date: Fri, 24 Feb 2017 10:56:09 +0300 Subject: [PATCH 2/5] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BB=20=D0=BD=D0=B0=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=A1=D1=82?= =?UTF-8?q?=D1=80=D0=A8=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\275\320\270\320\267\320\260\321\206\320\270\320\270.os" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 5c21cb19..34bc770c 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -547,8 +547,8 @@ ИмяТекущейВетки = Сред(СтрокаФайла, 4, ПозицияРазделителя - 4); Если ИмяТекущейВетки <> ИмяВетки Тогда - Лог.Отладка("Текущая ветка репозитория '" + ИмяТекущейВетки + "', а требуется '" + ИмяВетки + "'"); - Лог.Информация("Переключаем ветку на '" + ИмяВетки + "'"); + Лог.Отладка("Текущая ветка репозитория '%1', а требуется '%2'", ИмяТекущейВетки, ИмяВетки); + Лог.Информация("Переключаем ветку на '%1'", ИмяВетки); КомандныйФайлВетка = НовыйКомандныйФайлGit(ЛокальныйРепозиторий); From 41490f6fffe9fb75a9745d02c7523fa89f116d4f Mon Sep 17 00:00:00 2001 From: Maxmov Valery Date: Fri, 24 Feb 2017 11:00:20 +0300 Subject: [PATCH 3/5] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BB=20=D0=BD=D0=B0=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=A1=D1=82?= =?UTF-8?q?=D1=80=D0=A8=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...75\320\270\320\267\320\260\321\206\320\270\320\270.os" | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 34bc770c..20ae42a3 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -1427,11 +1427,11 @@ ИмяФайлаЛога = ВременныеФайлы.СоздатьФайл("log"); Если ЭтоWindows Тогда - КомандныйФайл.ДобавитьКоманду(СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", ЛокальныйРепозиторий)); + КомандныйФайл.ДобавитьКоманду(СтрШаблон("cd /d ""%1""", ЛокальныйРепозиторий)); Иначе - КомандныйФайл.ДобавитьКоманду(СтроковыеФункции.ПодставитьПараметрыВСтроку("cd ""%1""", ЛокальныйРепозиторий)); + КомандныйФайл.ДобавитьКоманду(СтрШаблон("cd ""%1""", ЛокальныйРепозиторий)); КонецЕсли; @@ -1445,10 +1445,10 @@ ПараметрыКоманды.Добавить(КомандныйФайл.СуффиксПеренаправленияВывода(КомандныйФайлОбъект.ИмяФайлаЛога, Истина)); СтрокаКоманды = СобратьКоманднуюСтроку(ПараметрыКоманды); - Сообщение = "СтрокаКоманды = <" + ?(строкаКоманды = Неопределено, "Неопределено", строкаКоманды) + ">"; + Сообщение = СтрШаблон("СтрокаКоманды = <%1>", ?(СтрокаКоманды = Неопределено, "Неопределено", СтрокаКоманды); Лог.Отладка(Сообщение); КомандныйФайл.ДобавитьКоманду(СтрокаКоманды); - КомандныйФайл.ДобавитьКоманду("exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); + КомандныйФайл.ДобавитьКоманду(СтрШаблон("exit %1", ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); Возврат КомандныйФайл.Исполнить(); From 54bed1b6099963d756b01245657d4ce8127fbe69 Mon Sep 17 00:00:00 2001 From: Maxmov Valery Date: Fri, 24 Feb 2017 14:42:39 +0300 Subject: [PATCH 4/5] =?UTF-8?q?=D0=A1=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=B0=D0=BB=D0=B3?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D1=82=D0=BC=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B2=20=D1=81?= =?UTF-8?q?=D0=BE=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2=D0=B8?= =?UTF-8?q?=D0=B8=20=D1=81=20CR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\267\320\260\321\206\320\270\320\270.os" | 97 +++++++++---------- 1 file changed, 48 insertions(+), 49 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 20ae42a3..94980faa 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -519,52 +519,60 @@ // Функция ВыполнитьGitPull(Знач ЛокальныйРепозиторий, Знач УдаленныйРепозиторий, Знач ИмяВетки) Экспорт - КомандныйФайлPull = НовыйКомандныйФайлGit(ЛокальныйРепозиторий); - Если ЗначениеЗаполнено(ИмяВетки) Тогда // надо проверить текущую ветку, совпдает ли она с требуемой КомандныйФайлСтатуса = НовыйКомандныйФайлGit(ЛокальныйРепозиторий); ПараметрыКоманды = Новый Массив; - ПараметрыКоманды.Добавить("git status"); - ПараметрыКоманды.Добавить("-b"); - ПараметрыКоманды.Добавить("-s"); + ПараметрыКоманды.Добавить("git branch"); Результат = ИсполнитьКомандныйФайлGit(КомандныйФайлСтатуса, ПараметрыКоманды); - - Файл = Новый Файл(КомандныйФайлСтатуса.ИмяФайлаЛога); - Если Файл.Существует() Тогда + Если Результат = 0 Тогда - ЧТ = Новый ЧтениеТекста(КомандныйФайлСтатуса.ИмяФайлаЛога, "utf-8"); - СтрокаФайла = ЧТ.Прочитать(); - ЧТ.Закрыть(); + // вывод содержит много мусора, поэтому обработаем построчно + // нужная нам строка начинается с * + СтрокиФайла = СтрРазделить(КомандныйФайлСтатуса.ПолучитьВывод(), Символы.ПС, ЛОЖЬ); + НужноПереключитьВетку = ИСТИНА; - // формат строки ## master...origin/master etc - ПозицияРазделителя = СтрНайти(СтрокаФайла, "..."); - Если ПозицияРазделителя Тогда + Для Ит = 0 По СтрокиФайла.Количество() - 1 Цикл - ИмяТекущейВетки = Сред(СтрокаФайла, 4, ПозицияРазделителя - 4); - Если ИмяТекущейВетки <> ИмяВетки Тогда + Если СтрНачинаетсяС(СтрокиФайла[Ит], "*") Тогда - Лог.Отладка("Текущая ветка репозитория '%1', а требуется '%2'", ИмяТекущейВетки, ИмяВетки); - Лог.Информация("Переключаем ветку на '%1'", ИмяВетки); + ИмяТекущейВетки = СокрЛП(Сред(СтрокиФайла[Ит], 2)); + Если ИмяТекущейВетки <> ИмяВетки Тогда + + Лог.Отладка("Текущая ветка репозитория '%1', а требуется '%2'", ИмяТекущейВетки, ИмяВетки); + + Иначе + + НужноПереключитьВетку = ЛОЖЬ; - КомандныйФайлВетка = НовыйКомандныйФайлGit(ЛокальныйРепозиторий); - - ПараметрыКоманды = Новый Массив; - ПараметрыКоманды.Добавить("git checkout"); - ПараметрыКоманды.Добавить("-f"); - ПараметрыКоманды.Добавить(ИмяВетки); + КонецЕсли; + + Прервать; + + КонецЕсли; + + КонецЦикла; + + Если НужноПереключитьВетку Тогда - Результат = ИсполнитьКомандныйФайлGit(КомандныйФайлВетка, ПараметрыКоманды); - ВыводКоманды = КомандныйФайлВетка.КомандныйФайл.ПолучитьВывод(); - ЗакрытьКомандныйФайлGit(КомандныйФайлВетка); - Если Результат <> 0 Тогда + Лог.Информация("Переключаем на ветку '%1'", ИмяВетки); - ВызватьИсключение "Ошибка переключения ветки " + ВыводКоманды; + КомандныйФайлВетка = НовыйКомандныйФайлGit(ЛокальныйРепозиторий); + + ПараметрыКоманды = Новый Массив; + ПараметрыКоманды.Добавить("git checkout"); + ПараметрыКоманды.Добавить("-f"); + ПараметрыКоманды.Добавить(ИмяВетки); + + Результат = ИсполнитьКомандныйФайлGit(КомандныйФайлВетка, ПараметрыКоманды); + ВыводКоманды = КомандныйФайлВетка.ПолучитьВывод(); + УдалитьВременныеФайлыПриНеобходимости(КомандныйФайлВетка.Закрыть()); + Если Результат <> 0 Тогда - КонецЕсли; + ВызватьИсключение "Ошибка переключения на ветки " + ВыводКоманды; КонецЕсли; @@ -572,18 +580,20 @@ КонецЕсли; - ЗакрытьКомандныйФайлGit(КомандныйФайлСтатуса); - + УдалитьВременныеФайлыПриНеобходимости(КомандныйФайлСтатуса.Закрыть()); + КонецЕсли; + КомандныйФайлPull = НовыйКомандныйФайлGit(ЛокальныйРепозиторий); + ПараметрыКоманды = Новый Массив; ПараметрыКоманды.Добавить("git pull"); ПараметрыКоманды.Добавить("-v"); ПараметрыКоманды.Добавить(СтрЗаменить(УдаленныйРепозиторий, "%", "%%")); Результат = ИсполнитьКомандныйФайлGit(КомандныйФайлPull, ПараметрыКоманды); - ВывестиТекстФайла(КомандныйФайлPull.ИмяФайлаЛога); - ЗакрытьКомандныйФайлGit(КомандныйФайлPull); + Лог.Отладка(КомандныйФайлPull.ПолучитьВывод()); + УдалитьВременныеФайлыПриНеобходимости(КомандныйФайлPull.Закрыть()); Возврат Результат; @@ -1424,7 +1434,6 @@ Функция НовыйКомандныйФайлGit(ЛокальныйРепозиторий) КомандныйФайл = Новый КомандныйФайл; - ИмяФайлаЛога = ВременныеФайлы.СоздатьФайл("log"); Если ЭтоWindows Тогда КомандныйФайл.ДобавитьКоманду(СтрШаблон("cd /d ""%1""", ЛокальныйРепозиторий)); @@ -1435,32 +1444,22 @@ КонецЕсли; - Возврат Новый Структура("КомандныйФайл, ИмяФайлаЛога", КомандныйФайл, ИмяФайлаЛога); + Возврат КомандныйФайл; КонецФункции -Функция ИсполнитьКомандныйФайлGit(КомандныйФайлОбъект, ПараметрыКоманды) +Функция ИсполнитьКомандныйФайлGit(КомандныйФайл, ПараметрыКоманды) - КомандныйФайл = КомандныйФайлОбъект.КомандныйФайл; - - ПараметрыКоманды.Добавить(КомандныйФайл.СуффиксПеренаправленияВывода(КомандныйФайлОбъект.ИмяФайлаЛога, Истина)); СтрокаКоманды = СобратьКоманднуюСтроку(ПараметрыКоманды); - Сообщение = СтрШаблон("СтрокаКоманды = <%1>", ?(СтрокаКоманды = Неопределено, "Неопределено", СтрокаКоманды); + Сообщение = СтрШаблон("СтрокаКоманды = <%1>", ?(СтрокаКоманды = Неопределено, "Неопределено", СтрокаКоманды)); Лог.Отладка(Сообщение); КомандныйФайл.ДобавитьКоманду(СтрокаКоманды); - КомандныйФайл.ДобавитьКоманду(СтрШаблон("exit %1", ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); + КомандныйФайл.ДобавитьКоманду(СтрШаблон("exit %1", ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#"))); Возврат КомандныйФайл.Исполнить(); КонецФункции -Процедура ЗакрытьКомандныйФайлGit(КомандныйФайлОбъект) - - УдалитьВременныеФайлыПриНеобходимости(КомандныйФайлОбъект.КомандныйФайл.Закрыть()); - УдалитьВременныеФайлыПриНеобходимости(КомандныйФайлОбъект.ИмяФайлаЛога); - -КонецПроцедуры - ////////////////////////////////////////////////////////////////////////////////////////////// СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; From d19e069e305381f7ba3334172de082667452bd30 Mon Sep 17 00:00:00 2001 From: Maxmov Valery Date: Mon, 27 Feb 2017 10:15:23 +0300 Subject: [PATCH 5/5] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=BD=D1=83=D1=8E=20=D0=B8=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B2=D0=BE=D0=B7=D0=B2=D1=80=D0=B0?= =?UTF-8?q?=D1=82=20=D0=BF=D1=80=D0=B8=20=D0=BD=D0=B5=D0=BD=D1=83=D0=BB?= =?UTF-8?q?=D0=B5=D0=B2=D0=BE=D0=BC=20=D0=BA=D0=BE=D0=B4=D0=B5=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B7=D0=B2=D1=80=D0=B0=D1=82=D0=B0=20=D0=B2=D1=8B=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD=D0=B4=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\320\267\320\260\321\206\320\270\320\270.os" | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 94980faa..1ea42763 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -522,17 +522,17 @@ Если ЗначениеЗаполнено(ИмяВетки) Тогда // надо проверить текущую ветку, совпдает ли она с требуемой - КомандныйФайлСтатуса = НовыйКомандныйФайлGit(ЛокальныйРепозиторий); + КомандныйФайлВетка = НовыйКомандныйФайлGit(ЛокальныйРепозиторий); ПараметрыКоманды = Новый Массив; ПараметрыКоманды.Добавить("git branch"); - Результат = ИсполнитьКомандныйФайлGit(КомандныйФайлСтатуса, ПараметрыКоманды); + Результат = ИсполнитьКомандныйФайлGit(КомандныйФайлВетка, ПараметрыКоманды); Если Результат = 0 Тогда // вывод содержит много мусора, поэтому обработаем построчно // нужная нам строка начинается с * - СтрокиФайла = СтрРазделить(КомандныйФайлСтатуса.ПолучитьВывод(), Символы.ПС, ЛОЖЬ); + СтрокиФайла = СтрРазделить(КомандныйФайлВетка.ПолучитьВывод(), Символы.ПС, ЛОЖЬ); НужноПереключитьВетку = ИСТИНА; Для Ит = 0 По СтрокиФайла.Количество() - 1 Цикл @@ -580,7 +580,15 @@ КонецЕсли; - УдалитьВременныеФайлыПриНеобходимости(КомандныйФайлСтатуса.Закрыть()); + Лог.Отладка(КомандныйФайлВетка.ПолучитьВывод()); + УдалитьВременныеФайлыПриНеобходимости(КомандныйФайлВетка.Закрыть()); + + // если код не нулевой, вернем код ошибки + Если Результат <> 0 Тогда + + Возврат Результат; + + КонецЕсли; КонецЕсли;