From 1df3ebd312c0bc5730c1fcc930bdf7480a02cd68 Mon Sep 17 00:00:00 2001 From: Andranik Simonyan Date: Sat, 30 Jul 2016 15:12:18 +0300 Subject: [PATCH] =?UTF-8?q?-=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=B0=20precommit1c=20-=20https://github.com/xDrivenDevelopmen?= =?UTF-8?q?t/precommit1c=20-=20=D0=9A=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=B0?= =?UTF-8?q?=20=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D0=B5=D0=B9?= =?UTF-8?q?=20precommit1c.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- precommit/README.md | 102 +++++++++++++++++++++++++++++++++++++ precommit/copy-to-hook.cmd | 7 +++ 2 files changed, 109 insertions(+) create mode 100644 precommit/README.md diff --git a/precommit/README.md b/precommit/README.md new file mode 100644 index 0000000..74fb154 --- /dev/null +++ b/precommit/README.md @@ -0,0 +1,102 @@ +## Набор утилит для автоматической разборки/сборки внешних обработок и отчетов, при помещении (commit) в git + +[![Join the chat at https://gitter.im/xDrivenDevelopment/precommit1c](https://badges.gitter.im/xDrivenDevelopment/precommit1c.svg)](https://gitter.im/xDrivenDevelopment/precommit1c?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Здесь вы можете задавать любые вопросы разработчикам и активным участникам + +### Что к чему +---- +* v8files-extractor.os - скрипт для OneScript, получающий список помещаемых файлов при коммите, фильтрующий по расширению только внешние отчёты/обработки и запускающий внешнюю обработку для распаковки этих файлов. Так же позволяет собирать обработки из полученных исходников. +* [V8Reader.epf](http://infostart.ru/public/106310/) - внешняя обработка 1С, которая с помощью [v8unpack](http://svn2.assembla.com/svn/V8Unpack/track/) разбирает внешние обработки, определяет нормальные наименования для каталогов форм, файлов модулей объектов и т. д. и раскладывает их в нормальную структуру папок. +* ibService - сервисная база данных на 1С для запуска V8Reader.epf +* pre-commit - собственно командный файл, вызываемый git перед каждым помещением. Выполняет роль простой запускалки скрипта v8files-extractor.os + +### Установка + +1. Зависимости: + * OneScript http://oscript.io/ + * установленная платформа 1С:Предприятие 8 + * git + * в случае запуска из под wine необходим msscriptcontrol + * Библиотеки [oscript-library]( https://github.com/EvilBeaver/oscript-library) + +2. По умолчанию считается, что пути к oscript.exe и git.exe находятся в переменной path, иначе необходимо указать явный путь в файле pre-commit + +3. Путь хранения исходных текстов разобранных обработок по умолчанию используется как **src** (для обеспечения совместимости со старыми версиями обработки), однако его можно переназначить в файле `pre-commit` + +#### Установка через zip-архив + +1. Скачайте zip-архив precommit1c.zip со страницы [последнего релиза](https://github.com/xDrivenDevelopment/precommit1c/releases/latest). + +2. Содержмое архива необходимо разархивировать в каталог .git/hooks/ вашего проекта. +*Примечание:* каталог .git по умолчанию скрыт. +В итоге у вас должна получиться следующая структура каталога: +``` +.git\ + hooks\ + pre-commit + V8Reader + tools + ibService + v8files-extractor.os +``` + +#### Установка через git clone + +1. Склонируйте репозиторий `precommit1c` в удобное место. + +2. После клонирования репозитория необходимо инициализировать используемые подмодули. +Откройте командую строку и выполните команды: +```cmd +cd путь/к/репозиторию/precommit1c +git submodule update --init --recursive +``` + +3. Cодержимое каталога необходимо скопировать в каталог .git/hooks/ вашего проекта. +*Примечание:* каталог .git по умолчанию скрыт. +В итоге у вас должна получиться следующая структура каталога: +``` +.git\ + hooks\ + pre-commit + V8Reader + tools + ibService + v8files-extractor.os +``` + +## Запуск + +После установки достаточно для проверки сделать commit для любого файла epf/erf, и в вашем репозитории автоматически должна создаться папка *src*, полностью повторяющая структуру проекта, изменённые или добавленные файлы распакуются в папки с аналогичными наименованиями. + +## Командная строка запуска OneScript + +``` +oscript v8files-extractor.os ? + +Утилита сборки/разборки внешних файлов 1С + +Параметры командной строки: + --decompile inputPath outputPath + Разбор файлов на исходники + --help + Показ этого экрана + --git-precommit outputPath [--remove-orig-bin-files] + Запустить чтение индекса из git и определить список файлов для разбора, разложить их и добавить исходники в индекс + Если передан флаг --remove-orig-bin-files, обработанные файлы epf/ert будут удалены из индекса git + --compile inputPath outputPath [--recursive] + Собрать внешний файл/обработку. + Если указан параметр --recursive, скрипт будет рекурсивно искать исходные коды отчетов и обработок в указанном каталоге и собирать их, повторяя структуру каталога +``` + +## Ограничения + +Дополнительно необходима настройка git для возможности использования кириллических наименований внешних обработок `git config --local core.quotepath false` + +Не стоит называть файлы с разным расширением epf и erf одинаковыми именами - каталоги с исходниками создаются только по наименованию без учёта расширения и возможен конфликт имен. + +## Что внутри + +Как это работает: v8files-extractor.os полностью повторяет иерархию папок относительно корня репозитория только в папке SRC (от слова source), для каждой изменённой внешней обработки создаётся своя папка и туда с помощью v8unpack распаковывается помещаемая обработка, с помощью v8reader определяются наименования макетов, форм, модуля обработки и переименовываются, переименования сохраняются в служебном файле renames.txt, те файлы, которые невозможно определить или же носят чисто служебный характер, переносятся в каталог *und* + +## Лицензия + +Лицензировано на условиях Apache License 2.0. Смотрите файл [LICENSE.md](LICENSE.md) в корневом каталоге репозитория. diff --git a/precommit/copy-to-hook.cmd b/precommit/copy-to-hook.cmd index 1eccff3..d20c34e 100644 --- a/precommit/copy-to-hook.cmd +++ b/precommit/copy-to-hook.cmd @@ -14,4 +14,11 @@ mkdir .\..\.git\hooks\tools xcopy .\tools\v8unpack.exe .\..\.git\hooks\tools\ /Y /F cd .\..\ + +echo storage localization to use Cyrillic characters git config --local core.quotepath false + +echo init used submodules +git submodule update --init --recursive + +