├── README.md └── sync.bat /README.md: -------------------------------------------------------------------------------- 1 | # Синхронизация хранилища 1С с Git репозиторием в формате 1C:EDT 2 | 3 | Позволяет синхронизировать хранилище 1С с Git-репозиторием без сохранения авторской истории (анонимно) 4 | 5 | ## Настройка для Windows 6 | 7 | 1. Установите 1C:EDT 1.8 и выше - проверьте, чтобы была доступна утилита Ring из командной строки `ring --version` 8 | 2. Отредактируйте константы в начале файла `sync.bat` 9 | * **Версию платформы** на которой находится хранилище 10 | * **Версию проекта в EDT** - из тех что поддерживает 1C:EDT, можно выполнить команду `ring edt platform-versions` 11 | * Отредатируйте путь к базе подключенной к хранилищу, адрес хранилища и авторизацию 12 | * Отредактируйти пути к вокрспейсу и названиям проекта 13 | 3. Добавьте файл `sync.bat` в **Планировщик задач** в Windows чтобы запускать регламентно 14 | 4. Инициализруйте пустой репозиторй и добавьте адрес git-сервера для проекта на https://github.com/ 15 | * Настройте `.gitignore` со стандартными настройками, рекомендуем исключить файлы `Project/src/Configuration/ParentConfigurations.bin` и все что лежит в папке `Project/src/Configuration/ParentConfigurations/*` - это файлы конфигурацйий поставщиков. Зачем они вам в EDT? 16 | * Если конфигурация большая - настройе **Git LFS** для хранения бинарных файлов в LFS 17 | * Самостоятельно настройте авторизацию для сервера на котором выполняется конвертация в указанном Git-сервере (с помощью ssh-ключей, https://github.com/Microsoft/Git-Credential-Manager-for-Windows или прямым указанием логина и пароля: `git remote add origin https://user:pass@github.com/your_group/youconfig_dt.git`) 18 | * Книга по Git вам в помощь https://git-scm.com/book/ru/v2 19 | -------------------------------------------------------------------------------- /sync.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set VERSION=8.3.12.1412 4 | set PLATFORM=c:\Program Files\1cv8\%VERSION%\bin\1cv8.exe 5 | set EDT_PROJECT_VERSION=8.3.12 6 | 7 | set DB_TRUNK=c:\1C\Dev\DevDB 8 | set DB_USER= 9 | set DB_PASS= 10 | set REPO_ADDRESS=tcp://server:1542/Path_to_repo 11 | set REPO_USER_NAME=UserName 12 | set REPO_PASS= 13 | 14 | set WORKSPACE=c:\1C\DT\1.8\YourConfig_import 15 | set DUMP_FOLDER=c:\1C\DT\1.8\YourConfig_dump 16 | set GIT_REPO=c:\1C\DT\1.8\git\YourConfig_dt 17 | set PROJECT_PATH=%GIT_REPO%\YourConfig 18 | set LOGFILE=c:\1C\DT\1.8\YourConfig\log.txt 19 | 20 | :: Default author name - leave "anonymous" 21 | set GIT_AUTHOR_NAME="Anonymous" 22 | set GIT_COMMITTER_NAME="Anonymous" 23 | set GIT_AUTHOR_EMAIL="" 24 | set GIT_COMMITTER_EMAIL="" 25 | 26 | set START_TIME=%date% - %time% 27 | 28 | ECHO Start %date% - %time% >> %LOGFILE% 29 | "%PLATFORM%" DESIGNER /F "%DB_TRUNK%" /N "%DB_USER%" /P "%DB_PASS%" /WA- /DisableStartupDialogs /ConfigurationRepositoryF "%REPO_ADDRESS%" /ConfigurationRepositoryN "%REPO_USER_NAME%" /ConfigurationRepositoryP "%REPO_PASS%" /ConfigurationRepositoryUpdateCfg -force /Out "%LOGFILE%" -NoTruncate 30 | 31 | cd "%GIT_REPO%" >> %LOGFILE% 32 | git pull >> %LOGFILE% 2>&1 33 | 34 | rd /S /Q "%WORKSPACE%" 35 | md "%WORKSPACE%" 36 | rd /S /Q "%DUMP_FOLDER%" 37 | rd /S /Q "%PROJECT_PATH%" 38 | md "%DUMP_FOLDER%" 39 | 40 | ECHO Dump config files %date% - %time% >> %LOGFILE% 41 | "%PLATFORM%" DESIGNER /F "%DB_TRUNK%" /N "%DB_USER%" /P "%DB_PASS%" /WA- /DisableStartupDialogs /DumpConfigToFiles "%DUMP_FOLDER%" -force /Out "%LOGFILE%" -NoTruncate 42 | 43 | ECHO Convert config files to EDT %date% - %time% >> %LOGFILE% 44 | call ring edt workspace import --workspace-location %WORKSPACE% --configuration-files %DUMP_FOLDER% --project %PROJECT_PATH% --version %EDT_PROJECT_VERSION% >> %LOGFILE% 2>&1 45 | ECHO Finished convert config files to EDT %date% - %time% >> %LOGFILE% 46 | ECHO Error level: %ERRORLEVEL% >> %LOGFILE% 47 | 48 | if %ERRORLEVEL% NEQ 0 echo Unsuccessful >> %LOGFILE% 49 | if %ERRORLEVEL% NEQ 0 exit %ERRORLEVEL% >> %LOGFILE% 50 | 51 | cd "%GIT_REPO%" >> %LOGFILE% 52 | 53 | ECHO Start commit to Git %date% - %time% >> %LOGFILE% 54 | 55 | git add ./ --all >> %LOGFILE% 2>&1 56 | git commit -m "Sync from main 1C Storage @ %START_TIME%" >> %LOGFILE% 2>&1 57 | git push -u origin master >> %LOGFILE% 2>&1 58 | 59 | ECHO Finished %date% - %time% >> %LOGFILE% --------------------------------------------------------------------------------