mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2025-02-07 13:31:49 +02:00
Merge branch 'release/1.11'
This commit is contained in:
commit
e0efd08e88
@ -21,6 +21,7 @@
|
||||
ВсеШаги.Добавить("ЯУстанавливаюКодировкуВыводаКоманды");
|
||||
ВсеШаги.Добавить("УФайлаЕстьМетка");
|
||||
ВсеШаги.Добавить("СодержимоеФайлаИФайлаРазное");
|
||||
ВсеШаги.Добавить("ЯСоздаюНовыйРепозиторийБезИнициализацииВКаталогеИЗапоминаюЕгоКак");
|
||||
|
||||
Возврат ВсеШаги;
|
||||
КонецФункции
|
||||
@ -53,18 +54,15 @@
|
||||
// я создаю новый репозиторий "ИмяРепозитория" в каталоге "АлиасКаталога" и запоминаю его как "Алиас"
|
||||
Процедура ЯСоздаюНовыйРепозиторийВКаталогеИЗапоминаюЕгоКак(ИмяРепозитория, АлиасКаталога, Алиас) Экспорт
|
||||
|
||||
КаталогРепозиториев = БДД.ПолучитьИзКонтекста(АлиасКаталога);
|
||||
|
||||
КаталогРепозитория = ОбъединитьПути(КаталогРепозиториев, ИмяРепозитория);
|
||||
СоздатьКаталог(КаталогРепозитория);
|
||||
|
||||
РепозиторийGit = Новый ГитРепозиторий();
|
||||
РепозиторийGit.УстановитьРабочийКаталог(КаталогРепозитория);
|
||||
РепозиторийGit.Инициализировать();
|
||||
КаталогРепозитория = ИнициализироватьРепозиторий(РепозиторийGit, ИмяРепозитория, АлиасКаталога);
|
||||
|
||||
ТекстовыйДокумент = Новый ТекстовыйДокумент;
|
||||
ТекстовыйДокумент.УстановитьТекст("# Репозиторий " + Алиас);
|
||||
|
||||
ИмяФайлаreadme = ОбъединитьПути(КаталогРепозитория, "readme.md");
|
||||
ТекстовыйДокумент.Записать(ИмяФайлаreadme);
|
||||
|
||||
РепозиторийGit.ДобавитьФайлВИндекс(ИмяФайлаreadme);
|
||||
РепозиторийGit.Закоммитить("init", ИСТИНА);
|
||||
|
||||
@ -72,6 +70,17 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// я создаю новый репозиторий без инициализации "ИмяРепозитория" в каталоге "АлиасКаталога" и запоминаю его как "Алиас"
|
||||
Процедура ЯСоздаюНовыйРепозиторийБезИнициализацииВКаталогеИЗапоминаюЕгоКак(ИмяРепозитория, АлиасКаталога, Алиас) Экспорт
|
||||
|
||||
РепозиторийGit = Новый ГитРепозиторий();
|
||||
|
||||
КаталогРепозитория = ИнициализироватьРепозиторий(РепозиторийGit, ИмяРепозитория, АлиасКаталога);
|
||||
|
||||
БДД.СохранитьВКонтекст(Алиас, КаталогРепозитория);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// В каталоге "ИмяКаталога" репозитория "ИмяРепозитория" есть файл "ИмяФайла"
|
||||
Процедура ВКаталогеРепозиторияЕстьФайл(ИмяКаталога, ИмяРепозитория, ИмяФайла)Экспорт
|
||||
|
||||
@ -143,4 +152,18 @@
|
||||
|
||||
Ожидаем.Что(СодержимоеИсходногоФайла).Не_().Равно(СодержимоеКонечногоФайла);
|
||||
|
||||
КонецПроцедуры
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ИнициализироватьРепозиторий(РепозиторийGit, ИмяРепозитория, АлиасКаталога)
|
||||
|
||||
КаталогРепозиториев = БДД.ПолучитьИзКонтекста(АлиасКаталога);
|
||||
|
||||
КаталогРепозитория = ОбъединитьПути(КаталогРепозиториев, ИмяРепозитория);
|
||||
СоздатьКаталог(КаталогРепозитория);
|
||||
|
||||
РепозиторийGit.УстановитьРабочийКаталог(КаталогРепозитория);
|
||||
РепозиторийGit.Инициализировать();
|
||||
|
||||
Возврат КаталогРепозитория;
|
||||
|
||||
КонецФункции
|
@ -5,6 +5,24 @@
|
||||
Как разработчик
|
||||
Я хочу быть уверенным, что precommit4onec корректно обрабатывает изменения в репозитории
|
||||
|
||||
Контекст:
|
||||
Допустим Я очищаю параметры команды "oscript" в контексте
|
||||
И я очищаю параметры команды "git" в контексте
|
||||
И Я устанавливаю кодировку вывода "utf-8" команды "git"
|
||||
И я включаю отладку лога с именем "oscript.app.precommit4onec"
|
||||
И я создаю временный каталог и запоминаю его как "КаталогРепозиториев"
|
||||
И я переключаюсь во временный каталог "КаталогРепозиториев"
|
||||
И я создаю новый репозиторий без инициализации "rep1" в каталоге "КаталогРепозиториев" и запоминаю его как "РабочийКаталог"
|
||||
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install rep1"
|
||||
И я установил рабочий каталог как текущий каталог
|
||||
|
||||
Сценарий: Успешный инициализирующий коммит в репозиторий после установки прекоммита
|
||||
Когда Я создаю файл "РабочийКаталог/readme.md" с текстом "Инициализация"
|
||||
И я выполняю команду "git" с параметрами "add ."
|
||||
И я выполняю команду "git" с параметрами "commit -m init"
|
||||
Тогда я не вижу в консоли вывод "ВызватьИсключение"
|
||||
И я не вижу в консоли вывод "fatal:"
|
||||
|
||||
Контекст:
|
||||
Допустим Я очищаю параметры команды "oscript" в контексте
|
||||
И я очищаю параметры команды "git" в контексте
|
||||
|
@ -10,7 +10,7 @@
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.10.0"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.11.1"
|
||||
И Вывод команды "oscript" содержит "Установленные настройки:"
|
||||
И Вывод команды "oscript" содержит "ИспользоватьСценарииРепозитория ="
|
||||
И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев ="
|
||||
@ -24,7 +24,7 @@
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит
|
||||
"""
|
||||
precommit4onec v1.10.0
|
||||
precommit4onec v1.11.1
|
||||
Установленные настройки:
|
||||
ИспользоватьСценарииРепозитория = Нет
|
||||
КаталогЛокальныхСценариев =
|
||||
|
@ -14,7 +14,7 @@
|
||||
Сценарий: Получение версии продукта
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os version"
|
||||
Тогда Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "1.10.0"
|
||||
И Вывод команды "oscript" содержит "1.11.1"
|
||||
И Вывод команды "oscript" не содержит "precommit4onec v"
|
||||
И Код возврата команды "oscript" равен 0
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os help"
|
||||
Тогда Вывод команды "oscript" содержит
|
||||
"""
|
||||
precommit4onec v1.10.0
|
||||
precommit4onec v1.11.1
|
||||
Возможные команды:
|
||||
help - Выводит справку по командам
|
||||
version - Выводит версию приложения
|
||||
@ -36,7 +36,7 @@
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os"
|
||||
Тогда Вывод команды "oscript" содержит
|
||||
"""
|
||||
precommit4onec v1.10.0
|
||||
precommit4onec v1.11.1
|
||||
Возможные команды:
|
||||
help - Выводит справку по командам
|
||||
version - Выводит версию приложения
|
||||
|
@ -18,7 +18,7 @@
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install rep1"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.10.0"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.11.1"
|
||||
И Вывод команды "oscript" содержит "Pre-commit hook для rep1 создан"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
||||
|
||||
@ -26,15 +26,31 @@
|
||||
Когда я создаю временный каталог и запоминаю его как "ПустойКаталог"
|
||||
И я переключаюсь во временный каталог "ПустойКаталог"
|
||||
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./"
|
||||
Тогда Код возврата команды "oscript" равен 1
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.10.0"
|
||||
И Вывод команды "oscript" содержит "can only be used inside a git repository"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.11.1"
|
||||
И Вывод команды "oscript" содержит "не является репозиторием git"
|
||||
|
||||
Сценарий: Установка precommit4onec во вложенные каталоги
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./ -r"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.10.0"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.11.1"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий2" есть файл "pre-commit"
|
||||
|
||||
Сценарий: Рекурсивная установка precommit4oneсне корректно обрабатывает папки не репо
|
||||
Когда Я создаю каталог "!_test1" внутри каталога "КаталогРепозиториев"
|
||||
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./ -r"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "не является репозиторием git"
|
||||
|
||||
Сценарий: Рекурсивная установка precommit4oneс выполняется, когда папке с репозиториями есть папки не репо
|
||||
Когда Я создаю каталог "!_test1" внутри каталога "КаталогРепозиториев"
|
||||
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./ -r"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.11.1"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий2" есть файл "pre-commit"
|
||||
|
@ -14,7 +14,7 @@
|
||||
Процедура НастроитьКоманду(Знач Команда, Знач Парсер) Экспорт
|
||||
|
||||
// Добавление параметров команды
|
||||
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "КаталогРепозитория", "Каталог репозитория, которому необходимо подключить precommit. При наличии флага -r устанавливает во вложенные в указанных каталог репозитории.");
|
||||
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "КаталогРепозитория", "Каталог репозитория, к которому необходимо подключить precommit. Флаг -r, указанный после каталога репозитория, устанавливает во вложенные в указанный каталог репозитории.");
|
||||
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-source-dir", "Каталог расположения исходных файлов относительно корня репозитория. По умолчанию <src>");
|
||||
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-from-path", "Установить с учетом того, что скрипт прописан в path");
|
||||
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-r", "Устанавливает во вложенные каталоги. Если вложенный каталог не является репозиторием, то он пропускается.");
|
||||
@ -31,7 +31,17 @@
|
||||
|
||||
Лог = Приложение.ПолучитьЛог();
|
||||
КаталогРепозитория = ПараметрыКоманды["КаталогРепозитория"];
|
||||
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(КаталогРепозитория) Тогда
|
||||
|
||||
Лог.Ошибка("Для установки прекоммита надо указать каталог");
|
||||
Возврат Приложение.РезультатыКоманд().НеверныеПараметры;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ФайлКаталогРепозитория = Новый Файл(КаталогРепозитория);
|
||||
|
||||
Если НЕ ФайлКаталогРепозитория.Существует() ИЛИ ФайлКаталогРепозитория.ЭтоФайл() Тогда
|
||||
|
||||
Лог.Ошибка("Каталог репозитория '%1' не существует или это файл", КаталогРепозитория);
|
||||
@ -86,7 +96,6 @@
|
||||
|
||||
РепозиторийGit = Новый ГитРепозиторий();
|
||||
РепозиторийGit.УстановитьРабочийКаталог(КаталогРепозитория);
|
||||
РепозиторийGit.УстановитьНастройку("core.quotePath", "false", РежимУстановкиНастроекGit.Локально);
|
||||
|
||||
// проверка каталога
|
||||
Если НЕ РепозиторийGit.ЭтоРепозиторий() Тогда
|
||||
@ -95,7 +104,7 @@
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
РепозиторийGit.УстановитьНастройку("core.quotePath", "false", РежимУстановкиНастроекGit.Локально); // решение проблемы с кириллическими путями
|
||||
// установка
|
||||
КаталогGitHook = ОбъединитьПути(КаталогРепозитория, ".git", "hooks");
|
||||
ФайлКаталогGitHook = Новый Файл(КаталогGitHook);
|
||||
@ -109,6 +118,15 @@
|
||||
ТекстPrecommtHook = Новый ТекстовыйДокумент;
|
||||
ТекстPrecommtHook.УстановитьТекст(КомандаPrecommtHook);
|
||||
ТекстPrecommtHook.Записать(ФайлPrecommtHook, КодировкаТекста.UTF8NoBOM, Символы.ПС);
|
||||
|
||||
СисИнфо = Новый СистемнаяИнформация;
|
||||
ЭтоWindows = Найти(НРег(СисИнфо.ВерсияОС), "windows") > 0;
|
||||
|
||||
Если НЕ ЭтоWindows Тогда
|
||||
|
||||
ЗапуститьПриложение("chmod +x " + ФайлPrecommtHook);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Лог.Информация("Pre-commit hook для %1 создан", КаталогРепозитория);
|
||||
|
||||
|
@ -133,7 +133,7 @@
|
||||
Функция ПолучитьЖурналИзменений()
|
||||
|
||||
ПараметрыКомандыGit = Новый Массив;
|
||||
ПараметрыКомандыGit.Добавить("diff-index --name-status --cached HEAD");
|
||||
ПараметрыКомандыGit.Добавить("diff --name-status --staged --no-renames");
|
||||
РепозиторийGit.ВыполнитьКоманду(ПараметрыКомандыGit);
|
||||
РезультатВывода = РепозиторийGit.ПолучитьВыводКоманды();
|
||||
СтрокиВывода = СтрРазделить(РезультатВывода, Символы.ПС);
|
||||
|
@ -22,7 +22,7 @@
|
||||
//
|
||||
Функция ВерсияПродукта() Экспорт
|
||||
|
||||
Возврат "1.10.0";
|
||||
Возврат "1.11.1";
|
||||
|
||||
КонецФункции // ВерсияПродукта
|
||||
|
||||
|
@ -175,7 +175,7 @@
|
||||
|
||||
Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл
|
||||
|
||||
Если МассивИсключенийМетаданных.Найти(ОбъектМетаданных.Тип) <> Неопределено Тогда
|
||||
Если МассивИсключенийМетаданных.Найти(ОбъектМетаданных.ТипМетаданных) <> Неопределено Тогда
|
||||
|
||||
Продолжить;
|
||||
|
||||
|
@ -159,7 +159,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
ИсходнаяСтрока = ПодчиненныеМетаданные[0].Группы[2].Значение;
|
||||
РегекспМетаданные = Новый РегулярноеВыражение("^\s+<([\w]+)>([a-zA-Z]+\.[а-яa-zA-ZА-Я0-9_]+)<\/[\w]+>");
|
||||
РегекспМетаданные = Новый РегулярноеВыражение("^\s*<([\w]+)>([a-zA-Z]+\.[а-яa-zA-ZА-Я0-9_]+)<\/[\w]+>");
|
||||
РегекспМетаданные.ИгнорироватьРегистр = ИСТИНА;
|
||||
РегекспМетаданные.Многострочный = Истина;
|
||||
ОбъектыМетаданныхСтроки = РегекспМетаданные.НайтиСовпадения(ИсходнаяСтрока);
|
||||
|
@ -1,35 +1,36 @@
|
||||
{
|
||||
"Precommt4onecСценарии": {
|
||||
"ИспользоватьСценарииРепозитория": false,
|
||||
"КаталогЛокальныхСценариев": "",
|
||||
"ГлобальныеСценарии": [
|
||||
"ДобавлениеПробеловПередКлючевымиСловами.os",
|
||||
"ЗапретИспользованияПерейти.os",
|
||||
"КорректировкаXMLФорм.os",
|
||||
"ОтключениеПолнотекстовогоПоиска.os",
|
||||
"ПроверкаДублейПроцедурИФункций.os",
|
||||
"ПроверкаКорректностиОбластей.os",
|
||||
"РазборОбычныхФормНаИсходники.os",
|
||||
"РазборОтчетовОбработокРасширений.os",
|
||||
"СинхронизацияОбъектовМетаданныхИФайлов.os",
|
||||
"СортировкаДереваМетаданных.os",
|
||||
"УдалениеДублейМетаданных.os",
|
||||
"УдалениеЛишнихКонцевыхПробелов.os",
|
||||
"УдалениеЛишнихПустыхСтрок.os"
|
||||
],
|
||||
"НастройкиСценариев": {
|
||||
"ОтключениеПолнотекстовогоПоиска": {
|
||||
"МетаданныеДляИсключения": {
|
||||
"src\\_example.xml": [
|
||||
"Номер"
|
||||
],
|
||||
"src\\_example2.xml": []
|
||||
}
|
||||
},
|
||||
"РазборОтчетовОбработокРасширений": {
|
||||
"ИспользоватьНастройкиПоУмолчанию": true,
|
||||
"ВерсияПлатформы": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
"Precommt4onecСценарии": {
|
||||
"ИспользоватьСценарииРепозитория": false,
|
||||
"КаталогЛокальныхСценариев": "",
|
||||
"ГлобальныеСценарии": [
|
||||
"ДобавлениеПробеловПередКлючевымиСловами.os",
|
||||
"ЗапретИспользованияПерейти.os",
|
||||
"КорректировкаXMLФорм.os",
|
||||
"ОтключениеПолнотекстовогоПоиска.os",
|
||||
"ПроверкаДублейПроцедурИФункций.os",
|
||||
"ПроверкаКорректностиОбластей.os",
|
||||
"РазборОбычныхФормНаИсходники.os",
|
||||
"РазборОтчетовОбработокРасширений.os",
|
||||
"СинхронизацияОбъектовМетаданныхИФайлов.os",
|
||||
"СортировкаДереваМетаданных.os",
|
||||
"УдалениеДублейМетаданных.os",
|
||||
"УдалениеЛишнихКонцевыхПробелов.os",
|
||||
"УдалениеЛишнихПустыхСтрок.os"
|
||||
],
|
||||
"НастройкиСценариев": {
|
||||
"ОтключениеПолнотекстовогоПоиска": {
|
||||
"МетаданныеДляИсключения": {
|
||||
"src\\_example.xml": [
|
||||
"Номер",
|
||||
"ТабличнаяЧасть1.Реквизит"
|
||||
],
|
||||
"src\\_example2.xml": []
|
||||
}
|
||||
},
|
||||
"РазборОтчетовОбработокРасширений": {
|
||||
"ИспользоватьНастройкиПоУмолчанию": true,
|
||||
"ВерсияПлатформы": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user