Wiki
Распространение
Копирование файлов (плагины, общий контент) из исходного репозитория в целевой по шаблонам путей. Публикация, переотображение, пропуск блокировок.
Введение
Распространение копирует файлы (плагин, пакет общего контента) из исходного репозитория в целевой, ограничиваясь шаблонами путей. Оно создаёт новые ревизии в целевом репозитории, поэтому обычная инкрементная синхронизация распространяет контент клиентам. Это способ поделиться одним и тем же плагином между несколькими проектами без ручного копирования.
Доступ и роли
manage_rules, которой обладают admin и lead в масштабе всего сервера.
project_admin, не обладающий никакой возможностью, доступа не имеет. А
lead может связать любой репозиторий с любым другим.
Создание связи
- Вкладка Distribution → New Link.
- Source Repository: репозиторий, из которого берутся файлы.
- Target Repository: репозиторий назначения (выбранный источник убирается из списка; источник и цель не могут совпадать).
- Path Patterns: один шаблон на строку (напр.
Plugins/MyPlugin/,Content/SharedAssets/). Требуется хотя бы один. - Подтвердите с помощью Create Link.
Связь, уже существующая между теми же двумя репозиториями, отклоняется (конфликт). Каждая строка показывает
source → cible, её шаблоны, кто её создал и дату последней публикации.
Шаблоны путей
Шаблон соответствует пути, если он встречается где-либо внутри него (поиск по типу «содержит»).
Поэтому шаблон Plugins/uVersion соответствует
DefaultProject/Plugins/uVersion/Source/Foo.cpp независимо от префикса проекта. Завершающий слеш ничего
не меняет.
Публикация
Три действия для каждой связи:
- Show pending files (значок файла): перечисляет отличающиеся файлы, помеченные как new, modified или locked, с их ревизией.
- Publish history (часы): последние 50 публикаций (сколько обновлено / пропущено, кто, когда).
- Publish (отправка): выполняет копирование. Баннер подытоживает: «Найдено X исходных файлов, обновлено Y, пропущено Z (заблокированы), без изменений W». Отключено, если связь неактивна.
Заблокированный в целевом репозитории файл пропускается, а не перезаписывается. Файл с идентичным содержимым (тот же хеш) считается неизменным и пропускается. Публикация атомарна (одна транзакция).
Вы также можете включить / отключить или удалить связь.
Переотображение и ревизии
Путь переписывается под цель: uVersion убирает всё, что предшествует совпавшему шаблону, затем
добавляет префикс, обнаруженный в целевом репозитории. Пример: источник
DefaultProject/Plugins/uVersion/foo.cpp, шаблон Plugins/uVersion, целевой префикс
CineDroneStudio/ → CineDroneStudio/Plugins/uVersion/foo.cpp. Целевой префикс выводится из
существующего файла в целевом репозитории (обработка репозиториев с подпапкой проекта или без неё).
Частые ловушки
«Publish» неактивна (серая)
Связь неактивна. Сначала включите её. Публикация неактивной связи возвращает явную ошибку.
Файл не обновляется в целевом репозитории
Либо он заблокирован на стороне цели (тогда он пропускается и учитывается как «locked»), либо его содержимое уже идентично (учитывается как «unchanged»). Посмотрите сводку публикации и список pending files.
project_admin не видит вкладку
Это сделано намеренно: распространение требует manage_rules (admin или lead). project_admin не имеет
доступа, даже к своим собственным репозиториям.