1
0
mirror of https://github.com/bia-technologies/precommit4onec.git synced 2025-06-15 00:04:58 +02:00

Merge branch 'feature/ONECICD-9' into develop

# Conflicts:
#	features/ВыполнениеПрекоммита.feature
#	src/Классы/КомандаПрекоммит.os
This commit is contained in:
Maxmov Valery
2019-03-25 10:40:35 +03:00
2 changed files with 36 additions and 47 deletions

View File

@ -78,3 +78,13 @@
И я выполняю команду "git" с параметрами "add --all" И я выполняю команду "git" с параметрами "add --all"
И я выполняю команду "git" с параметрами "commit -m addFile" И я выполняю команду "git" с параметрами "commit -m addFile"
Тогда я вижу в консоли вывод "Нет доступных сценариев обработки файлов" Тогда я вижу в консоли вывод "Нет доступных сценариев обработки файлов"
Сценарий: В коммит попадают только проиндексированные файлы
Когда Я копирую файл "tests\fixtures\demo\DemoОбработка.epf" в каталог репозитория "РабочийКаталог"
И я фиксирую изменения в репозитории "РабочийКаталог" с комментарием "demo коммит"
И в каталоге "src" репозитория "РабочийКаталог" есть файл "epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяОФ\Ext\Form\Module.bsl"
И я создаю файл "РабочийКаталог/src/ФайлСТекстом.bsl" с текстом "текст178"
И я выполняю команду "git" с параметрами "add --all"
И я создаю файл "РабочийКаталог\src\epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяОФ\Ext\Form\Module.bsl" с текстом "текст178"
И я выполняю команду "git" с параметрами "commit -m addFile"
Тогда Вывод команды "git" не содержит "Module.bsl"

View File

@ -135,44 +135,22 @@
ПараметрыКомандыGit = Новый Массив; ПараметрыКомандыGit = Новый Массив;
ПараметрыКомандыGit.Добавить("diff-index --name-status --cached HEAD"); ПараметрыКомандыGit.Добавить("diff-index --name-status --cached HEAD");
РепозиторийGit.ВыполнитьКоманду(ПараметрыКомандыGit); РепозиторийGit.ВыполнитьКоманду(ПараметрыКомандыGit);
ПараметрыКомандыGit = Новый Массив;
ПараметрыКомандыGit.Добавить("status --porcelain");
РепозиторийGit.ВыполнитьКоманду(ПараметрыКомандыGit);
РезультатВывода = РепозиторийGit.ПолучитьВыводКоманды(); РезультатВывода = РепозиторийGit.ПолучитьВыводКоманды();
СтрокиВывода = СтрРазделить(РезультатВывода, Символы.ПС); СтрокиВывода = СтрРазделить(РезультатВывода, Символы.ПС);
ЖурналИзменений = Новый Массив; ЖурналИзменений = Новый Массив;
Для Каждого СтрокаВывода Из СтрокиВывода Цикл Для Каждого СтрокаВывода Из СтрокиВывода Цикл
Лог.Отладка(" <%1>", СтрокаВывода); Лог.Отладка(" <%1>", СтрокаВывода);
СтрокаВывода = СокрЛП(СтрокаВывода); СтрокаВывода = СокрЛП(СтрокаВывода);
ПозицияПробела = СтрНайти(СтрокаВывода, " "); ПозицияПробела = СтрНайти(СтрокаВывода, Символы.Таб);
СимволИзменения = Лев(СтрокаВывода, 1); СимволИзменения = Лев(СтрокаВывода, 1);
Если СимволИзменения = "?" Тогда
Продолжить;
КонецЕсли;
ТипИзменения = ВариантИзмененийФайловGit.ОпределитьВариантИзменения(СимволИзменения); ТипИзменения = ВариантИзмененийФайловGit.ОпределитьВариантИзменения(СимволИзменения);
ИмяФайла = СокрЛП(СтрЗаменить(Сред(СтрокаВывода, ПозицияПробела + 1), """", "")); ИмяФайла = СокрЛП(СтрЗаменить(Сред(СтрокаВывода, ПозицияПробела + 1), """", ""));
Если ТипИзменения = ВариантИзмененийФайловGit.Переименован
ИЛИ ТипИзменения = ВариантИзмененийФайловGit.Скопирован Тогда
// это два события - удален и добавлен
ПозицияСтрелки = СтрНайти(ИмяФайла, "->");
ИмяФайлаУдален = СокрЛП(Лев(ИмяФайла, ПозицияСтрелки - 1));
ЖурналИзменений.Добавить(Новый Структура("ИмяФайла, ТипИзменения", ИмяФайлаУдален, ВариантИзмененийФайловGit.Удален));
Лог.Отладка(" В журнале git %2 файл <%1>", ИмяФайлаУдален, ВариантИзмененийФайловGit.Удален);
ИмяФайла = СокрЛП(Сред(ИмяФайла, ПозицияСтрелки + 2));
ТипИзменения = ВариантИзмененийФайловGit.Добавлен;
КонецЕсли;
ЖурналИзменений.Добавить(Новый Структура("ИмяФайла, ТипИзменения", ИмяФайла, ТипИзменения)); ЖурналИзменений.Добавить(Новый Структура("ИмяФайла, ТипИзменения", ИмяФайла, ТипИзменения));
Лог.Отладка(" В журнале git %2 файл <%1>", ИмяФайла, ТипИзменения); Лог.Отладка(" В журнале git %2 файл <%1>", ИмяФайла, ТипИзменения);
КонецЦикла; КонецЦикла;
@ -197,6 +175,7 @@
ЛокальныйКаталог = УправлениеНастройками.Настройка("Precommt4onecСценарии\КаталогЛокальныхСценариев"); ЛокальныйКаталог = УправлениеНастройками.Настройка("Precommt4onecСценарии\КаталогЛокальныхСценариев");
ПутьКЛокальнымСценариям = ОбъединитьПути(КаталогРепозитория, ЛокальныйКаталог); ПутьКЛокальнымСценариям = ОбъединитьПути(КаталогРепозитория, ЛокальныйКаталог);
ФайлПутьКЛокальнымСценариям = Новый Файл(ПутьКЛокальнымСценариям); ФайлПутьКЛокальнымСценариям = Новый Файл(ПутьКЛокальнымСценариям);
Если Не ФайлПутьКЛокальнымСценариям.Существует() ИЛИ ФайлПутьКЛокальнымСценариям.ЭтоФайл() Тогда Если Не ФайлПутьКЛокальнымСценариям.Существует() ИЛИ ФайлПутьКЛокальнымСценариям.ЭтоФайл() Тогда
Лог.Ошибка("Сценарии из репозитория не загружены т.к. отсутствует каталог %1", ЛокальныйКаталог); Лог.Ошибка("Сценарии из репозитория не загружены т.к. отсутствует каталог %1", ЛокальныйКаталог);