PR с изменениями движка

В движке всё ещё есть много областей для улучшения, поэтому неизбежно, что некоторые изменения контента потребуют также изменений в движке.

Работа в подмодуле

Движок не работает сам по себе. Без такой игры, как SS14, предоставляющей контент, движок ничего не будет делать. Чтобы иметь возможность тестировать и работать над своими изменениями, таким образом, рекомендуется работать напрямую с подмодулем движка внутри вашего репозитория SS14.

Если вы не знакомы с Git-подмодулями: Git-подмодули - это по сути просто Git-репозитории, отслеживаемые внутри других Git-репозиториев. Например, у SS14 есть подмодуль, указывающий на Robust.

Поскольку подмодуль всё ещё является полноценным Git-репозиторием, вы можете работать из него как из любого другого репозитория: делать коммиты, ветки, push, pull и т. д… Родительский репозиторий отслеживает текущий извлечённый коммит дочернего подмодуля и не интересуется ничем другим, происходящим в подмодуле.

Сначала вам нужно форкнуть движок. Затем вы можете изменить ваши git remotes внутри подмодуля, чтобы можно было работать против вашего форка:

# Перейти на ветку master
git switch master
# Переименовать "origin" (remote по умолчанию, отслеживающий space-wizards) в "upstream".
git remote rename origin upstream
# Добавить ваш собственный форк как remote "origin".
git remote add origin https://github.com/<your username>/RobustToolbox.git
# Master всё ещё будет отслеживать upstream (так что вы можете просто запустить git pull на нём)
# и любые ветки, которые вы отправите в origin, попадут в ваш форк.

Во-вторых, вам нужно отключить автообновление подмодуля. По умолчанию система сборки автоматически обновляет подмодуль (чтобы людям, которым не важно изменять движок, не приходилось постоянно вручную запускать git submodule update). Однако это мешает вам, если вы пытаетесь вносить изменения в движок, так как оно будет постоянно сбрасывать вас на master! Чтобы отключить эту, возможно, особенность, поместите пустой файл с именем “DISABLE_SUBMODULE_AUTOUPDATE” в папку BuildChecker/ в корне проекта SS14 (не внутри RobustToolbox/). Также убедитесь, что у него нет .txt в конце или чего-то подобного.

Создание PR

Создавая PR, вы захотите сделать отдельный PR в репозитории движка и в основном репозитории.

Не коммитьте фактически изменение извлечённого коммита подмодуля в вашем основном PR с контентом, вам следует просто оставить его незакоммиченным, пока вы его разрабатываете. Это постоянная причина конфликтов слияния, и мы разберёмся с этим, когда будем делать слияние.

Моя сборка падает!

Чтобы система сборки использовала ваши изменения движка при сборке вашего основного PR, вам нужно поместить “Requires ” в сообщение PR.

Например, если ваш PR движка - #1234, то сообщение вашего основного PR было бы:

Это мой PR, который требует изменения движка.

  * Что-то сломал
  * Что-то починил

Requires https://github.com/space-wizards/RobustToolbox/pull/1583

Поддерживаемые форматы можно найти на https://github.com/space-wizards/submodule-dependency

Рекомендации по изменениям движка

Старайтесь избегать любых ломающих изменений, которые делают будущие версии движка несовместимыми со старыми версиями игры. Это не огромная проблема из-за того, как мы версионируем сборки движка, но это всё же вызывает очень неловкий танец обновления, когда мы пытаемся обновить подмодуль в контенте. Такие подходы, как пометка чего-либо [Obsolete], гораздо предпочтительнее полного удаления чего-либо, когда это больше не нужно.

Subpages