Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 16 additions & 66 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,59 +1,34 @@
## Набор утилит для автоматической разборки/сборки внешних обработок и отчетов, при помещении (commit) в git
## Набор утилит для автоматической разборки/сборки внешних обработок и отчетов, при помещении (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, получающий список помещаемых файлов при коммите, фильтрующий по расширению только внешние отчёты/обработки и запускающий внешнюю обработку для распаковки этих файлов. Так же позволяет собирать обработки из полученных исходников.
* * pyv8unpack.py - Python-скрипт, выполняющий такую же задачу
* [V8Reader.epf](http://infostart.ru/public/106310/) - внешняя обработка 1С, которая с помощью [v8unpack](http://svn2.assembla.com/svn/V8Unpack/track/) разбирает внешние обработки, определяет нормальные наименования для каталогов форм, файлов модулей объектов и т. д. и раскладывает их в нормальную структуру папок.
* ibService - сервисная база данных на 1С для запуска V8Reader.epf
* pre-commit - собственно командный файл, вызываемый git перед каждым помещением. Выполняет роль простой запускалки скрипта pyv8unpack.py
* pre-commit - собственно командный файл, вызываемый git перед каждым помещением. Выполняет роль простой запускалки скрипта v8files-extractor.os

### Установка

1. Зависимости:
* OneScript http://oscript.io/ (рекомендуется)
* * или Python 3.3
* OneScript http://oscript.io/
* установленная платформа 1С:Предприятие 8
* git
* в случае запуска из под wine необходим msscriptcontrol
* в случае использования OneScript-версии требуется установка **develop**-версии библиотек [oscript-library]( https://github.com/EvilBeaver/oscript-library)
* Библиотеки [oscript-library]( https://github.com/EvilBeaver/oscript-library)

2. По умолчанию считается, что пути к oscript.exe и/или python.exe и git.exe находятся в переменной path, иначе необходимо указать явный путь в файлах pre-commit (для oscript/python) и pyv8unpack.py (для git)
2. По умолчанию считается, что пути к oscript.exe и git.exe находятся в переменной path, иначе необходимо указать явный путь в файлах pre-commit

3. После скачивания данного репозитория необходимо инициализировать используемые подмодули.
3. После клонирования данного репозитория необходимо инициализировать используемые подмодули.
Откройте командую строку и выполните команды:
```cmd
cd путь/к/репозиторию/precommit1c
git submodule update --init --recursive
```

4. Путь к платформе находится автоматически в случае стандартной установки 1С. Если необходимо явно указать путь к платформе, то нужно: указать переменную окружения PATH1C c путём к каталогу, в который установлена 1С
```
set PATH1C = d:\program\
```
или создать ini-файл рядом с файлом скрипта pyv8unpack.py или в домашней папке в корне с именем precommit1c.ini и содержанием:
```
[DEFAULT]
onecplatfrorms = c:\program\1cv8\8.3.5.823\bin\1cv8.exe
```

5. Путь хранения исходных текстов разобранных обработок по умолчанию используется как **src** (для обеспечения совместимости со старыми версиями обработки), однако его можно переназначить в ini-файле
```
[DEFAULT]
source = plugin_source
```

6. Флажок, изменяющий корневую папку хранения исходных текстов разобранных обработок по умолчанию используется как корневая папка (для обеспечения совместимости со старыми версиями обработки), однако его можно переназначить в ini-файле. Если изменить флажок на True - в каждой корневой папке внешних обработок будет создан подкаталог текстов разобранных обработок.
```
[DEFAULT]
source_in_source = False
```

7. Наконец, содержимое каталога необходимо скопировать в каталог .git/hooks/ вашего проекта.
> *Примечание:* каталог .git по умолчанию скрыт.

4. Cодержимое каталога необходимо скопировать в каталог .git/hooks/ вашего проекта.
*Примечание:* каталог .git по умолчанию скрыт.
В итоге у вас должна получиться следующая структура каталога:
```
.git\
Expand All @@ -63,14 +38,15 @@ source_in_source = False
tools
ibService
v8files-extractor.os
pyv8unpack.py
```

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

## Запуск

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

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

```
oscript v8files-extractor.os ?
Expand All @@ -90,38 +66,12 @@ oscript v8files-extractor.os ?
Если указан параметр --recursive, скрипт будет рекурсивно искать исходные коды отчетов и обработок в указанном каталоге и собирать их, повторяя структуру каталога
```

##Командная строка запуска Питона

```
python pyv8unpack.py [-h] [--version] [-v] [--index] [--g] [--compile]
[--type TYPE] [--platform PLATFORM]
[inputPath] [output]


Утилита для автоматической распаковки внешних обработок

positional arguments:
inputPath Путь к файлам, необходимым для распаковки
output Путь к каталогу, куда распаковывать

optional arguments:
-h, --help Show this help message and exit
--version Show program's version number and exit
-v, --verbose Increases log verbosity for each occurence
--index Добавляем в индекс исходники
--g Запустить чтение индекса из git и определить список
файлов для разбора
--compile Собрать внешний отчёт/обработку
--type TYPE Тип файла для сборки epf, erf. По умолчанию авто epf
--platform PLATFORM Путь к платформе 1С
```

##Ограничения
## Ограничения

Дополнительно необходима настройка git для возможности использования кириллических наименований внешних обработок ```git config --local core.quotepath false```
Дополнительно необходима настройка git для возможности использования кириллических наименований внешних обработок `git config --local core.quotepath false`

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

##Что внутри
## Что внутри

Как это работает: v8files-extractor.os/pyv8unpack.py полностью повторяет иерархию папок относительно корня репозитория только в папке SRC (от слова source), для каждой изменённой внешней обработки создаётся своя папка и туда с помощью v8unpack распаковывается помещаемая обработка, с помощью v8reader определяются наименования макетов, форм, модуля обработки и переименовываются, переименования сохраняются в служебном файле renames.txt, те файлы, которые невозможно определить или же носят чисто служебный характер, переносятся в каталог *und*
Как это работает: v8files-extractor.os полностью повторяет иерархию папок относительно корня репозитория только в папке SRC (от слова source), для каждой изменённой внешней обработки создаётся своя папка и туда с помощью v8unpack распаковывается помещаемая обработка, с помощью v8reader определяются наименования макетов, форм, модуля обработки и переименовываются, переименования сохраняются в служебном файле renames.txt, те файлы, которые невозможно определить или же носят чисто служебный характер, переносятся в каталог *und*
4 changes: 2 additions & 2 deletions copy-to-hook.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ xcopy .\ibService .\..\..\.git\hooks\ibService\ /Y /E /F
xcopy .\pre-commit .\..\..\.git\hooks\ /Y /F
mkdir .\..\..\.git\hooks\v8Reader
xcopy .\v8Reader\V8Reader.epf .\..\..\.git\hooks\v8Reader\ /Y /F
xcopy .\pyv8unpack.py .\..\..\.git\hooks\ /Y /F
xcopy .\v8files-extractor.os .\..\..\.git\hooks\ /Y /F
mkdir .\..\..\.git\hooks\tools
xcopy .\tools\v8unpack.exe .\..\..\.git\hooks\tools\ /Y /F

cd .\..\..\
git config --local core.quotepath false
git config --local core.quotepath false
4 changes: 2 additions & 2 deletions create-links-in-hooks.bat
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
mklink ".git/hooks/pre-commit" "%~dp0pre-commit"
mklink ".git/hooks/pyv8unpack.py" "%~dp0pyv8unpack.py"
mklink ".git/hooks/v8files-extractor.os" "%~dp0v8files-extractor.os"
mklink /J ".git/hooks/ibService" "%~dp0ibService"
mklink /J ".git/hooks/v8Reader" "%~dp0v8Reader"
mklink /J ".git/hooks/tools" "%~dp0tools"
git config --local core.quotepath false
git config --local core.quotepath false
3 changes: 0 additions & 3 deletions precommit1c.ini.example

This file was deleted.

Loading