uVersion
Русский
Скачать →

Wiki

Распространение

Копирование файлов (плагины, общий контент) из исходного репозитория в целевой по шаблонам путей. Публикация, переотображение, пропуск блокировок.

Введение

Распространение копирует файлы (плагин, пакет общего контента) из исходного репозитория в целевой, ограничиваясь шаблонами путей. Оно создаёт новые ревизии в целевом репозитории, поэтому обычная инкрементная синхронизация распространяет контент клиентам. Это способ поделиться одним и тем же плагином между несколькими проектами без ручного копирования.

Доступ и роли

Модель доступа, отличная от других вкладок Распространение не защищено так же, как другие вкладки. Оно требует возможности manage_rules, которой обладают admin и lead в масштабе всего сервера. project_admin, не обладающий никакой возможностью, доступа не имеет. А lead может связать любой репозиторий с любым другим.

Создание связи

Форма New Link: Source Repository, Target Repository и область Path Patterns.
  1. Вкладка DistributionNew Link.
  2. Source Repository: репозиторий, из которого берутся файлы.
  3. Target Repository: репозиторий назначения (выбранный источник убирается из списка; источник и цель не могут совпадать).
  4. Path Patterns: один шаблон на строку (напр. Plugins/MyPlugin/, Content/SharedAssets/). Требуется хотя бы один.
  5. Подтвердите с помощью Create Link.

Связь, уже существующая между теми же двумя репозиториями, отклоняется (конфликт). Каждая строка показывает source → cible, её шаблоны, кто её создал и дату последней публикации.

Шаблоны путей

Шаблон соответствует пути, если он встречается где-либо внутри него (поиск по типу «содержит»). Поэтому шаблон Plugins/uVersion соответствует DefaultProject/Plugins/uVersion/Source/Foo.cpp независимо от префикса проекта. Завершающий слеш ничего не меняет.

Публикация

Список ожидающих файлов (new/modified/locked) и баннер со сводкой публикации.

Три действия для каждой связи:

  • 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. Целевой префикс выводится из существующего файла в целевом репозитории (обработка репозиториев с подпапкой проекта или без неё).

Нумерация ревизий Распространяемые ревизии используют глобальный счётчик выше текущей ревизии цели, чтобы инкрементная синхронизация их подхватила. Поэтому история по файлу может «прыгать» (напр. rev 1, затем rev 200): это косметика. Чанки общие (без дублирования данных, лишь увеличение счётчика ссылок).

Частые ловушки

«Publish» неактивна (серая)

Связь неактивна. Сначала включите её. Публикация неактивной связи возвращает явную ошибку.

Файл не обновляется в целевом репозитории

Либо он заблокирован на стороне цели (тогда он пропускается и учитывается как «locked»), либо его содержимое уже идентично (учитывается как «unchanged»). Посмотрите сводку публикации и список pending files.

project_admin не видит вкладку

Это сделано намеренно: распространение требует manage_rules (admin или lead). project_admin не имеет доступа, даже к своим собственным репозиториям.