diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 00000000..00896801
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,11 @@
+version: 2
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "weekly"
+ commit-message:
+ prefix: "ci"
+ labels:
+ - "dependencies"
+ - "github-actions"
diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml
index 8b55b58b..3e2bec80 100644
--- a/.github/workflows/qa.yml
+++ b/.github/workflows/qa.yml
@@ -14,21 +14,23 @@ jobs:
if: github.repository == 'oscript-library/gitsync'
runs-on: ${{ matrix.os }}
environment: ${{ (github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != github.repository) && 'external-pr' || '' }}
+ cache-mode: write
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04]
- oscript_version: ['1.9.2']
+ oscript_version: ['2.2.1']
v8_version: ['8.3.24.1691']
locale: ['ru_RU']
steps:
- name: Актуализация
- uses: actions/checkout@v4.2.2
+ uses: actions/checkout@v7.0.1
with:
repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }}
ref: ${{ github.event.pull_request.head.sha || github.ref_name }}
fetch-depth: 0
+ allow-unsafe-pr-checkout: true
# https://stackoverflow.com/questions/58033366/how-to-get-current-branch-within-github-actions
- name: Извлечение имени текущей ветки
@@ -64,6 +66,17 @@ jobs:
ONEC_USERNAME: ${{ secrets.ONEC_USERNAME }}
ONEC_PASSWORD: ${{ secrets.ONEC_PASSWORD }}
+ - name: Удаление устаревшей библиотеки (Linux)
+ if: startsWith(matrix.os, 'ubuntu')
+ run: |
+ for src in /opt/1cv8/x86_64/*/libstdc++.so.6; do
+ [ -f "$src" ] || continue
+ dst="${src}.disabled"
+ echo "Renaming: $src -> $dst"
+ sudo mv -v -- "$src" "$dst"
+ done
+ shell: bash
+
- name: Установка лицензии (Linux)
if: startsWith(matrix.os, 'ubuntu')
run: |
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 40271426..4dc8f1b8 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -14,12 +14,12 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
- oscript_version: ['1.9.2']
+ oscript_version: ['2.2.1']
package_mask: ["gitsync-*.ospx"]
steps:
# Загрузка проекта
- name: Актуализация
- uses: actions/checkout@v4.2.2
+ uses: actions/checkout@v7.0.1
# Установка OneScript конкретной версии
- name: Установка OneScript
@@ -37,13 +37,13 @@ jobs:
run: opm run build
- name: Заливка артефактов
- uses: actions/upload-artifact@v6.0.0
+ uses: actions/upload-artifact@v7.0.1
with:
name: gitsync.ospx.zip
path: ./${{ matrix.package_mask }}
- name: Заливка в релиз
- uses: AButler/upload-release-assets@v3.0.1
+ uses: AButler/upload-release-assets@v4.0.0
with:
files: ./${{ matrix.package_mask }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml
index 6e366b84..f914f038 100644
--- a/.github/workflows/testing.yml
+++ b/.github/workflows/testing.yml
@@ -13,9 +13,10 @@ jobs:
test:
runs-on: ${{ matrix.os }}
environment: ${{ (github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != github.repository) && 'external-pr' || '' }}
+ cache-mode: write
strategy:
matrix:
- oscript_version: ['1.9.2']
+ oscript_version: ['2.2.1', 'dev']
v8_version: ['8.3.21.1624', '8.3.24.1691']
os: [windows-latest, ubuntu-22.04]
locale: ['ru_RU']
@@ -30,10 +31,11 @@ jobs:
powershell -Command "Set-WinSystemLocale ru-RU"
- name: Актуализация
- uses: actions/checkout@v4.2.2
+ uses: actions/checkout@v7.0.1
with:
repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }}
ref: ${{ github.event.pull_request.head.sha || github.ref_name }}
+ allow-unsafe-pr-checkout: true
- name: Установка OneScript
uses: otymko/setup-onescript@v1.5
@@ -70,6 +72,17 @@ jobs:
ONEC_USERNAME: ${{ secrets.ONEC_USERNAME }}
ONEC_PASSWORD: ${{ secrets.ONEC_PASSWORD }}
+ - name: Удаление устаревшей библиотеки (Linux)
+ if: startsWith(matrix.os, 'ubuntu')
+ run: |
+ for src in /opt/1cv8/x86_64/*/libstdc++.so.6; do
+ [ -f "$src" ] || continue
+ dst="${src}.disabled"
+ echo "Renaming: $src -> $dst"
+ sudo mv -v -- "$src" "$dst"
+ done
+ shell: bash
+
- name: Установка лицензии (Linux)
if: startsWith(matrix.os, 'ubuntu')
run: |
diff --git a/readme.md b/README.md
similarity index 86%
rename from readme.md
rename to README.md
index 3c7140b6..18b131a3 100644
--- a/readme.md
+++ b/README.md
@@ -121,7 +121,6 @@
Больше примеров: `gitsync usage clone`
**b. Если у Вас нет удаленного репозитория** - используйте команду `init`
-
Синтаксис команды: `gitsync init [ОПЦИИ] PATH [WORKDIR]`
Пример использования:
@@ -217,13 +216,15 @@
#### Глобальные переменные окружения
-| Имя | Описание |
-| ------------------- | --------------------------------------------------------------------------- |
-| `GITSYNC_V8VERSION` | маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.) |
-| `GITSYNC_V8_PATH` | путь к исполняемому файлу платформы 1С (Например, /opt/1C/v8.3/x86_64/1cv8) |
-| `GITSYNC_VERBOSE` | вывод отладочной информации в процессе выполнения |
-| `GITSYNC_TEMP` | путь к каталогу временных файлов |
-| `GITSYNC_EMAIL` | домен почты для пользователей git |
+| Имя | Описание |
+| --------------------------- | ---------------------------------------------------------------------------------------------- |
+| `GITSYNC_V8VERSION` | маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.) |
+| `GITSYNC_V8_PATH` | путь к исполняемому файлу платформы 1С (например, /opt/1C/x86_64/8.3.24.1819/1cv8) |
+| `GITSYNC_EXPORT_V8VERSION` | маска версии платформы 1С для выгрузки конфигурации в файлы |
+| `GITSYNC_EXPORT_V8_PATH` | путь к исполняемому файлу платформы 1С для выгрузки конфигурации в файлы |
+| `GITSYNC_VERBOSE` | вывод отладочной информации в процессе выполнения |
+| `GITSYNC_TEMP` | путь к каталогу временных файлов |
+| `GITSYNC_EMAIL` | домен почты для пользователей git |
#### Переменные окружения команды
@@ -290,10 +291,18 @@
- Указание исполняемого файла нужной версии платформы
```sh
- gitsync --v8-path /opt/1C/v8.3/x86_64/1cv8 s -uAdmin -p=Secret C:/Хранилище_1С/ C:/work_dir/
+ gitsync --v8-path /opt/1C/x86_64/8.3.24.1819/1cv8 s -uAdmin -p=Secret C:/Хранилище_1С/ C:/work_dir/
+ ```
+
+ Команда синхронизации будет выполнена с использованием исполняемого файла платформы `/opt/1C/x86_64/8.3.24.1819/1cv8` (приведен синтаксис для linux; вариант для Windows см. ниже).
+
+- Использование разных версий платформы для получения изменений из хранилища и для выгрузки конфигурации в файлы
+
+ ```sh
+ gitsync --v8-path /opt/1C/x86_64/8.5.1.1529/1cv8 --export-v8-path /opt/1C/x86_64/8.3.24.1819/1cv8 s -uAdmin -p=Secret C:/Хранилище_1С/ C:/work_dir/
```
- Команда синхронизации будет выполнена с использованием исполняемого файла платформы `/opt/1C/v8.3/x86_64/1cv8` (приведен синтаксис для linux; вариант для Windows см. ниже).
+ Для работы с хранилищем будет использована платформа 8.5.1.1529, а для последующей выгрузки версии в исходники - платформа 8.3.24.1819. Вместо `--export-v8-path` можно указать `--export-v8version`, если нужно задать только маску версии, а не полный путь к исполняемому файлу.
- Вызов команды без указания параметров, с использованием переменных окружения
@@ -306,8 +315,10 @@
export GITSYNC_STORAGE_USER=Admin
export GITSYNC_STORAGE_PASSWORD=Secret
export GITSYNC_V8VERSION=8.3.7
+ export GITSYNC_EXPORT_V8VERSION=8.3.27
# Указание конкретного исполняемого файла платформы 1С. Путь надо обернуть в кавычки если он содержит пробелы.
- #export GITSYNC_V8_PATH=/opt/1C/v8.3/x86_64/1cv8
+ #export GITSYNC_V8_PATH=/opt/1C/x86_64/8.5.1.1819/1cv8
+ #export GITSYNC_EXPORT_V8_PATH=/opt/1C/x86_64/8.3.24.1819/1cv8
export GITSYNC_VERBOSE=true #Можно использовать Да/Ложь/Нет/Истина
export GITSYNC_TEMP=./temp/sync
gitsync s
@@ -322,8 +333,10 @@
set GITSYNC_STORAGE_USER=Admin
set GITSYNC_STORAGE_PASSWORD=Secret
set GITSYNC_V8VERSION=8.3.7
+ set GITSYNC_EXPORT_V8VERSION=8.3.27
# Указание конкретного исполняемого файла платформы 1С. Путь надо обернуть в кавычки если он содержит пробелы.
#set GITSYNC_V8_PATH="C:\Program Files (x86)\1cv8\8.3.12.1567\bin\1cv8.exe"
+ #set GITSYNC_EXPORT_V8_PATH="C:\Program Files (x86)\1cv8\8.3.27.1989\bin\1cv8.exe"
set GITSYNC_VERBOSE=true #Можно использовать Да/Ложь/Нет/Истина
set GITSYNC_TEMP=./temp/sync
@@ -366,15 +379,16 @@
> ВНИМАНИЕ! После обновления gitsync для **обновления** встроенных плагинов необходимо однократно выполнить команду `gitsync plugins init`
-Соответствие версии gitsync и версии [gitsync-plugins](https://github.com/khorevaa/gitsync-plugins).
+Соответствие версии gitsync, минимальной версии OneScript и версии [gitsync-plugins](https://github.com/khorevaa/gitsync-plugins).
-| Версия gitsync | Плагины |
-| ---------------- | --------------------------------------------------------------------------------- |
-| v3.8.0 (текущая) | [v2.0.3](https://github.com/oscript-library/gitsync-plugins/releases/tag/v.2.0.3) |
-| v3.7.3 | [v2.0.3](https://github.com/oscript-library/gitsync-plugins/releases/tag/v.2.0.3) |
-| v3.7.2 | [v2.0.3](https://github.com/oscript-library/gitsync-plugins/releases/tag/v.2.0.3) |
-| v3.7.1 | [v2.0.1](https://github.com/oscript-library/gitsync-plugins/releases/tag/v.2.0.1) |
-| v3.7.0 | [v2.0.0](https://github.com/oscript-library/gitsync-plugins/releases/tag/v.2.0.0) |
+| Версия gitsync | Мин. версия OneScript | Версия встроенных плагинов |
+| ---------------- | --------------------- | --------------------------------------------------------------------------------- |
+| v3.9.0 (текущая) | **v2.2.1** | [v2.1.0](https://github.com/oscript-library/gitsync-plugins/releases/tag/v.2.1.0) |
+| v3.8.0 | v1.9.2 | [v2.0.3](https://github.com/oscript-library/gitsync-plugins/releases/tag/v.2.0.3) |
+| v3.7.3 | v1.9.2 | [v2.0.3](https://github.com/oscript-library/gitsync-plugins/releases/tag/v.2.0.3) |
+| v3.7.2 | v1.9.2 | [v2.0.3](https://github.com/oscript-library/gitsync-plugins/releases/tag/v.2.0.3) |
+| v3.7.1 | v1.9.2 | [v2.0.1](https://github.com/oscript-library/gitsync-plugins/releases/tag/v.2.0.1) |
+| v3.7.0 | v1.9.2 | [v2.0.0](https://github.com/oscript-library/gitsync-plugins/releases/tag/v.2.0.0) |
Все установленные плагины расположены по пути `%USERPROFILE%\AppData\Local\gitsync\plugins` для Windows или `$HOME/.local/share` для Linux. В этом же каталоге находится файл `plugins.json`, который хранит информацию об активных и неактивных плагинах. В случае каких-либо ошибок, связанных с работой плагинов, можно удалить этот каталог, а затем инициализировать и активировать нужные плагины заново.
diff --git a/build_packagedef b/build_packagedef
index c4f43ad7..3bb53f54 100644
--- a/build_packagedef
+++ b/build_packagedef
@@ -1,5 +1,7 @@
#Использовать fs
+Перем ВерсияВстроенныхПлагинов;
+
Процедура ПередСборкой(Знач РабочийКаталог) Экспорт
Сообщить("Установка локальных зависимостей библиотек");
@@ -20,6 +22,7 @@
КомандаOpm = Новый Команда;
КомандаOpm.УстановитьКоманду("opm");
КомандаOpm.ДобавитьПараметр("run get-plugins");
+ КомандаOpm.ДобавитьПараметр(ВерсияВстроенныхПлагинов);
КомандаOpm.ДобавитьЛогВыводаКоманды("task.build");
@@ -46,15 +49,21 @@
ПутьКМодулюПараметрыСистемы = ОбъединитьПути(ТекущийСценарий().Каталог, "src/core", "Модули", "ПараметрыСистемы.os");
// специальная заглушка для правильной компиляции packagedef при первых действий при установке пакета
+ВерсияПродукта = "";
+ВерсияСреды = "";
+ВерсияВстроенныхПлагинов = "";
+
ФайлМодульПараметрыСистемы = Новый Файл(ПутьКМодулюПараметрыСистемы);
Если ФайлМодульПараметрыСистемы.Существует() Тогда
МодульПараметрыСистемы = ЗагрузитьСценарий(ПутьКМодулюПараметрыСистемы);
ВерсияПродукта = МодульПараметрыСистемы.ВерсияПродукта();
+ ВерсияСреды = МодульПараметрыСистемы.ВерсияСреды();
+ ВерсияВстроенныхПлагинов = МодульПараметрыСистемы.ВерсияВстроенныхПлагинов();
КонецЕсли;
Описание.Имя("gitsync")
.Версия(ВерсияПродукта)
- .ВерсияСреды("1.9.2")
+ .ВерсияСреды(ВерсияСреды)
.ВключитьФайл("src")
.ВключитьФайл("embedded_plugins")
.ВключитьФайл("oscript_modules")
diff --git a/docs/init.md b/docs/init.md
index c2941b84..f1791358 100644
--- a/docs/init.md
+++ b/docs/init.md
@@ -22,12 +22,14 @@ init (синоним i) - инициализация нового хранили
```
--------------
### Глобальные переменные окружения
-| Имя | Описание |
-|---------------------|--------------------------------------------------------|
-| `GITSYNC_V8VERSION` | маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.) |
-| `GITSYNC_VERBOSE` | вывод отладочной информации в процессе выполнения |
-| `GITSYNC_TEMP` | путь к каталогу временных файлов |
-| `GITSYNC_EMAIL` | домен почты для пользователей git |
+| Имя | Описание |
+|-----------------------------|-----------------------------------------------------------------------------|
+| `GITSYNC_V8VERSION` | маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.) |
+| `GITSYNC_EXPORT_V8VERSION` | маска версии платформы 1С для выгрузки конфигурации в файлы |
+| `GITSYNC_EXPORT_V8_PATH` | путь к исполняемому файлу платформы 1С для выгрузки конфигурации в файлы |
+| `GITSYNC_VERBOSE` | вывод отладочной информации в процессе выполнения |
+| `GITSYNC_TEMP` | путь к каталогу временных файлов |
+| `GITSYNC_EMAIL` | домен почты для пользователей git |
--------------
### Переменные окружения команды
@@ -113,6 +115,7 @@ init (синоним i) - инициализация нового хранили
export GITSYNC_STORAGE_USER=Админ
export GITSYNC_STORAGE_PASSWORD=Пароль
export GITSYNC_V8VERSION=8.3.7
+ export GITSYNC_EXPORT_V8VERSION=8.3.27
export GITSYNC_VERBOSE=true #Можно использовать Да/Ложь/Нет/Истина
export GITSYNC_TEMP=./temp/sync
gitsync i
@@ -126,9 +129,10 @@ init (синоним i) - инициализация нового хранили
set GITSYNC_STORAGE_USER=Админ
set GITSYNC_STORAGE_PASSWORD=Пароль
set GITSYNC_V8VERSION=8.3.7
+ set GITSYNC_EXPORT_V8VERSION=8.3.27
set GITSYNC_VERBOSE=true #Можно использовать Да/Ложь/Нет/Истина
set GITSYNC_TEMP=./temp/sync
gitsync i
```
- Данная команда создаст новый репозиторий git в каталоге `C:/work_dir/` из хранилища 1С по пути `C:/Хранилище_1С/`
\ No newline at end of file
+ Данная команда создаст новый репозиторий git в каталоге `C:/work_dir/` из хранилища 1С по пути `C:/Хранилище_1С/`
diff --git a/docs/sync.md b/docs/sync.md
index eff6b283..b88e7976 100644
--- a/docs/sync.md
+++ b/docs/sync.md
@@ -22,12 +22,14 @@ sync (синоним s) - Выполняет синхронизацию хран
```
### Глобальные переменные окружения
-| Имя | Описание |
-|---------------------|--------------------------------------------------------|
-| `GITSYNC_V8VERSION` | маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.) |
-| `GITSYNC_VERBOSE` | вывод отладочной информации в процессе выполнения |
-| `GITSYNC_TEMP` | путь к каталогу временных файлов |
-| `GITSYNC_EMAIL` | домен почты для пользователей git |
+| Имя | Описание |
+|-----------------------------|-----------------------------------------------------------------------------|
+| `GITSYNC_V8VERSION` | маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.) |
+| `GITSYNC_EXPORT_V8VERSION` | маска версии платформы 1С для выгрузки конфигурации в файлы |
+| `GITSYNC_EXPORT_V8_PATH` | путь к исполняемому файлу платформы 1С для выгрузки конфигурации в файлы |
+| `GITSYNC_VERBOSE` | вывод отладочной информации в процессе выполнения |
+| `GITSYNC_TEMP` | путь к каталогу временных файлов |
+| `GITSYNC_EMAIL` | домен почты для пользователей git |
### Переменные окружения команды
@@ -96,6 +98,7 @@ sync (синоним s) - Выполняет синхронизацию хран
export GITSYNC_STORAGE_USER=Admin
export GITSYNC_STORAGE_PASSWORD=Secret
export GITSYNC_V8VERSION=8.3.7
+ export GITSYNC_EXPORT_V8VERSION=8.3.27
export GITSYNC_VERBOSE=true #Можно использовать Да/Ложь/Нет/Истина
export GITSYNC_TEMP=./temp/sync
gitsync s
@@ -108,6 +111,7 @@ sync (синоним s) - Выполняет синхронизацию хран
set GITSYNC_STORAGE_USER=Admin
set GITSYNC_STORAGE_PASSWORD=Secret
set GITSYNC_V8VERSION=8.3.7
+ set GITSYNC_EXPORT_V8VERSION=8.3.27
set GITSYNC_VERBOSE=true #Можно использовать Да/Ложь/Нет/Истина
set GITSYNC_TEMP=./temp/sync
diff --git a/features/cmd/step_definitions/all.os b/features/cmd/step_definitions/all.os
index 89e6bfe8..ca96437c 100644
--- a/features/cmd/step_definitions/all.os
+++ b/features/cmd/step_definitions/all.os
@@ -1,5 +1,5 @@
#Использовать tempfiles
-#Использовать yaml
+#Использовать oscript-yaml
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
@@ -99,8 +99,8 @@
ТекстYaml = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
- ПарсерYAml = Новый ПарсерYaml();
- Результа = ПарсерYAml.ПрочитатьYaml(ТекстYaml);
+ Парсер = Новый ПарсерYaml();
+ Результа = Парсер.ПрочитатьYaml(ТекстYaml);
ТекстJson = ОБъектВJson(Результа);
diff --git a/features/cmd/v8path.feature b/features/cmd/v8path.feature
index 80016926..a50a1c91 100644
--- a/features/cmd/v8path.feature
+++ b/features/cmd/v8path.feature
@@ -29,4 +29,20 @@
Тогда Вывод команды "gitsync" содержит "Используется путь к платформе 1С"
И Вывод команды "gitsync" содержит "Завершена синхронизации с git"
И Вывод команды "gitsync" не содержит "Внешнее исключение"
- И Код возврата команды "gitsync" равен 0
\ No newline at end of file
+ И Код возврата команды "gitsync" равен 0
+
+Сценарий: Синхронизация хранилища с отдельным путем к платформе для выгрузки
+ Допустим Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория"
+ И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория"
+ И Я добавляю параметр "--v8-path" для команды "gitsync" из переменной "ПутьКПлатформе1С"
+ И Я добавляю параметр "--export-v8-path" для команды "gitsync" из переменной "ПутьКПлатформе1С"
+ И Я добавляю параметр "-v" для команды "gitsync"
+ И Я добавляю параметр "sync" для команды "gitsync"
+ И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С"
+ И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников"
+ Когда Я выполняю команду "gitsync"
+ Тогда Вывод команды "gitsync" содержит "Для работы с хранилищем используется путь к платформе 1С"
+ И Вывод команды "gitsync" содержит "Для выгрузки используется путь к платформе 1С"
+ И Вывод команды "gitsync" содержит "Завершена синхронизации с git"
+ И Вывод команды "gitsync" не содержит "Внешнее исключение"
+ И Код возврата команды "gitsync" равен 0
diff --git a/features/core/step_definitions/shared.os b/features/core/step_definitions/shared.os
index 24349afa..f7a8b08b 100644
--- a/features/core/step_definitions/shared.os
+++ b/features/core/step_definitions/shared.os
@@ -41,6 +41,7 @@
ВсеШаги.Добавить("ЯСоздаюНовыйОбъектМенеджерсинхронизации");
ВсеШаги.Добавить("ЯУстанавливаюАвторизациюВХранилищеПользователяСПаролем");
ВсеШаги.Добавить("ЯУстанавливаюВерсиюПлатформы");
+ ВсеШаги.Добавить("ЯУстанавливаюВерсиюПлатформыВыгрузки");
ВсеШаги.Добавить("ЯВыполняюСинхронизацию");
ВсеШаги.Добавить("ВыводЛогаСодержит");
@@ -254,6 +255,14 @@
КонецПроцедуры
+//Я устанавливаю версию платформы выгрузки "8.3"
+Процедура ЯУстанавливаюВерсиюПлатформыВыгрузки(Знач ВерсияПлатформы) Экспорт
+
+ МенеджерСинхронизации = БДД.ПолучитьИзКонтекста("МенеджерСинхронизации");
+ МенеджерСинхронизации.ВерсияПлатформыВыгрузки(ВерсияПлатформы);
+
+КонецПроцедуры
+
//Я выполняю синхронизацию
Процедура ЯВыполняюСинхронизацию() Экспорт
diff --git a/features/core/sync.core.feature b/features/core/sync.core.feature
index 1db902cf..cfc6ebb9 100644
--- a/features/core/sync.core.feature
+++ b/features/core/sync.core.feature
@@ -23,6 +23,15 @@
Когда Я выполняю синхронизацию
Тогда Вывод лога содержит "Завершена синхронизации с git"
+Сценарий: Синхронизация хранилища с отдельной версией платформы для выгрузки
+ Допустим Я устанавливаю авторизацию в хранилище пользователя "Администратор" с паролем ""
+ И Я устанавливаю версию платформы "8.3"
+ И Я устанавливаю версию платформы выгрузки "8.3"
+ Когда Я выполняю синхронизацию
+ Тогда Вывод лога содержит "Для работы с хранилищем используется платформа 1С версии <8.3>"
+ И Вывод лога содержит "Для выгрузки используется платформа 1С версии <8.3>"
+ И Вывод лога содержит "Завершена синхронизации с git"
+
Сценарий: Cинхронизация хранилища с git-репозиторием c плагинами
Допустим Я устанавливаю авторизацию в хранилище пользователя "Администратор" с паролем ""
И Я устанавливаю версию платформы "8.3"
diff --git a/packagedef b/packagedef
index f17a8d2f..5c47c89b 100644
--- a/packagedef
+++ b/packagedef
@@ -2,15 +2,19 @@
ПутьКМодулюПараметрыСистемы = ОбъединитьПути(ТекущийСценарий().Каталог, "src/core", "Модули", "ПараметрыСистемы.os");
// специальный фрагмент для правильной компиляции packagedef при первых действиях во время установки пакета
+ВерсияПродукта = "";
+ВерсияСреды = "";
+
ФайлМодульПараметрыСистемы = Новый Файл(ПутьКМодулюПараметрыСистемы);
Если ФайлМодульПараметрыСистемы.Существует() Тогда
МодульПараметрыСистемы = ЗагрузитьСценарий(ПутьКМодулюПараметрыСистемы);
ВерсияПродукта = МодульПараметрыСистемы.ВерсияПродукта();
+ ВерсияСреды = МодульПараметрыСистемы.ВерсияСреды();
КонецЕсли;
Описание.Имя("gitsync")
.Версия(ВерсияПродукта)
- .ВерсияСреды("1.9.2")
+ .ВерсияСреды(ВерсияСреды)
.ЗависитОт("logos", "1.7.1")
.ЗависитОт("tempfiles", "1.1.1")
.ЗависитОт("v8runner", "1.12.0")
@@ -25,10 +29,11 @@
.ЗависитОт("opm", "1.6.5")
.ЗависитОт("cli", "0.11.0")
.ЗависитОт("cli-selector", "0.5.0")
- .ЗависитОт("configor", "0.10.0")
+ .ЗависитОт("configor", "0.12.1")
.РазработкаЗависитОт("1bdd", "1.15.1")
.РазработкаЗависитОт("1testrunner", "1.9.0")
.РазработкаЗависитОт("asserts", "1.6.1")
+ .РазработкаЗависитОт("oscript-yaml", "0.3.0")
.РазработкаЗависитОт("coverage", "0.7.0")
.ВключитьФайл("src")
.ВключитьФайл("docs")
diff --git a/src/cmd/gitsync.os b/src/cmd/gitsync.os
index 06fcc7ba..dabb47f1 100644
--- a/src/cmd/gitsync.os
+++ b/src/cmd/gitsync.os
@@ -19,6 +19,10 @@
.ВОкружении("GITSYNC_V8VERSION");
Приложение.Опция("v8-path", "", "путь к исполняемому файлу платформы 1С (Например, /opt/1C/v8.3/x86_64/1cv8)")
.ВОкружении("GITSYNC_V8_PATH");
+ Приложение.Опция("export-v8version", "", "маска версии платформы 1С для выгрузки конфигурации в файлы")
+ .ВОкружении("GITSYNC_EXPORT_V8VERSION");
+ Приложение.Опция("export-v8-path", "", "путь к исполняемому файлу платформы 1С для выгрузки конфигурации в файлы")
+ .ВОкружении("GITSYNC_EXPORT_V8_PATH");
Приложение.Опция("v verbose", Ложь, "вывод отладочной информации в процессе выполнения")
.Флаговый()
@@ -74,6 +78,8 @@
ВерсияПлатформы = Команда.ЗначениеОпции("v8version");
ПутьКПлатформе = Команда.ЗначениеОпции("v8-path");
+ ВерсияПлатформыВыгрузки = Команда.ЗначениеОпции("export-v8version");
+ ПутьКПлатформеВыгрузки = Команда.ЗначениеОпции("export-v8-path");
ВыводДополнительнойИнформации = Команда.ЗначениеОпции("verbose");
ПутьКГит = Команда.ЗначениеОпции("git-path");
ВременныйКаталогРаботы = Команда.ЗначениеОпции("tempdir");
@@ -84,6 +90,8 @@
Лог.Отладка("Устанавливаю общие параметры");
ПараметрыПриложения.УстановитьВерсиюПлатформы(ВерсияПлатформы);
ПараметрыПриложения.УстановитьПутьКПлатформе(ПутьКПлатформе);
+ ПараметрыПриложения.УстановитьВерсиюПлатформыВыгрузки(ВерсияПлатформыВыгрузки);
+ ПараметрыПриложения.УстановитьПутьКПлатформеВыгрузки(ПутьКПлатформеВыгрузки);
ПараметрыПриложения.УстановитьПутьКГит(ПутьКГит);
ПараметрыПриложения.УстановитьДоменПочты(ДоменПочты);
ПараметрыПриложения.УстановитьВременныйКаталог(ВременныйКаталогРаботы);
diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os"
index e89bd964..46921db8 100644
--- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os"
+++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os"
@@ -71,6 +71,8 @@
Распаковщик = Новый МенеджерСинхронизации();
Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы)
.ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе)
+ .ВерсияПлатформыВыгрузки(ОбщиеПараметры.ВерсияПлатформыВыгрузки)
+ .ПутьКПлатформеВыгрузки(ОбщиеПараметры.ПутьКПлатформеВыгрузки)
.ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты)
.ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит)
.УстановитьКонтекст(СтрокаСоединенияИБ, ПользовательИБ, ПарольПользователяИБ)
diff --git "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os"
index 2566bef8..1cd0f843 100644
--- "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os"
+++ "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os"
@@ -20,6 +20,8 @@
ОбщиеПараметры = Новый Структура();
ОбщиеПараметры.Вставить("ВерсияПлатформы", "8.3");
ОбщиеПараметры.Вставить("ПутьКПлатформе", "");
+ ОбщиеПараметры.Вставить("ВерсияПлатформыВыгрузки", "");
+ ОбщиеПараметры.Вставить("ПутьКПлатформеВыгрузки", "");
ОбщиеПараметры.Вставить("ДоменПочты", "localhost");
ОбщиеПараметры.Вставить("ПутьКГит", "");
@@ -124,6 +126,10 @@
ОбщиеПараметры.Вставить("ВерсияПлатформы", ВерсияПлатформы);
КонецПроцедуры
+Процедура УстановитьВерсиюПлатформыВыгрузки(Знач ВерсияПлатформыВыгрузки) Экспорт
+ ОбщиеПараметры.Вставить("ВерсияПлатформыВыгрузки", ВерсияПлатформыВыгрузки);
+КонецПроцедуры
+
Процедура УстановитьПутьКГит(Знач ПутьКГит) Экспорт
ОбщиеПараметры.Вставить("ПутьКГит", ПутьКГит);
КонецПроцедуры
@@ -132,6 +138,10 @@
ОбщиеПараметры.Вставить("ПутьКПлатформе", ПутьКПлатформе);
КонецПроцедуры
+Процедура УстановитьПутьКПлатформеВыгрузки(Знач ПутьКПлатформеВыгрузки) Экспорт
+ ОбщиеПараметры.Вставить("ПутьКПлатформеВыгрузки", ПутьКПлатформеВыгрузки);
+КонецПроцедуры
+
Процедура УстановитьКаталогПлагинов(Знач ПутьККаталогуПлагинов) Экспорт
ЛогПриложения.Отладка("Устанавливаю каталог плагинов <%1>", ПутьККаталогуПлагинов);
diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os"
index 76fb6ce1..3d95ca60 100644
--- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os"
+++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os"
@@ -139,7 +139,7 @@
КодВозврата = Команда.Исполнить();
Если КодВозврата <> 0 Тогда
- ВызватьИсключение Команда.ПолучитьВыводКоманды();
+ ВызватьИсключение Команда.ПолучитьВывод();
КонецЕсли;
КонецПроцедуры
@@ -183,6 +183,13 @@
КаталогЗависимостей = ПолучитьЗначениеСистемнойНастройки("lib.system");
КонецЕсли;
+ // Относительные пути системных настроек заданы относительно каталога программы (как в opm),
+ // а не текущего каталога, который может быть изменен.
+ // Абсолютный путь ОбъединитьПути возвращает без изменений.
+ // lib.system=lib, каталог программы /opt/oscript/bin -> /opt/oscript/bin/lib
+ // lib.system=/usr/share/oscript/lib -> /usr/share/oscript/lib
+ КаталогЗависимостей = ОбъединитьПути(КаталогПрограммы(), КаталогЗависимостей);
+
КонецПроцедуры
#КонецОбласти
diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os"
index db64f431..8f603f01 100644
--- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os"
+++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os"
@@ -35,6 +35,8 @@
Перем ДоменПочтыДляGitПоУмолчанию Экспорт; // Строка, домен пользователей по умолчанию
Перем ТекущаяВерсияПлатформы Экспорт; // Строка, используемая версия 1С.Предприятие
Перем ТекущийПутьКПлатформе Экспорт; // Строка, путь к исполняемому файлу платформы 1С.Предприятие
+Перем ТекущаяВерсияПлатформыВыгрузки Экспорт; // Строка, используемая версия 1С.Предприятие для выгрузки в файлы
+Перем ТекущийПутьКПлатформеВыгрузки Экспорт; // Строка, путь к платформе 1С.Предприятие для выгрузки в файлы
#Область Публичное_API
@@ -211,6 +213,36 @@
КонецФункции
+// Устанавливает версию платформы 1С для выгрузки конфигурации в файлы
+//
+// Параметры:
+// НоваяВерсияПлатформы - Строка - версия платформы 1С, используемой для выгрузки в файлы
+//
+// Возвращаемое значение:
+// Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации>
+//
+Функция ВерсияПлатформыВыгрузки(Знач НоваяВерсияПлатформы) Экспорт
+
+ ТекущаяВерсияПлатформыВыгрузки = НоваяВерсияПлатформы;
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+// Устанавливает путь к платформе 1С для выгрузки конфигурации в файлы
+//
+// Параметры:
+// НовыйПутьКПлатформе - Строка - путь к исполняемому файлу платформы 1С.Предприятие
+//
+// Возвращаемое значение:
+// Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации>
+//
+Функция ПутьКПлатформеВыгрузки(Знач НовыйПутьКПлатформе) Экспорт
+
+ ТекущийПутьКПлатформеВыгрузки = НовыйПутьКПлатформе;
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
// Устанавливает путь к исполняемому файлу git
//
// Параметры:
@@ -383,14 +415,18 @@
КаталогРабочейКопии,
ПутьКХранилищу,
НомерВерсии);
-
+
+ ПрименитьПлатформуХранилищаККонфигуратору(Конфигуратор);
+
ОбработчикПодписок.ПередЗагрузкойВерсииХранилищаКонфигурации(Конфигуратор,
КаталогРабочейКопии,
ПутьКХранилищу,
НомерВерсии);
ЗагрузитьВерсиюХранилищаВКонфигурацию(Конфигуратор, КаталогРабочейКопии, ПутьКХранилищу, НомерВерсии);
-
+
+ ПрименитьПлатформуВыгрузкиККонфигуратору(Конфигуратор);
+
КаталогВыгрузки = ВременныеФайлы.СоздатьКаталог();
Лог.Отладка("Каталог выгрузки <%1> для версии <%2>", КаталогВыгрузки, НомерВерсии);
@@ -762,6 +798,53 @@
КонецФункции
+Процедура ПрименитьПлатформуХранилищаККонфигуратору(Знач Конфигуратор)
+
+ Если ЗначениеЗаполнено(ТекущийПутьКПлатформе) Тогда
+
+ Если Не ФС.ФайлСуществует(ТекущийПутьКПлатформе) Тогда
+
+ ВызватьИсключение СтрШаблон("Исполняемый файл платформы 1С <%1> не найден", ТекущийПутьКПлатформе);
+
+ КонецЕсли;
+
+ Конфигуратор.ПутьКПлатформе1С(ТекущийПутьКПлатформе);
+ Лог.Информация("Для работы с хранилищем используется путь к платформе 1С <%1>", ТекущийПутьКПлатформе);
+ Возврат;
+
+ КонецЕсли;
+
+ Конфигуратор.ИспользоватьВерсиюПлатформы(ТекущаяВерсияПлатформы);
+ Лог.Информация("Для работы с хранилищем используется платформа 1С версии <%1>", ТекущаяВерсияПлатформы);
+
+КонецПроцедуры
+
+Процедура ПрименитьПлатформуВыгрузкиККонфигуратору(Знач Конфигуратор)
+
+ Если ЗначениеЗаполнено(ТекущийПутьКПлатформеВыгрузки) Тогда
+
+ Если Не ФС.ФайлСуществует(ТекущийПутьКПлатформеВыгрузки) Тогда
+
+ ВызватьИсключение СтрШаблон("Исполняемый файл платформы 1С для выгрузки <%1> не найден",
+ ТекущийПутьКПлатформеВыгрузки);
+
+ КонецЕсли;
+
+ Конфигуратор.ПутьКПлатформе1С(ТекущийПутьКПлатформеВыгрузки);
+ Лог.Информация("Для выгрузки используется путь к платформе 1С <%1>", ТекущийПутьКПлатформеВыгрузки);
+ Возврат;
+
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(ТекущаяВерсияПлатформыВыгрузки) Тогда
+
+ Конфигуратор.ИспользоватьВерсиюПлатформы(ТекущаяВерсияПлатформыВыгрузки);
+ Лог.Информация("Для выгрузки используется платформа 1С версии <%1>", ТекущаяВерсияПлатформыВыгрузки);
+
+ КонецЕсли;
+
+КонецПроцедуры
+
#КонецОбласти
#Область Функциональность_работы_с_ГитРепозиторием
@@ -1632,6 +1715,8 @@
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;
ТекущаяВерсияПлатформы = "8.3";
+ ТекущаяВерсияПлатформыВыгрузки = "";
+ ТекущийПутьКПлатформеВыгрузки = "";
КонтекстВыполнения = Новый Структура("СтрокаСоединения, Пользователь, Пароль", "", "", "");
diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os"
index db0de629..c2e53424 100644
--- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os"
+++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os"
@@ -38,10 +38,34 @@
//
Функция ВерсияПродукта() Экспорт
- Возврат "3.8.0";
+ Возврат "3.9.0";
КонецФункции // ВерсияПродукта()
+// ВерсияСреды
+// Возвращает версию среды oscript
+//
+// Возвращаемое значение:
+// Строка - Значение версии среды oscript
+//
+Функция ВерсияСреды() Экспорт
+
+ Возврат "2.2.1";
+
+КонецФункции // ВерсияСреды()
+
+// ВерсияВстроенныхПлагинов
+// Возвращает версию встроенных плагинов (gitsync-plugins)
+//
+// Возвращаемое значение:
+// Строка - Значение версии встроенных плагинов (gitsync-plugins)
+//
+Функция ВерсияВстроенныхПлагинов() Экспорт
+
+ Возврат "v2.1.0";
+
+КонецФункции // ВерсияВстроенныхПлагинов()
+
Процедура ПриРегистрацииКомандПриложения(Знач КлассыРеализацииКоманд) Экспорт
КлассыРеализацииКоманд["help"] = "КомандаСправкаПоПараметрам";
diff --git a/tasks/get-plugins.os b/tasks/get-plugins.os
index f92ba36c..7581913f 100644
--- a/tasks/get-plugins.os
+++ b/tasks/get-plugins.os
@@ -80,7 +80,7 @@
Лог = Логирование.ПолучитьЛог("task.install-opm");
Если АргументыКоманднойСтроки.Количество() = 0 Тогда
- УказательКоммита = "v2.0.3";
+ УказательКоммита = "v2.1.0";
Иначе
УказательКоммита = АргументыКоманднойСтроки[0];
КонецЕсли;