# Скрипты для переноса изменений в документации

## Как использовать

### Первичная инициализация

```bash
./yql/essentials/docs/scripts/doc_upgrade_arc.sh <dst_path>/<src.cfg> <doc_source_dir>
```

Создает файл `<src.cfg>` (название может быть произвольным) в директории `<dst_path>` и прописывает в него текущую ревизию репозитория и путь-источник. Одна и таже документация может наполняться из разных источников с разными базовыми ревизиями. Для каждого такого источника нужно создать свой файл.


Пример:

```bash
./yql/essentials/docs/scripts/doc_upgrade_arc.sh yql/docs_yfm/docs/ru/essentials.base_rev yql/essentials/docs/ru
```

В примере выше путем-источником для документации в yql/docs_yfm/docs/ru будет yql/essentials/docs/ru.

Аналогичный скрипт для git-репозитория находится по пути `yql/essentials/docs/scripts/doc_upgrade_git.sh`

### Обновление документации

```bash
./yql/essentials/docs/scripts/doc_upgrade_arc.sh <dst_path>/<src.cfg>
```

Скрипт последовательно выполняет следующие действия:
1. Читает базовую ревизию (rSRC) и путь-источник из `<dst_path>/<src.cfg>`
2. Строит diff для ревизии rSRC между `<dst_path>` и путем-источником
3. На место `<dst_path>` копируется содержимое из пути-источника с текущей ревизией
4. На `<dst_path>` накладывается патч из п.2
5. В `<dst_path>/<src.cfg>` обновляется ревизия на текущую

В итоге, документация получает все изменения из пути-источника, произошедшие с момента последнего обновления. В случае конфликтов, они остаются в исходных файлах в виде конфликт-маркеров (`>>>>`/`<<<<`) и должны быть порезолвлены вручную.

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

Скрипт не умеет переносить бинарные файлы (картинки и т.д.). Их нужно переносить пока вручную