Как обновить Unity во всех ветках проекта - PullRequest
0 голосов
/ 26 апреля 2018

Я работаю над проектом Unity. Мы используем Git и имеем несколько веток. Каков наилучший способ обновить проект до новой версии Unity во всех ветках с минимальными хлопотами?

Примечание. Я не хочу объединять все ветви и не хочу обновлять каждую ветку отдельно.

Ответы [ 3 ]

0 голосов
/ 26 апреля 2018

Вот шаги по обновлению Unity на всех ветках:

  • В основной рабочей ветке обновите версию Unity. (Я предполагаю, что ваша основная рабочая ветвь в этом посте master, но dev также является общим соглашением.)
  • Зафиксировать все файлы, которые автоматически изменяются при обновлении.
  • Исправлены все немедленные ошибки сборки, которые мешают запуску проекта.
  • Протестируйте ваш проект, чтобы увидеть, есть ли какие-либо ошибки регрессии, представленные обновлением, и исправьте их. Зафиксируйте все необходимые исправления. (Я рекомендую делать ваши коммиты атомарными, чтобы вы могли легко просмотреть то, что вам пришлось исправить вручную в процессе обновления.)
  • На всех других ваших ветках, git rebase на master ветке. (Вы также можете git merge с master вместо перебазирования, если вы не хотите выдвигать новые перебазированные ветки. Это также зависит от контекста проекта. Для получения дополнительной информации об этом см. Посты, такие как "Слияние против ребазинга ")
  • Во всех остальных ветках проверьте на ошибки сборки. В частности, поскольку вы не обновляете каждую ветку отдельно, вам нужно обновить все, что было бы обработано с помощью Unity Automatic устаревшего API Updater
  • Рекомендуется: только после того, как вы подтвердите, что все ветви Unity работают локально, нажмите на все свои ветви, чтобы обновление было доступно во всех удаленных ветвях. Вы хотите иметь возможность отменить свои действия локально в случае, если вы обнаружите проблему с обновлением одной из ваших веток. Если вы столкнулись с проблемой, вы можете git reset --hard сделать исходный коммит.

Кроме того, вот несколько пунктов, которые облегчат обновление:

  • В проекте не используется версия Unity, которая слишком устарела. Например, если вы отстали от нескольких основных версий, вам, скорее всего, придется иметь дело с более устаревшими обновлениями API.
  • Ветви не слишком продолжительные. Если ветки значительно отклонились от master, у вас будет больше устаревших обновлений API для каждой ветки, и существует больший риск конфликтов слияния и неприятностей. (Но вы можете проверить, является ли это проблемой, прежде чем отправлять обновление Unity в удаленные филиалы.)
  • Ваш проект настроен на использование видимых метафайлов
  • Unity Cache Server настроен так, что будет быстрее загружать проект, когда вы будете переключаться между ветками с разными версиями Unity во время процесса обновления.

Как примечание, я считаю, что не стоит обновлять каждую ветку Unity отдельно. Тем не менее, я бы порекомендовал объединить все ветви в master, если это возможно, или, по крайней мере, убедиться, что веток нет, поскольку это может усложнить процесс обновления.

0 голосов
/ 27 апреля 2018

Не существует такой команды git, которая может обновлять все ветви одновременно.

Вместо этого вы можете обойти это путем обновления каждой ветви по сценарию.

Предположим, что проект был изменен в master ветви, вы можете обновить другие ветви, как показано ниже:

  • Чтобы обновить все файлы из основной ветви в другие ветви:

    git checkout branchname
    git checkout master -- .
    git commit -m 'update all the files same as master branch'
    
  • Чтобы обновить определенные файлы (например, test.cs) из главной ветви в другие ветви:

    git checkout branchname
    git checkout master -- test.cs
    git commit -m 'update test.cd from master branch'
    
0 голосов
/ 26 апреля 2018

Обновите его в ветке master, затем перенесите все остальные ветви на кончик ветви master.

В качестве примечания: обычно не рекомендуется помещать внешние библиотеки в систему управления версиями ваших собственных проектов. Они должны быть втянуты во время сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...