Skip to content

Commit

Permalink
Merge branch 'release/24.11'
Browse files Browse the repository at this point in the history
  • Loading branch information
theshadowco committed Nov 27, 2024
2 parents 69050b9 + 1187e62 commit 2deb193
Show file tree
Hide file tree
Showing 198 changed files with 27,943 additions and 2,167 deletions.
4 changes: 2 additions & 2 deletions COPYRIGHT
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2014-2023 BIA-Technologies Limited Liability Company
// Copyright 2014-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand All @@ -14,4 +14,4 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//
//©///////////////////////////////////////////////////////////////////////////©//
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
- для выполнения установки в конкретный репозиторий необходимо выполнить команду `precommit4onec install repo_name`
- для выполнения установки во все репозитории каталога необходимо выполнить команду `precommit4onec install folder_reps -r`
- если каталог исходных файлов в репозитории отличается от стандартного "src" (например, когда исходные файлы в формате EDT), необходимо явно указать его с помощью дополнительного параметра `-source-dir "configuration"`

Для корректного отображения путей с кириллицей прекоммит установит настройку Git `core.quotePath` для локального репозитория.

После этого, при каждом коммите будет выполняться обработка файлов.

Expand All @@ -47,13 +49,16 @@
- `ПроверкаКорректностиОбластей` - проверяет корректность "скобок" областей в модулях (парность и последовательность).
- `ПроверкаНецензурныхСлов` - проверяет наличие нецензурных слов в модулях. [См. подробнее](/docs/ПроверкаНецензурныхСлов.md)
- `РазборОбычныхФормНаИсходники` - раскладывает файлы обычных форм (`Form.bin`) на исходные файлы с помощью инструмента `v8unpack`.
- `РазборОтчетОбработокРасширений` - раскладывает средствами платформы файлы внешних отчетов, обработок и расширений на исходные файлы. [См. подробнее](/docs/РазборОтчетОбработокРасширений.md)
- `РазборОтчетовОбработокРасширений` - раскладывает средствами платформы файлы внешних отчетов, обработок и расширений на исходные файлы. [См. подробнее](/docs/РазборОтчетОбработокРасширений.md)
- `СинхронизацияОбъектовМетаданныхИФайлов` - анализирует наличие файлов и объектов конфигурации. Поддерживается как файл в формате выгрузки конфигуратора (`Configuration.xml`), так и в формате EDT (`Configuration.mdo`).
- `СортировкаПравРолей` - упорядочивает по имени объекты в файле описания прав роли.
- `СортировкаСостава` - сортирует описания состава конфигурации и некоторых объектов метаданных. [См. подробнее](/docs/СортировкаСостава.md)
- `УдалениеДублейМетаданных` - удаляет дубли объектов метаданных в файле описания конфигурации (могут образоваться при объединениях). Поддерживается как файл в формате выгрузки конфигуратора (`Configuration.xml`), так и в формате EDT (`Configuration.mdo`)..
- `УдалениеЛишнихКонцевыхПробелов` - удаляет лишние пробелы и табы в конце не пустых строк в файлах модулей.
- `УдалениеЛишнихПустыхСтрок` - удаляет лишние пустые строки в модулях (лишними считаются 2 и более идущих подряд пустых строк).

При использовании таск-трекеров может возникнуть необходимость указывать номер задачи в каждом комментарии коммита. Специально для этой задачи реализована функциональность проверки комментария коммита на соответствие маске. [См. подробнее](/docs/ПроверкаСообщенияКоммита.md)

## Изменение настроек

precommit4onec может читать настройки своей работы из специального конфигурационного файла.
Expand Down Expand Up @@ -104,6 +109,10 @@ precommit4onec может читать настройки своей работ
}
```

## Принудительное выполнение для группы файлов

Команда `exec-rules` предназначена для запуска выбранных сценариев в указанном репозитории. [См. подробнее](/docs/КомандаВыполнитьСценарии.md)

## Расширение функциональности

Для создания нового сценария обработки файлов необходимо воспользоваться шаблоном, находящимся в каталоге `СценарииОбработки` скрипта.
Expand Down
Binary file added docs/img/GitExtensions_Interface.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/GitExtensions_Settings.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
48 changes: 48 additions & 0 deletions docs/КомандаВыполнитьСценарии.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Команда `exec-rules`

Команда предназначена для принудительного выполнения указанных сценариев в выбранном репозитории.

### Параметры команды

```
exec-rules -source-dir <Каталоги исходных файлов> -rules <Применяемые сценарии> -cfg-file <Файл настроек> <КаталогРепозитория> <Коммит1> <Коммит2>
```

Описание параметров:
- КаталогРепозитория - обязательный параметр, должен содержать абсолютный или относительный путь к каталогу репозитория, для файлов которого будут выполняться сценарии прекоммита;
- Коммит1, Коммит2 - необязательные параметры, если указаны, сценарии будут выполнены не для всех исходных файлов, а только для тех, которые были изменены между двумя коммитами. В качестве значения следует передавать хэш коммита. Если указано два хэша, будут составлен список измененных файлов между ними, если один, то он должен иметь двух родителей (как в случае коммита при merge-реквесте), иначе будет вызвано исключение;
- Каталоги исходных файлов - необязательный параметр, поддерживает перечисление через запятую относительных путей к каталогам внутри каталога репозитория, в которых расположены исходные файлы, для которых будут выполнять сценарии прекоммита. Значение по-умолчанию - "src";
- Применяемые сценарии - необязательный параметр, содержащий список сценариев, перечисленных через запятую, выполняемый для обрабатываемых файлов. Если не указан, выполняются все сценарии прекоммита;
- Файл настроек - необязательный параметр, путь к файлу настроек прекоммита. Если не указан, используется файл `v8config.json` репозитория или глобальные настройки, если файл в репозитории отсутствует.

### Примеры

1. Команда:

```shell
precommit4onec exec-rules "C:\МойРепозиторий" -source-dir "ПапкаИсходныхФайловSrc" -rules "ВставкаКопирайтов,ПроверкаНецензурныхСлов"
```

Для всех файлов в каталоге `C:ойРепозиторийапкаИсходныхФайловSrc` будут выполнены сценарии: `ВставкаКопирайтов`, `ПроверкаНецензурныхСлов`.

2. Команда:

```shell
precommit4onec exec-rules "C:\МойРепозиторий" 454474a414494f4b77c484939173e1d44678c96a 937f5cf1ebdda2eaadb1aa169cf066583f2763db
```

Для файлов в каталоге `C:ойРепозиторий\src`, измененных между указанными коммитами, будут выполнены все сценарии прекоммита. Если файлы находятся вне каталога `src`, они будут проигнорированы.

### Вызов команды в Git Extensions

Возможности [Git Extension](https://gitextensions.github.io/) позволяют подключать пользовательские скрипты для работы с данными. Например, следующая настройка в разделе `Git Extensions\Scripts`:

![Settings](img/GitExtensions_Settings.png)

позволяет добавить на командную панель кнопку запуска прекоммита для выбранных в дереве коммитов:

![Button](img/GitExtensions_Interface.png)

В настройках указывается:
- Command - путь к скрипту запуска прекоммита;
- Arguments - параметры запуска по шаблону, описанному выше. Вместо `{sHashes}` Git Extensions подставит разделенные пробелом хэши выделенных в дереве коммитов.
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ Cнимает флаг `РазрешеноИзменятьФорму` в опи
При выполнении команды `exec-rules` не выполняется по умолчанию. Для выполнения этого сценария необходимо явно указать его при запуске команды в параметре `rules`

```bash
precommit4onec exec-rules C:ойЛучшийРепозиторий -source-dir МойЛучшийИсходныйКод\НоваяПапка4 -rules ОтключениеРазрешенияИзменятьФорму
precommit4onec exec-rules C:ойЛучшийРепозиторий -source-dir МойЛучшийИсходныйКод\ПапкаИсходныхФайловSrc -rules ОтключениеРазрешенияИзменятьФорму
```

```bash
precommit4onec exec-rules C:ойЛучшийРепозиторий -source-dir МойЛучшийИсходныйКод\НоваяПапка4 -rules "ОтключениеРазрешенияИзменятьФорму,ПроверкаНецензурныхСлов"
precommit4onec exec-rules C:ойЛучшийРепозиторий -source-dir МойЛучшийИсходныйКод\ПапкаИсходныхФайловSrc -rules "ОтключениеРазрешенияИзменятьФорму,ПроверкаНецензурныхСлов"
```
31 changes: 31 additions & 0 deletions docs/ПроверкаСообщенияКоммита.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Функциональность проверки сообщения коммита

### Описание

Позволяет проверять сообщения коммита в репозиториях, где подключен прекоммит, на соответствие регулярному выражению.

### Настройка

Пример:
```JSON
{
"Precommt4onecСценарии": {
"ПроверкаСообщенияКоммита": {
"Использовать": true,
"Выражение": "Задача: \d+, Сообщение: \w+",
"СообщениеОбОшибке": "Сообщение коммита не содержит номера задачи"
}
}
}
```

Описание параметров:
- `Использовать` - Булево - флаг включения проверки соообщений коммита;
- `Выражение` - Строка - регулярное выражение, которому должно соответствовать сообщение коммита;
- `СообщениеОбОшибке` - Строка - текст сообщения, которое будет показано пользователю при несоответствии сообщения коммита выражению проверки.

Например, при указанной выше настройке, если пользователь введет сообщение "Задача: 1234, Соообщение: Рефакторинг", то проверка пройдет без ошибки. Если сообщение "Рефакторинг по задаче", то при коммите будет выдано сообщение об ошибке "Сообщение коммита не содержит номера задачи".

Настройка осуществляется в файле v8config.json репозитория. Если файл локальных настроек отсутствует, используются глобальные настройки прекоммита.

Проверка сообщения вызывается до проверки измененных файлов и останавливает выполнение прекоммита, если сообщение не соответствует маске.
6 changes: 6 additions & 0 deletions features/ИнтерактивнаяНастройка.feature
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@
Когда Я создаю файл "answers.txt" в кодировке "cp866" с текстом
"""
y
TASK-\d+
В сообщении коммита отсутствует номер задачи
y
y
y
y
y
Expand Down Expand Up @@ -76,11 +80,13 @@ n
n
n
n
n
y
tests
n
n
n
n
n
"""
И Я создаю каталог "tests" в рабочем каталоге
Expand Down
6 changes: 3 additions & 3 deletions features/Конфигурирование.feature
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global"
Тогда Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит "precommit4onec v24.05"
И Вывод команды "oscript" содержит "precommit4onec v24.11"
И Вывод команды "oscript" содержит "Установленные настройки:"
И Вывод команды "oscript" содержит "ИспользоватьСценарииРепозитория ="
И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев ="
Expand All @@ -33,10 +33,10 @@
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global"
И Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит "precommit4onec v24.05"
И Вывод команды "oscript" содержит "precommit4onec v24.11"
И Вывод команды "oscript" содержит "Установленные настройки: Базовые настройки"
И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев ="
И Вывод команды "oscript" содержит "ГлобальныеСценарии = ВставкаКопирайтов.os,ДобавлениеПробеловПередКлючевымиСловами.os,ЗапретИспользованияПерейти.os,ИсправлениеНеКаноническогоНаписания.os,КорректировкаXMLФорм.os,ОбработкаЮнитТестов.os,ОтключениеПолнотекстовогоПоиска.os,ОтключениеРазрешенияИзменятьФорму.os,ПроверкаДублейПроцедурИФункций.os,ПроверкаКорректностиИнструкцийПрепроцессора.os,ПроверкаКорректностиОбластей.os,ПроверкаНецензурныхСлов.os,РазборОбычныхФормНаИсходники.os,РазборОтчетовОбработокРасширений.os,СинхронизацияОбъектовМетаданныхИФайлов.os,СортировкаСостава.os,УдалениеДублейМетаданных.os,УдалениеЛишнихКонцевыхПробелов.os,УдалениеЛишнихПустыхСтрок.os"
И Вывод команды "oscript" содержит "ГлобальныеСценарии = ВставкаКопирайтов.os,ДобавлениеПробеловПередКлючевымиСловами.os,ЗапретИспользованияПерейти.os,ИсправлениеНеКаноническогоНаписания.os,КорректировкаXMLФорм.os,ОбработкаЮнитТестов.os,ОтключениеПолнотекстовогоПоиска.os,ОтключениеРазрешенияИзменятьФорму.os,ПроверкаДублейПроцедурИФункций.os,ПроверкаКорректностиИнструкцийПрепроцессора.os,ПроверкаКорректностиОбластей.os,ПроверкаНецензурныхСлов.os,РазборОбычныхФормНаИсходники.os,РазборОтчетовОбработокРасширений.os,СинхронизацияОбъектовМетаданныхИФайлов.os,СортировкаПравРолей.os,СортировкаСостава.os,УдалениеДублейМетаданных.os,УдалениеЛишнихКонцевыхПробелов.os,УдалениеЛишнихПустыхСтрок.os"
И Вывод команды "oscript" содержит "ОтключенныеСценарии ="
И Вывод команды "oscript" содержит "НастройкиСценариев = Соответствие"
И Вывод команды "oscript" содержит "ОтключениеПолнотекстовогоПоиска = Соответствие"
Expand Down
Loading

0 comments on commit 2deb193

Please sign in to comment.