Skip to content

oscript-library/precommit1c

This branch is 28 commits behind xDrivenDevelopment/precommit1c:develop.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

bdd2930 · Oct 23, 2019
Oct 23, 2019
Apr 26, 2016
Nov 7, 2018
Jan 24, 2019
Jan 26, 2019
Nov 16, 2015
Dec 13, 2018
Jun 3, 2016
Jan 24, 2019
Nov 22, 2014
Apr 22, 2016
Apr 22, 2016
Apr 15, 2019
Sep 28, 2016
Sep 28, 2016
Jun 27, 2017
Oct 23, 2019
Nov 18, 2018
Oct 23, 2019

Repository files navigation

Набор утилит для автоматической разборки/сборки внешних обработок и отчетов, при помещении (commit) в git

Join the chat at https://gitter.im/xDrivenDevelopment/precommit1c Здесь вы можете задавать любые вопросы разработчикам и активным участникам

GitHub release

Что к чему


  • v8files-extractor.os - скрипт для OneScript, получающий список помещаемых файлов при коммите, фильтрующий по расширению только внешние отчёты/обработки, расширения и запускающий команды для распаковки этих файлов. Так же позволяет собирать обработки из полученных исходников.
  • V8Reader.epf - внешняя обработка 1С, которая с помощью v8unpack разбирает внешние обработки, определяет нормальные наименования для каталогов форм, файлов модулей объектов и т. д. и раскладывает их в нормальную структуру папок.
  • pre-commit - собственно командный файл, вызываемый git перед каждым помещением. Выполняет роль простой запускалки скрипта v8files-extractor.os

Установка

  1. Зависимости:

    • OneScript http://oscript.io/
    • установленная платформа 1С:Предприятие 8
    • git
    • в случае запуска из под wine необходим msscriptcontrol
    • Библиотеки oscript-library
  2. По умолчанию считается, что пути к oscript.exe и git.exe находятся в переменной path, иначе необходимо указать явный путь в файле pre-commit

  3. Путь хранения исходных текстов разобранных обработок по умолчанию используется как src (для обеспечения совместимости со старыми версиями обработки), однако его можно переназначить в файле pre-commit

Установка через OneScript Package Manager

  1. Выполните установку precommit1c из командной строки opm install precommit1c (предполагается, что OneScript уже установлен и командная строка запущена с правами администратора).

  2. Перейдите в рабочий каталог репозитория, для которого следует использовать автоматическую сборку/разборку.

  3. Выполните из командной строки precommit1c --install (здесь можно без прав администратора).

Установка через zip-архив

  1. Скачайте zip-архив precommit1c.zip со страницы последнего релиза.

  2. Содержимое архива необходимо разархивировать в каталог .git/hooks/ вашего проекта.

Примечание: каталог .git по умолчанию скрыт.
В итоге у вас должна получиться следующая структура каталога:

.git\
    hooks\
        pre-commit
        V8Reader
        tools
        v8files-extractor.os

Установка через git clone

  1. Склонируйте репозиторий precommit1c в удобное место.

  2. После клонирования репозитория необходимо инициализировать используемые подмодули.
    Откройте командую строку и выполните команды:

cd путь/к/репозиторию/precommit1c
git submodule update --init --recursive
  1. Cодержимое каталога необходимо скопировать в каталог .git/hooks/ вашего проекта.
    Примечание: каталог .git по умолчанию скрыт.
    В итоге у вас должна получиться следующая структура каталога:
.git\
    hooks\
        pre-commit
        V8Reader
        tools
        v8files-extractor.os

Запуск

После установки достаточно для проверки сделать commit для любого файла epf/erf/cfe, и в вашем репозитории автоматически должна создаться папка src, полностью повторяющая структуру проекта, изменённые или добавленные файлы распакуются в папки с аналогичными наименованиями.

Командная строка запуска OneScript

oscript v8files-extractor.os ?

Утилита сборки/разборки внешних файлов 1С

Параметры командной строки:
        --decompile inputPath outputPath
                Разбор файлов на исходники
        --help
                Показ этого экрана
        --git-check-config
                Проверка настроек репозитория git
        --git-precommit outputPath [--remove-orig-bin-files]
                Запустить чтение индекса из git и определить список файлов для разбора, разложить их и добавить исходники в индекс
                Если передан флаг --remove-orig-bin-files, обработанные файлы epf/erf будут удалены из индекса git
        --compile inputPath outputPath [--recursive]
                Собрать внешний файл/обработку.
                Если указан параметр --recursive, скрипт будет рекурсивно искать исходные коды отчетов и обработок в указанном каталоге и собирать их, повторяя структуру каталога
        --install [--remove-orig-bin-files]
                Установить precommit1c для текущего репозитория git
                Если передан флаг --remove-orig-bin-files, обработанные файлы epf/erf будут удалены из индекса git

Общие параметры:
        --use-designer
                Если передан этот флаг, то для операций сборки/разборки будет использован конфигуратор 1С.
                ТОЛЬКО ДЛЯ ВЕРСИЙ ПЛАТФОРМЫ 8.3.8 И ВЫШЕ!
        --ib-connection-string
                Строка подключения к информационной базе (для Windows-путей обязательно экранировать '\' так: '\\'!)
        --ib-user
                Имя пользователя в информационной базе
        --ib-pwd
                Пароль пользователя в информационной базе

Ограничения

Дополнительно необходимы настройки git для возможности использования кириллических наименований внешних обработок, длинных имён файлов и корректной работы с окончаниями строк:

git config --local core.quotepath false
git config --local core.longpaths true

Не стоит называть файлы с разным расширением epf и erf одинаковыми именами - каталоги с исходниками создаются только по наименованию без учёта расширения и возможен конфликт имен.

Для корректной работы на 1С версии 8.3.9.2016 и старше

Начиная с версии 8.3.9.2016 1С встроила в платформу механизмы защиты открытия внешних отчетов и обработок. Как обойти данное ограничение написано на ИТС:

Защита считается отключенной, если строка соединения с информационной базой удовлетворяет одному из шаблонов, указанных в параметре DisableUnsafeActionProtection файла conf.cfg.

Т.о. в файл C:\Program Files (x86)\1cv8\conf\conf.cfg необходимо добавить строку DisableUnsafeActionProtection=.* Подробнее на ИТС

Известные проблемы

  1. При использовании некоторых версий SourceTree (удобный клиент git) может возникать следующая ошибка:

.git/hooks/pre-commit: line 4: oscript: command not found Несколько вариантов решения:

  • убедиться, что команда oscript доступна
    • для проверки вызвать из командной строки или Win+R cmd /k oscript
  • откатиться на предыдущую версию SourceTree
    • рекомендуется
  • указать полный путь к oscript.exe в файле pre-commit внутри своего репозитария.
    • не рекомендуется, т.к. данную операцию нужно будеть делать для каждого репозитария

Включение полных отладочных логов для анализа проблем

  1. Нужно выполнить следующее:
  • добавить нужную обработку в индекс git - например, git add XXX.epf
  • установить переменную среды LOGOS_CONFIG или заполнить спец.файл настройки логов
  • выполнить git commit или precommit1c --git-precommit
  • Например, рядом с файлом v8files-extractor.os положить файл logos.cfg со следующим текстом logger.rootLogger=DEBUG

  • или переименовать файл-пример logos.debug-example.cfg в logos.cfg

  • Или создать и выполнить командный файл
git add XXX.epf
@set LOGOS_CONFIG=logger.rootLogger=DEBUG
@precommit1c --git-precommit src
  • где каталог src - выходной каталог, где хранятся исходники
  1. Для отключения отладочных логов выполнить обратные действия

Что внутри

Как это работает: v8files-extractor.os полностью повторяет иерархию папок относительно корня репозитория только в папке SRC (от слова source), для каждой изменённой внешней обработки создаётся своя папка и туда с помощью v8unpack распаковывается помещаемая обработка, с помощью v8reader определяются наименования макетов, форм, модуля обработки и переименовываются, переименования сохраняются в служебном файле renames.txt, те файлы, которые невозможно определить или же носят чисто служебный характер, переносятся в каталог und.

Файлы расширений *.cfe распаковываются на исходники штатными средствами 1С.

Лицензия

Лицензировано на условиях Apache License 2.0. Смотрите файл LICENSE.md в корневом каталоге репозитория.

About

precommit1c

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • 1C Enterprise 81.0%
  • Gherkin 18.1%
  • Other 0.9%