diff --git "a/features/\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271Git.feature" "b/features/\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271Git.feature" index ca059ae..e6faa96 100644 --- "a/features/\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271Git.feature" +++ "b/features/\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271Git.feature" @@ -33,3 +33,27 @@ И В рабочем каталоге существует файл ".git/hooks/pre-commit" И В рабочем каталоге существует файл ".git/hooks/v8files-extractor.os" И В рабочем каталоге существует файл ".git/hooks/tools/v8unpack.exe" + +Сценарий: Установка precommit1c в репозиторий с указанием сервисной базы + Когда Я выполняю команду "git" с параметрами "config --local core.quotepath false" + И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/v8files-extractor.os --install --ib-connection-string /Fc:\test\ib --ib-user UserTest --ib-pwd ********" + Тогда В рабочем каталоге существует каталог ".git/hooks" + И В рабочем каталоге существует каталог ".git/hooks/v8Reader" + И В рабочем каталоге существует каталог ".git/hooks/tools" + И В рабочем каталоге существует файл ".git/hooks/v8Reader/V8Reader.epf" + И В рабочем каталоге существует файл ".git/hooks/pre-commit" + И В рабочем каталоге существует файл ".git/hooks/v8files-extractor.os" + И В рабочем каталоге существует файл ".git/hooks/tools/v8unpack.exe" + И файл ".git/hooks/pre-commit" в рабочем каталоге содержит "oscript -encoding=utf-8 .git/hooks/v8files-extractor.os --git-precommit src --ib-connection-string /Fc:\test\ib --ib-user UserTest --ib-pwd ********" + +Сценарий: Установка precommit1c в репозиторий с указанием сервисной базы и использованием конфигуратора + Когда Я выполняю команду "git" с параметрами "config --local core.quotepath false" + И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/v8files-extractor.os --install --use-designer --ib-connection-string /Fc:\test\ib --ib-user UserTest --ib-pwd ********" + Тогда В рабочем каталоге существует каталог ".git/hooks" + И В рабочем каталоге существует каталог ".git/hooks/v8Reader" + И В рабочем каталоге существует каталог ".git/hooks/tools" + И В рабочем каталоге существует файл ".git/hooks/v8Reader/V8Reader.epf" + И В рабочем каталоге существует файл ".git/hooks/pre-commit" + И В рабочем каталоге существует файл ".git/hooks/v8files-extractor.os" + И В рабочем каталоге существует файл ".git/hooks/tools/v8unpack.exe" + И файл ".git/hooks/pre-commit" в рабочем каталоге содержит "oscript -encoding=utf-8 .git/hooks/v8files-extractor.os --git-precommit src --use-designer --ib-connection-string /Fc:\test\ib --ib-user UserTest --ib-pwd ********" diff --git a/pre-commit b/pre-commit index 8bb2bd3..3bd0f7f 100644 --- a/pre-commit +++ b/pre-commit @@ -1,4 +1,3 @@ #!/bin/sh -echo "Start hooks before commit for v8unpack erf and epf" -#python.exe .git/hooks/pyv8unpack.py --g --index +echo "Start hooks before commit to unpack erf, epf and cfe" oscript -encoding=utf-8 .git/hooks/v8files-extractor.os --git-precommit src diff --git a/v8files-extractor.os b/v8files-extractor.os index 9907fff..679b108 100644 --- a/v8files-extractor.os +++ b/v8files-extractor.os @@ -329,8 +329,12 @@ Лог.Отладка("Запускаем распаковку файла расширения"); Конфигуратор = Новый УправлениеКонфигуратором(); - КаталогВременнойИБ = ВременныеФайлы.СоздатьКаталог(); - Конфигуратор.КаталогСборки(КаталогВременнойИБ); + Если КонтекстКонфигуратора = Неопределено Тогда + КаталогВременнойИБ = ВременныеФайлы.СоздатьКаталог(); + Конфигуратор.КаталогСборки(КаталогВременнойИБ); + Иначе + Конфигуратор.ИспользоватьКонтекст(КонтекстКонфигуратора); + КонецЕсли; УстановитьУровеньЛогаКонфигуратораРавнымУровнюПродукта(); @@ -422,6 +426,10 @@ КопироватьВКаталог(КаталогПрекоммита, КаталогХуков, "v8Reader"); КопироватьВКаталог(КаталогПрекоммита, КаталогХуков, "v8files-extractor.os"); КопироватьВКаталог(КаталогПрекоммита, КаталогХуков, "tools"); + + Если ИспользоватьКонфигуратор Или НЕ КонтекстКонфигуратора = Неопределено Тогда + ДополнитьФайлХукаДаннымиПодключения(КаталогХуков); + КонецЕсли; ЗапуститьПриложение("git config --local core.quotepath false", Каталог, Истина); ЗапуститьПриложение("git config --local core.longpaths true", Каталог, Истина); @@ -430,6 +438,36 @@ КонецПроцедуры +Процедура ДополнитьФайлХукаДаннымиПодключения(КаталогХуков) + СтрокаПараметровПодключения = ?(ИспользоватьКонфигуратор, " --use-designer", ""); + ДополнитьСтрокуПараметровПодключения(СтрокаПараметровПодключения, КонтекстКонфигуратора.КлючСоединенияСБазой, "--ib-connection-string"); + ДополнитьСтрокуПараметровПодключения(СтрокаПараметровПодключения, КонтекстКонфигуратора.ИмяПользователя, "--ib-user"); + ДополнитьСтрокуПараметровПодключения(СтрокаПараметровПодключения, КонтекстКонфигуратора.Пароль, "--ib-pwd"); + СтрокаПоиска = "oscript -encoding=utf-8 .git/hooks/v8files-extractor.os --git-precommit src"; + СтрокаЗамены = СтрШаблон("%1%2", СтрокаПоиска, СтрокаПараметровПодключения); + ЗаменитьСтрокуВФайле(ОбъединитьПути(КаталогХуков, "pre-commit"), СтрокаПоиска, СтрокаЗамены) +КонецПроцедуры + +Процедура ДополнитьСтрокуПараметровПодключения(СтрокаПараметровПодключения, Знач ЗначениеПараметра, Знач ИмяПараметра) + Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда + СтрокаПараметровПодключения = СтрШаблон("%1 %2 %3", СтрокаПараметровПодключения, ИмяПараметра, ЗначениеПараметра); + КонецЕсли; +КонецПроцедуры + +Процедура ЗаменитьСтрокуВФайле(Знач ПутьФайла, Знач СтрокаПоиска, Знач СтрокаЗамены) Экспорт + Чтение = Новый ЧтениеТекста(ПутьФайла, КодировкаТекста.UTF8NoBOM); + Текст = Чтение.Прочитать(); + Чтение.Закрыть(); + Если СтрНайти(Текст, "--ib-connection-string") = 0 Тогда + Текст = СтрЗаменить(Текст, СтрокаПоиска, СтрокаЗамены); + Запись = Новый ЗаписьТекста(ПутьФайла, КодировкаТекста.UTF8NoBOM); + Запись.Записать(Текст); + Запись.Закрыть(); + Иначе + Лог.Предупреждение("В хуке уже прописана сервисная база!"); + КонецЕсли; +КонецПроцедуры + Процедура КопироватьВКаталог(Знач КаталогИсточник, Знач КаталогПриемник, Знач ОбъектКопирования) Лог.Информация("Копирую: " + ОбъектКопирования);