1
0
mirror of https://github.com/1C-Company/GitConverter.git synced 2025-03-29 21:47:04 +02:00

Merge pull request from 1C-Company/features/log-enhancement

Улучшение логирования и мелкие доработки
This commit is contained in:
Dmitriy Marmyshev 2018-03-31 11:42:06 +03:00 committed by GitHub
commit 13fbbd2c10
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 177 additions and 70 deletions
GitConverter/src
Catalogs
ВерсииХранилища
ХранилищаКонфигураций
CommonModules/КонвертацияХранилища
Configuration
Constants/ПутьКВерсиямПлатформыНаСервере
FunctionalOptions/ИспользоватьОчередиВыполнения

@ -68,16 +68,32 @@
ПоляВерсии.Вставить("Добавлены:", "Добавлены");
ПоляВерсии.Вставить("Изменены:", "Изменены");
ПоляВерсии.Вставить("Удалены:", "Удалены");
ПоляВерсии.Вставить("Version:", "Версия");
ПоляВерсии.Вставить("Creation date:", "ДатаСоздания");
ПоляВерсии.Вставить("Creation time:", "ВремяСоздания");
ПоляВерсии.Вставить("User:", "Пользователь");
ПоляВерсии.Вставить("Comment:", "Комментарий");
ПоляВерсии.Вставить("Added:", "Добавлены");
ПоляВерсии.Вставить("Changed:", "Изменены");
ПоляВерсии.Вставить("Deleted:", "Удалены");
КолонкаПоиска = Отчет.Область("C1");
ОбластьСтроки = Неопределено;
ОбластьСтроки = Отчет.НайтиТекст("Версия:", ОбластьСтроки, КолонкаПоиска, Ложь, Истина, Истина, Истина);
Если ОбластьСтроки = Неопределено Тогда
ОбластьСтроки = Отчет.НайтиТекст("Version:", ОбластьСтроки, КолонкаПоиска, Ложь, Истина, Истина, Истина);
КонецЕсли;
Пока ОбластьСтроки <> Неопределено Цикл
ВерсияХранилища = Новый Структура("Версия, ДатаСоздания, ВремяСоздания, Пользователь, Комментарий, Добавлены, Изменены, Удалены", "", "", "", "", "", Новый Массив, Новый Массив, Новый Массив);
СтрокаНачалаВерсии = ОбластьСтроки.Верх;
ОбластьСтроки = Отчет.НайтиТекст("Версия:", ОбластьСтроки, КолонкаПоиска, Ложь, Истина, Истина, Истина);
ОбластьСтрокиНаРусском = Отчет.НайтиТекст("Версия:", ОбластьСтроки, КолонкаПоиска, Ложь, Истина, Истина, Истина);
Если ОбластьСтрокиНаРусском = Неопределено Тогда
ОбластьСтроки = Отчет.НайтиТекст("Version:", ОбластьСтроки, КолонкаПоиска, Ложь, Истина, Истина, Истина);
Иначе
ОбластьСтроки = ОбластьСтрокиНаРусском;
КонецЕсли;
Если ОбластьСтроки = Неопределено Тогда
// Это последняя версия в файле, получаем конец документа

@ -1144,6 +1144,10 @@
<items xsi:type="form:FormField">
<name>ВыгружатьИзменения</name>
<id>145</id>
<title>
<key>ru</key>
<value>Выгружать изменения (ускорить конвертацию)</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@ -1155,6 +1159,7 @@
</paths>
</dataPath>
<titleLocation>Right</titleLocation>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>ВыгружатьИзмененияРасширеннаяПодсказка</name>
<id>147</id>

@ -679,7 +679,7 @@
</type>
<toolTip>
<key>ru</key>
<value>Начиная с платформы 8.3.10 возможно использовать выгрузку изменений между версиями.</value>
<value>Начиная с платформы 8.3.10 возможно использовать выгрузку изменений между версиями - это позволяет существенно ускорить конвертацию. Необходимо использовать &quot;Очереди выполнения&quot; с данной опцией.</value>
</toolTip>
<mask></mask>
<minValue xsi:type="core:UndefinedValue"/>

@ -42,7 +42,7 @@
+ "params_" + Параметры.Ключ + ".txt");
Параметры.Вставить("ИмяФайлаЛогов", ИмяФайлаЛогаКонвертацииХранилища(Параметры.КаталогВременныхФайлов));
Параметры.Вставить("ИмяФайлаРезультатов", Параметры.КаталогВременныхФайлов
+ "result.log");
+ "result.txt");
Параметры.Вставить("КаталогИБ", Параметры.КаталогВременныхФайлов
+ "report_db");
Параметры.КаталогИБ = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Параметры.КаталогИБ);
@ -459,8 +459,9 @@
Параметры = Новый Структура;
Параметры.Вставить("Код", СтрокаВерсии.Код);
Параметры.Вставить("КопияХранилища", Копия);
Параметры.Вставить("КаталогВыгрузкиВерсий", ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(СтрокаВерсии.КаталогВыгрузкиВерсий));
Параметры.Вставить("КаталогВыгрузкиВерсий",
ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(СтрокаВерсии.КаталогВыгрузкиВерсий));
ПолучитьВерсиюВБазу(Параметры, СтрокаВерсии.Хранилище, СтрокаВерсии.ВерсияХранилища);
Прервать;
@ -665,7 +666,7 @@
Объект = Неопределено;
Справочники.ВерсииХранилища.УстановитьСостояние(ВерсияХранилища, Перечисления.СостоянияВерсии.НачалоКоммита);
ФайлКомандыGit = Новый Файл(ИмяФайлаКомандыGit);
ФайлКомментария = Новый Файл(ИмяФайлКомментария);
Если НЕ ФайлКомандыGit.Существует() ИЛИ ФайлКомандыGit.Размер() = 0
@ -732,9 +733,17 @@
СоздатьКаталог(ПутьКИсходнымФайлам);
СкопироватьФайлыРекурсивно(ВыборкаДетальныеЗаписи.КаталогФайловКонфигурации, ПутьКИсходнымФайлам);
КонецЕсли;
Параметры = Новый Структура;
Параметры.Вставить("ИмяФайлаЛогов", ИмяФайлаЛога);
ДобавитьЗаписьВЛог(Параметры, НСтр("ru='Начало коммита в Git'"));
КодВозврата = Неопределено;
ЗапуститьПриложение(?(ЭтоWindowsСервер, "", "bash ")
+ ИмяФайлаКомандыGit, РеквизитыХранилища.ЛокальныйКаталогGit, Истина);
+ ИмяФайлаКомандыGit, РеквизитыХранилища.ЛокальныйКаталогGit, Истина, КодВозврата);
ДобавитьЗаписьВЛог(Параметры, НСтр("ru='Окончание коммита в Git'"), "Код возврата: "
+ ?(КодВозврата = Неопределено, "Неопределено", КодВозврата));
SHAКоммита = "";
ИмяФайлаSHA = ПолучитьИмяВременногоФайла("txt");
@ -1021,7 +1030,7 @@
+ "params_" + Параметры.Ключ + ".txt");
Параметры.Вставить("ИмяФайлаЛогов", ИмяФайлаЛогаОбработкиВерсии(Параметры.КаталогВременныхФайлов));
Параметры.Вставить("ИмяФайлаРезультатов", Параметры.КаталогВременныхФайлов
+ "result.log");
+ "result.txt");
Возврат Параметры;
@ -1170,7 +1179,8 @@
ЭлементБлокировки.УстановитьЗначение("Ссылка", ВыборкаДетальныеЗаписи.Ссылка);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
// Ответственное чтение версии, держим версию заблокированой до окончания копирования
Состояние = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВыборкаДетальныеЗаписи.Ссылка, "Состояние");
Если Состояние = Перечисления.СостоянияВерсии.ВерсияВыгружена
@ -1607,36 +1617,42 @@
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
Если ЭтоWindowsСервер Тогда
ТекстКомандыУстановкиКаталога = "cd /D ""%ЛокальныйКаталогGit%"" >> %LOGFILE%";
ВыводЛога = " >> %LOGFILE% 2>&1";
Иначе
ТекстКомандыУстановкиКаталога = "cd ""%ЛокальныйКаталогGit%"" >> %LOGFILE%";
ВыводЛога = " >> $LOGFILE 2>&1";
КонецЕсли;
Если ЭтоWindowsСервер Тогда
ТекстКомандыУстановкиКаталога = "cd /D ""%ЛокальныйКаталогGit%""" + ВыводЛога;
Иначе
ТекстКомандыУстановкиКаталога = "cd ""%ЛокальныйКаталогGit%""" + ВыводЛога;
КонецЕсли;
ТекстКомандыУстановкиКаталога = СтрЗаменить(ТекстКомандыУстановкиКаталога, "%ЛокальныйКаталогGit%", РеквизитыХранилища.ЛокальныйКаталогGit);
ФайлКоманды.ДобавитьСтроку(ТекстКомандыУстановкиКаталога);
// Инициализация репозитория
ТекстКоманды = "git init >> %LOGFILE%";
ТекстКоманды = "git init" + ВыводЛога;
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
// Делаем пути к файлам русскоязычными
ТекстКоманды = "git config --local core.quotepath false >> %LOGFILE%";
ТекстКоманды = "git config --local core.quotepath false" + ВыводЛога;
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
// кодировка по умолчанию при просмотре
ТекстКоманды = "git config --local gui.encoding utf-8 >> %LOGFILE%";
ТекстКоманды = "git config --local gui.encoding utf-8" + ВыводЛога;
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
// Кодировка сообщений в коммитах
ТекстКоманды = "git config --local i18n.commitEncoding utf-8 >> %LOGFILE%";
ТекстКоманды = "git config --local i18n.commitEncoding utf-8" + ВыводЛога;
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
// Устанавливаем количество переименованных файлов = 0, т.к. все переименования мы делаем вручную
ТекстКоманды = "git config --local diff.renameLimit 1 >> %LOGFILE%";
ТекстКоманды = "git config --local diff.renameLimit 1" + ВыводЛога;
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
// Отключаем автоопределение переименования, переименования устанавливаем вручную
ТекстКоманды = "git config --local diff.renames false >> %LOGFILE%";
ТекстКоманды = "git config --local diff.renames false" + ВыводЛога;
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
// Инициализация репозитория на сервере
@ -1644,7 +1660,7 @@
ПозицияРазделителя = СтрНайти(АдресРепозиторияGit, "://");
Если ПозицияРазделителя > 0 Тогда
ТекстКоманды = "git remote add origin %АдресРепозиторияGit% >> %LOGFILE%";
ТекстКоманды = "git remote add origin %АдресРепозиторияGit%" + ВыводЛога;
АдресРепозиторияGit = Лев(АдресРепозиторияGit, ПозицияРазделителя + 2)
+ РеквизитыХранилища.ПользовательСервераGit + ":"
+ РеквизитыХранилища.ПарольСервераGit + "@"
@ -1655,12 +1671,6 @@
КонецЕсли;
Если НЕ ЭтоWindowsСервер Тогда
ТекстКоманды = ФайлКоманды.ПолучитьТекст();
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%LOGFILE%", "$LOGFILE");
ФайлКоманды.УстановитьТекст(ТекстКоманды);
КонецЕсли;
Если ЭтоWindowsСервер Тогда
ФайлКоманды.Записать(ФайлКомандыGit, КодировкаТекста.OEM);
Иначе
@ -1733,9 +1743,15 @@
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
Если ЭтоWindowsСервер Тогда
ТекстКомандыУстановкиКаталога = "cd /D ""%ЛокальныйКаталогGit%"" >> %LOGFILE%";
ВыводЛога = " >> %LOGFILE% 2>&1";
Иначе
ТекстКомандыУстановкиКаталога = "cd ""%ЛокальныйКаталогGit%"" >> %LOGFILE%";
ВыводЛога = " >> $LOGFILE 2>&1";
КонецЕсли;
Если ЭтоWindowsСервер Тогда
ТекстКомандыУстановкиКаталога = "cd /D ""%ЛокальныйКаталогGit%""" + ВыводЛога;
Иначе
ТекстКомандыУстановкиКаталога = "cd ""%ЛокальныйКаталогGit%""" + ВыводЛога;
КонецЕсли;
ТекстКомандыУстановкиКаталога = СтрЗаменить(ТекстКомандыУстановкиКаталога, "%ЛокальныйКаталогGit%", РеквизитыХранилища.ЛокальныйКаталогGit);
@ -1746,7 +1762,7 @@
ПозицияРазделителя = СтрНайти(АдресРепозиторияGit, "://");
Если ПозицияРазделителя > 0 Тогда
ТекстКоманды = "git remote add origin %АдресРепозиторияGit% >> %LOGFILE%";
ТекстКоманды = "git remote add origin %АдресРепозиторияGit%" + ВыводЛога;
АдресРепозиторияGit = Лев(АдресРепозиторияGit, ПозицияРазделителя + 2)
+ РеквизитыХранилища.ПользовательСервераGit + ":"
+ РеквизитыХранилища.ПарольСервераGit + "@"
@ -1757,12 +1773,6 @@
КонецЕсли;
Если НЕ ЭтоWindowsСервер Тогда
ТекстКоманды = ФайлКоманды.ПолучитьТекст();
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%LOGFILE%", "$LOGFILE");
ФайлКоманды.УстановитьТекст(ТекстКоманды);
КонецЕсли;
Если ЭтоWindowsСервер Тогда
ФайлКоманды.Записать(ФайлКомандыGit, КодировкаТекста.OEM);
Иначе
@ -2084,8 +2094,10 @@
КодВозврата = Неопределено;
ЗапуститьПриложение(СтрокаКоманды, Параметры.КаталогИсполняемогоФайла, Истина, КодВозврата);
КодРезультата = ПрочитатьФайлРезультата(Параметры.ИмяФайлаРезультатов);
ДобавитьЗаписьВЛог(Параметры, НСтр("ru='Окончание создания базы.'"), "Код возврата: "
+ ?(КодВозврата = Неопределено, "Неопределено", КодВозврата));
+ ?(КодВозврата = Неопределено, "Неопределено", КодВозврата) + ", Код результата: " + КодРезультата);
КонецЕсли;
@ -2162,11 +2174,13 @@
КодВозврата = Неопределено;
ЗапуститьПриложение(СтрокаКоманды, Параметры.КаталогИсполняемогоФайла, Истина, КодВозврата);
КодРезультата = ПрочитатьФайлРезультата(Параметры.ИмяФайлаРезультатов);
ДобавитьЗаписьВЛог(Параметры, НСтр("ru='Окончание формирования отчета по хранилищу.'"), "Код возврата: "
+ ?(КодВозврата = Неопределено, "Неопределено", КодВозврата));
+ ?(КодВозврата = Неопределено, "Неопределено", КодВозврата) + ", Код результата: " + КодРезультата);
// Если выполнение операции содержит ошибки - далее не продолжаем
Если КодВозврата <> 0 Тогда
Если КодВозврата <> 0 ИЛИ КодРезультата <> 0 Тогда
ВызватьИсключение СтрШаблон(НСтр("ru = 'При формирования отчета по хранилищу конфигураций возникли ошибки. Подробнее см. файл лога:
|%1'", Параметры.ИмяФайлаЛогов));
КонецЕсли;
@ -2243,11 +2257,13 @@
КодВозврата = Неопределено;
ЗапуститьПриложение(СтрокаКоманды, Параметры.КаталогИсполняемогоФайла, Истина, КодВозврата);
КодРезультата = ПрочитатьФайлРезультата(Параметры.ИмяФайлаРезультатов);
ДобавитьЗаписьВЛог(Параметры, НСтр("ru='Окончание обновления базы из хранилища.'"), "Код возврата: "
+ ?(КодВозврата = Неопределено, "Неопределено", КодВозврата));
+ ?(КодВозврата = Неопределено, "Неопределено", КодВозврата) + ", Код результата: " + КодРезультата);
// Если выполнение операции содержит ошибки - далее не продолжаем
Если КодВозврата <> 0 Тогда
Если КодВозврата <> 0 ИЛИ КодРезультата <> 0 Тогда
ВызватьИсключение СтрШаблон(НСтр("ru = 'При обновлении ИБ из хранилища конфигураций возникли ошибки. Подробнее см. файл лога:
|%1'", Параметры.ИмяФайлаЛогов));
КонецЕсли;
@ -2276,10 +2292,13 @@
УказыватьПустогоПользователя = ЗначениеЗаполнено(Параметры.ИмяПользователяИБ);
Если Параметры.ВыгружатьИзменения Тогда
Если Параметры.Свойство("ВыгружатьИзменения") И Параметры.ВыгружатьИзменения Тогда
ДополнительныеПараметры = "-update -force -getChanges ""%ФайлИзменений%"" -configDumpInfoForChanges ""%ФайлСостоянияПредыдущейВерсии%""";
ДополнительныеПараметры = СтрЗаменить(ДополнительныеПараметры, "%ФайлИзменений%", Параметры.ФайлИзменений);
ДополнительныеПараметры = СтрЗаменить(ДополнительныеПараметры, "%ФайлСостоянияПредыдущейВерсии%", Параметры.ФайлСостоянияПредыдущейВерсии);
ИначеЕсли Параметры.Свойство("ВыгружатьПоСписку") И Параметры.ВыгружатьПоСписку Тогда
ДополнительныеПараметры = "-listFile ""%ФайлСпискаВыгрузки%""";
ДополнительныеПараметры = СтрЗаменить(ДополнительныеПараметры, "%ФайлСпискаВыгрузки%", Параметры.ФайлСпискаВыгрузки);
Иначе
ДополнительныеПараметры = "";
КонецЕсли;
@ -2314,12 +2333,14 @@
КодВозврата = Неопределено;
ЗапуститьПриложение(СтрокаКоманды, Параметры.КаталогИсполняемогоФайла, Истина, КодВозврата);
КодРезультата = ПрочитатьФайлРезультата(Параметры.ИмяФайлаРезультатов);
ДобавитьЗаписьВЛог(Параметры, НСтр("ru='Окончание выгрузки конфигурации в файлы.'"), "Код возврата: "
+ ?(КодВозврата = Неопределено, "Неопределено", КодВозврата));
+ ?(КодВозврата = Неопределено, "Неопределено", КодВозврата) + ", Код результата: " + КодРезультата);
// Если выполнение операции содержит ошибки - далее не продолжаем
Если КодВозврата <> 0 Тогда
Если КодВозврата <> 0 ИЛИ КодРезультата <> 0 Тогда
ВызватьИсключение СтрШаблон(НСтр("ru = 'При выгрузке конфигурации в файлы возникли ошибки. Подробнее см. файл лога:
|%1'", Параметры.ИмяФайлаЛогов));
КонецЕсли;
@ -2373,7 +2394,7 @@
+ "params_" + Параметры.Ключ + ".txt");
Параметры.Вставить("ИмяФайлаЛогов", ИмяФайлаЛогаКонвертацииХранилища(Параметры.КаталогВременныхФайлов));
Параметры.Вставить("ИмяФайлаРезультатов", Параметры.КаталогВременныхФайлов
+ "result.log");
+ "result.txt");
Параметры.Вставить("СоздатьФайловуюИнформационнуюБазу", Истина);
Параметры.Вставить("ДобавлятьВСписок", Истина);
@ -2397,7 +2418,7 @@
Параметры.Вставить("ОбновитьИнформационнуюБазуИзХранилища", Истина);
Параметры.Вставить("ВерсияХранилища", Параметры.Код);
ОбновитьИнформационнуюБазуИзХранилища(Параметры);
ДлительныеОперации.СообщитьПрогресс(100, "Версия получена из хранилища");
Справочники.ВерсииХранилища.УстановитьСостояние(ВерсияХранилища, Перечисления.СостоянияВерсии.ВерсияПолучена);
@ -2416,8 +2437,7 @@
// СтруктураФайла - Структура - параметры файла
// КвалифицированныеОбъекты - Структура - список квалифицированных объектов для поиска в файле
// ПодчиненныеОбъекты - Массив - список подчиненных объектов
Процедура ПрочитатьСвойстваОбъектаМетаданных(СтруктураФайла,
КвалифицированныеОбъекты, ПодчиненныеОбъекты)
Процедура ПрочитатьСвойстваОбъектаМетаданных(СтруктураФайла, КвалифицированныеОбъекты, ПодчиненныеОбъекты)
Попытка
@ -2542,16 +2562,22 @@
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
Если ЭтоWindowsСервер Тогда
ТекстКомандыУстановкиКаталога = "cd /D ""%ЛокальныйКаталогGit%"" >> %LOGFILE%";
ВыводЛога = " >> %LOGFILE% 2>&1";
Иначе
ТекстКомандыУстановкиКаталога = "cd ""%ЛокальныйКаталогGit%"" >> %LOGFILE%";
ВыводЛога = " >> $LOGFILE 2>&1";
КонецЕсли;
Если ЭтоWindowsСервер Тогда
ТекстКомандыУстановкиКаталога = "cd /D ""%ЛокальныйКаталогGit%""" + ВыводЛога;
Иначе
ТекстКомандыУстановкиКаталога = "cd ""%ЛокальныйКаталогGit%""" + ВыводЛога;
КонецЕсли;
ТекстКомандыУстановкиКаталога = СтрЗаменить(ТекстКомандыУстановкиКаталога, "%ЛокальныйКаталогGit%",
РеквизитыХранилища.ЛокальныйКаталогGit);
ФайлКоманды.ДобавитьСтроку(ТекстКомандыУстановкиКаталога);
ТекстКоманды = "git pull >> %LOGFILE%";
ТекстКоманды = "git pull" + ВыводЛога;
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
КаталогФайловКонфигурации = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(РеквизитыВерсии.КаталогФайловКонфигурации);
@ -2646,9 +2672,9 @@
// Создаем все кататалоги
Если ЭтоWindowsСервер Тогда
ТекстКоманды = "mkdir ""%Приемник%"" >> %LOGFILE%";
ТекстКоманды = "mkdir ""%Приемник%""" + ВыводЛога;
Иначе
ТекстКоманды = "mkdir -p ""%Приемник%"" >> %LOGFILE%";
ТекстКоманды = "mkdir -p ""%Приемник%""" + ВыводЛога;
КонецЕсли;
ДиректорияПриемника = ПрефиксКаталогаИсходников + СтрокаТЧ.ПолноеИмя;
МассивПутей = СтрРазделить(ДиректорияПриемника, ПолучитьРазделительПути());
@ -2657,7 +2683,7 @@
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ДиректорияПриемника);
ТекстыКомандПереименования.Добавить(ТекстКоманды);
ТекстКоманды = "git mv -f %Источник% %Приемник% >> %LOGFILE%";
ТекстКоманды = "git mv -f %Источник% %Приемник%" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Источник%", ПрефиксКаталогаИсходников
+ НайденнаяСтрока.ПолноеИмя);
@ -2676,7 +2702,7 @@
// Все что не найдено - помечаем на удаление
Для Каждого СтрокаТЧ Из ТаблицаИндексовПредыдущейВерсии Цикл
ТекстКоманды = "git rm -f %Источник% >> %LOGFILE%";
ТекстКоманды = "git rm -f %Источник%" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Источник%", ПрефиксКаталогаИсходников
+ СтрокаТЧ.ПолноеИмя);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
@ -2684,7 +2710,7 @@
КонецЦикла;
Если ЕстьУдаления Тогда
ТекстКоманды = "git commit -F ""%ИмяФайлКомментария%"" --allow-empty-message --cleanup=verbatim >> %LOGFILE%";
ТекстКоманды = "git commit -F ""%ИмяФайлКомментария%"" --allow-empty-message --cleanup=verbatim" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%ИмяФайлКомментария%", ИмяФайлКомментария);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
КонецЕсли;
@ -2696,7 +2722,7 @@
КонецЦикла;
Если ЕстьПереименования Тогда
ТекстКоманды = "git commit -F ""%ИмяФайлКомментария%"" --allow-empty-message --cleanup=verbatim >> %LOGFILE%";
ТекстКоманды = "git commit -F ""%ИмяФайлКомментария%"" --allow-empty-message --cleanup=verbatim" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%ИмяФайлКомментария%", ИмяФайлКомментария);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
КонецЕсли;
@ -2714,12 +2740,12 @@
// Если выгрузка только изменений - тогда обновляем существующие файлы
Если НЕ РеквизитыВерсии.ВыгрузкаИзменений Тогда
ТекстКоманды = "rmdir /S /Q ""%Приемник%"" >> %LOGFILE%";
ТекстКоманды = "rmdir /S /Q ""%Приемник%""" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ПутьКИсходнымФайлам);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
КонецЕсли;
ТекстКоманды = "mkdir ""%Приемник%"" >> %LOGFILE%";
ТекстКоманды = "mkdir ""%Приемник%""" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ПутьКИсходнымФайлам);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
@ -2733,7 +2759,7 @@
Если Прав(Приемник, 1) = ПолучитьРазделительПути() Тогда
Приемник = Лев(Приемник, СтрДлина(Приемник) - 1);
КонецЕсли;
ТекстКоманды = "robocopy ""%Источник%"" ""%Приемник%"" /E /MOVE /NFL /NDL /NJH /NJS /NC /NS /NP >> %LOGFILE%";
ТекстКоманды = "robocopy ""%Источник%"" ""%Приемник%"" /E /MOVE /NFL /NDL /NJH /NJS /NC /NS /NP" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Источник%", Источник);
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", Приемник);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
@ -2750,12 +2776,12 @@
КонецЕсли;
Иначе
Если НЕ РеквизитыВерсии.ВыгрузкаИзменений Тогда
ТекстКоманды = "rm -rf ""%Приемник%"" >> %LOGFILE%";
ТекстКоманды = "rm -rf ""%Приемник%""" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ПутьКИсходнымФайлам);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
КонецЕсли;
ТекстКоманды = "mv -f ""%Источник%*"" ""%Приемник%"" >> %LOGFILE%";
ТекстКоманды = "mv -f ""%Источник%*"" ""%Приемник%""" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Источник%", КаталогФайловКонфигурации);
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ПутьКИсходнымФайлам);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
@ -2764,10 +2790,10 @@
КонецЕсли;
// Все файлы новой версии добавляем в индекс
ТекстКоманды = "git add --all ./ >> %LOGFILE%";
ТекстКоманды = "git add --all ./" + ВыводЛога;
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
ТекстКоманды = "git commit -F ""%ИмяФайлКомментария%"" --allow-empty-message --cleanup=verbatim >> %LOGFILE%";
ТекстКоманды = "git commit -F ""%ИмяФайлКомментария%"" --allow-empty-message --cleanup=verbatim" + ВыводЛога;
ДетализацияКомментария = " Версия хранилища №%НомерВерсии% от %Дата% %Автор%";
ДетализацияКомментария = СтрЗаменить(ДетализацияКомментария, "%НомерВерсии%", Формат(РеквизитыВерсии.Код, "ЧДЦ=; ЧГ=0"));
@ -2786,21 +2812,15 @@
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
// Выполнение регламентных действий с репозиторием, если необходимо
ТекстКоманды = "git gc --auto >> %LOGFILE%";
ТекстКоманды = "git gc --auto" + ВыводЛога;
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
Если ЗначениеЗаполнено(РеквизитыХранилища.АдресРепозиторияGit) Тогда
ТекстКоманды = "git push -u origin %ИмяВетки% >> %LOGFILE%";
ТекстКоманды = "git push --progress -u origin %ИмяВетки%" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%ИмяВетки%", РеквизитыХранилища.ИмяВетки);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
КонецЕсли;
Если НЕ ЭтоWindowsСервер Тогда
ТекстКоманды = ФайлКоманды.ПолучитьТекст();
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%LOGFILE%", "$LOGFILE");
ФайлКоманды.УстановитьТекст(ТекстКоманды);
КонецЕсли;
Если ЭтоWindowsСервер Тогда
ФайлКоманды.Записать(ИмяФайлаКомандыGit, КодировкаТекста.OEM);
Иначе
@ -2860,6 +2880,37 @@
КонецПроцедуры
// Зачитывает результат из файла результатов пакетной операции Конфигуратора
//
// Параметры:
// ИмяФайлаРезультатов - Строка - Имя файла результатов пакетной операции
// Возвращаемое значение:
// Число - Возвращается 0, если результат успешный (0 ошибок), 99999 если файл результата пустой,
// возвращается 100000 если ошибка чтения файла или в файле содержатся не числовые символы, N произвольное
// число, означающее наличие ошибок
Функция ПрочитатьФайлРезультата(ИмяФайлаРезультатов)
Результат = 1;
ФайлРезультата = Новый ТекстовыйДокумент();
Попытка
ФайлРезультата.Прочитать(ИмяФайлаРезультатов);
ТекстРезультата = ФайлРезультата.ПолучитьТекст();
Если ПустаяСтрока(ТекстРезультата) Тогда
Результат = 99999;
ИначеЕсли СокрЛП(ТекстРезультата) = "0" Тогда
Результат = 0;
Иначе
Результат = Число(ТекстРезультата);
КонецЕсли;
Исключение
Результат = 100000;
КонецПопытки;
Возврат Результат;
КонецФункции
// Копирует файлы рекурсивно
//
// Параметры:

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<cai:ClientApplicationInterface xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cai="http://g5.1c.ru/v8/dt/cai">
<top xsi:type="cai:CaiGroup" id="d896eafc-f07f-45df-a3c2-c715e81eedab">
<panels id="233d933c-98e2-4d28-be97-b45c38f4edf1" name="SectionPanel" displayType="PictureAndText"/>
</top>
<top xsi:type="cai:CaiGroup" id="efdd6f40-21a7-4f2f-aa45-74bfc6b64f0d">
<panels id="c86f71dc-2b2b-44aa-a1bf-795531d27187" name="FunctionsPanel"/>
<panels id="77734118-744f-45f8-8911-cd195ae0faea" name="OpenedPanel"/>
</top>
<left xsi:type="cai:CaiPanel" id="da04fef1-b3b8-4c7c-9407-97e5caedf7a6" name="ToolsPanel"/>
<unset id="15da5405-216d-40a1-a60c-c61d5a72155c" name="FavoritePanel"/>
<unset id="90c981eb-1453-4c1a-986b-26ff07237587" name="HistoryPanel"/>
</cai:ClientApplicationInterface>

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>

@ -0,0 +1,20 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если НЕ ПустаяСтрока(ЭтотОбъект.Значение) И СтрНайти(ЭтотОбъект.Значение, "%ВерсияПлатформы%") = 0 Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'В пути к версиям необходимо использовать <%ВерсияПлатформы%> для подстановки версии платформы.'"),
,
"ПутьКВерсиямПлатформыНаСервере",
"НаборКонстант",
Отказ);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли

@ -27,5 +27,6 @@
<mask></mask>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillChecking>ShowError</fillChecking>
<dataLockControlMode>Managed</dataLockControlMode>
</mdclass:Constant>

@ -11,7 +11,6 @@
<content>Catalog.ОчередиВыполнения</content>
<content>Enum.ОперацииОчереди</content>
<content>Catalog.ХранилищаКонфигураций.Attribute.ОбрабатыватьВсеОчереди</content>
<content>Catalog.ХранилищаКонфигураций.Attribute.ВыгружатьИзменения</content>
<content>Catalog.ВерсииХранилища.Attribute.ВыгрузкаИзменений</content>
<content>Catalog.ХранилищаКонфигураций.Attribute.ЗапретитьИспользованиеОбщихОчередей</content>
</mdclass:FunctionalOption>