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

Wiki

Загрузить существующий проект

Поставить под uVersion проект Unreal, уже находящийся на вашем диске: инициализировать папку на месте, проверить исключения, затем checkin со вкладки Pending. С ловушками первой загрузки.

У вас есть проект Unreal на диске, и вы хотите поставить его под uVersion. Эта страница охватывает именно этот случай: ваши файлы не перемещаются, папка связывается с сервером на месте, затем загружается.

Если же вы, напротив, начинаете с пустого репозитория, уже созданного на сервере, то вам нужен клон, а не эта страница.

Перед началом

Закройте редактор Unreal В конце загрузки загруженные файлы снова становятся доступными только для чтения на диске. Но плагин uVersion при открытии редактора автоматически резервирует любой ассет, оставшийся доступным для записи: если редактор открыт во время операции, он тут же снова берёт блокировки на то, что вы только что загрузили. Поскольку блокировки никогда не истекают сами по себе, вы удерживали бы их, сами того не зная.

Проверьте также, что папка, которую вы собираетесь объявить, действительно является нужным корнем репозитория. Файл .uproject должен находиться не более чем в трёх уровнях под этим корнем, иначе клиент не распознает проект как проект Unreal и панель Unreal останется невидимой.

Инициализировать папку

1. Открыть окно Open Repository

На боковой панели откройте Workspace, затем нажмите Open Repository (или «+» на панели вкладок). Открывающееся окно служит сначала для клонирования существующего репозитория: это не то, что вы хотите здесь. Прокрутите до самого низа, под списком репозиториев и под Open Local Repository..., и нажмите New Repository from a Project Folder...

Не видите эту кнопку? Она появляется только для роли admin, потому что создаёт репозиторий на сервере. См. Создать репозиторий.
Нижняя часть окна Open Repository: флажок Download files after clone, кнопка Open Local Repository и под ней кнопка New Repository from a Project Folder.

2. Выбрать корень проекта

Открывается выбор папки с заголовком Select your project folder to create a new repository. Выберите корень вашего проекта, тот, что содержит .uproject, или папку, которая его содержит. Ничего не копируется и не перемещается: эта папка останется там, где она есть.

3. Назвать репозиторий и создать

Форма отображается в самом окне, на месте кнопки, которую вы только что нажали, а не в новом диалоговом окне. Она напоминает выбранный путь и предлагает поле Repository name, предзаполненное именем папки. Скорректируйте его при необходимости, затем нажмите Create & Open. Кнопка остаётся неактивной, пока имя пустое, и это имя должно быть уникальным на всём сервере.

Форма создания на месте, в окне Open Repository: путь выбранной папки в одной строке, поле Repository name, предзаполненное именем папки, кнопки Create and Open и Cancel.

Клиент тогда делает четыре вещи, и ничего больше:

  • он создаёт репозиторий на сервере;
  • он записывает папку .uversion/ в ваш проект, которая запоминает репозиторий, адрес сервера и учётную запись владельца рабочей области;
  • он записывает файл .uversionignore, только если такого ещё не существует;
  • он ничего не скачивает и не трогает ни один из ваших файлов.
Эта папка становится вашей Учётная запись, инициализирующая папку, становится её владельцем, и именно под этой личностью командная строка будет затем действовать в этой папке. Коллега не должен копировать вашу папку: он должен клонировать репозиторий у себя, иначе получит сообщение This workspace belongs to ....

Проверить исключения

Сейчас подходящий момент, и это гораздо проще сейчас, чем потом. Откройте файл .uversionignore в корне: он перечисляет то, что никогда не будет загружено. Шаблон, заданный по умолчанию, уже отбрасывает то, что проект Unreal воссоздаёт сам, в частности Binaries/, Build/, DerivedDataCache/, Intermediate/, Saved/ и Packages/, а также файлы проекта сред разработки.

Два правила изменить нельзя, и лучше их знать:

  • Plugins/uVersion всегда исключён. Плагин Unreal никогда не версионируется: каждая машина устанавливает версию, соответствующую ЕЁ движку, через настольный клиент. То, что его нет в репозитории, нормально.
  • Путь, содержащий папку с именем ровно ThirdParty, никогда не исключается, какое бы правило вы ни написали. Ваши сторонние библиотеки поэтому всегда уходят.

Поскольку Packages/ исключён, упакованная сборка никогда не попадёт в репозиторий: она распространяется через функцию публикации сборок, а не через версионирование.

Загрузить

4. Увидеть состояние на вкладке Files

Весь ваш проект появляется там со статусом untracked: есть у вас, ещё нет на сервере. Это нормальное состояние папки, которая только что была инициализирована. Значок счётчика над деревом резюмирует то же самое (N local only), столбец Rev показывает v0 повсюду, а вкладка Pending уже несёт значок с тем же числом: клиент сам обнаружил ваши файлы, ничего не нужно «добавлять» вручную.

Вкладка Files сразу после инициализации: значок N local only над деревом, статус untracked в каждой строке, столбец Rev на v0 и значок того же числа на вкладке Pending.

5. Открыть вкладку Pending

Все ваши файлы уже там, помечены add, разложены в список изменений Default. Левый столбец показывает дерево того, что уйдёт, правая панель — плоский список с Diff и Remove в каждой строке. Убирайте здесь только то, что никогда не хотите версионировать: правильный ответ на «этой папке здесь нечего делать» — это правило в .uversionignore, а не Remove по строкам одну за одной.

Вкладка Pending при первой загрузке: дерево файлов слева, список изменений Default справа с каждым файлом, помеченным add, кнопки Diff и Remove в каждой строке, область Describe your changes и кнопка Checkin all.

6. Описать, затем Checkin all

Напишите сообщение в Describe your changes...: оно обязательно, кнопка Checkin all остаётся неактивной, пока область пуста. «Первая загрузка проекта» вполне подходит. Затем нажмите Checkin all (N).

Панель списка изменений Default: область Describe your changes, заполненная сообщением о первой загрузке, кнопка Checkin all активна с числом файлов.
Загрузка резервирует для вас Checkin сам ставит блокировки на файлы, которые загружает, затем освобождает их после того, как ревизия проверена. При первой загрузке это без последствий, вы одни на этих файлах. В уже общем репозитории файл, зарезервированный кем-то другим, приводит к сбою загрузки: см. ловушки ниже.

Затем загрузка идёт сама собой, в несколько фаз, отображаемых в строке заголовка: разбиение, проверка того, чем сервер уже владеет, передача, затем проверка. В это время вы можете сменить вкладку, прогресс следует за вами. Прерванная передача возобновляется с того места, где была, а не начинает всё заново. В конце загруженные файлы становятся доступными только для чтения: это признак того, что они на сервере и что их придётся зарезервировать, чтобы изменить.

Ловушки первой загрузки

Я ищу кнопку загрузки в Files

Её там нет. Вкладка Files показывает состояние и служит для разовых действий; загрузка делается со вкладки Pending, где всякий неотслеживаемый или изменённый файл появляется сам собой. Если Pending показывает значок, значит есть что загрузить.

«Failed to acquire locks for N file(s)»

Один или несколько файлов уже зарезервированы кем-то другим, и вся загрузка отменяется, а не только затронутые файлы. Посмотрите вкладку ожидающих резерваций, чтобы узнать, кто их держит, и попросите его освободить их.

Выбранный мной файл ушёл как удаление

Путь, который загружается, но отсутствует на диске в момент передачи, толкуется как удаление. Это происходит, если вы перемещаете или переименовываете файлы между выбором и загрузкой. Избегайте работы в папке во время операции.

«This folder is already a uVersion repository»

Папка уже содержит .uversion/. Используйте Open Local Repository... вместо того, чтобы создавать её заново.

Папка отклонена

Клиент намеренно отклоняет некоторые расположения: корень диска, системную папку, папку автозапуска или относительный путь. Выберите обычную рабочую папку.

А дальше