git-svn branch - Как сохранить ветку в синхронизации с транком? - PullRequest
3 голосов
/ 27 января 2011

Есть много вопросов о рабочем процессе git-svn, но я не смог выяснить это:

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

Я сделал git svn branch, чтобы создать ветку в svn изатем настройте ветку отслеживания для работы с ней. Эти вопросы довольно хорошо охватывают процесс.

Теперь предположим, что в ствол внесены изменения, которые я теперь хочу объединить в ветку.Какой мой лучший вариант?Обратите внимание, что мне нужно, чтобы git-svn был доволен, и не мешал работе людей, использующих ветку с subversion, поэтому простое ребазирование, вероятно, не сработало бы.говорить о схожей ситуации, хотя она довольно старая, и я не уверен, какая там была нижняя черта - кажется, что мне следует git checkout master, а затем git rebase mybranch, но это не может быть правдой.

Я подозреваю, что ответ должен иметь эффект svn merge, предпочтительно с установкой свойства mergeinfo, но, увы, git svn merge ...

1 Ответ

1 голос
/ 05 февраля 2011

Я не очень понимаю, как этот простой вопрос оставался без ответа более недели, пока только 13 просмотров.Я думаю, это была моя вина, плохой вопрос.

Во всяком случае, я понял это сам.Короткая версия: просто используйте git merge вместо git rebase.

Моя путаница возникла из-за использования git rebase при синхронизации ветви с изменениями в master.При работе с локальными филиалами это обычно прекрасно работает и сохраняет историю в чистоте.Однако, вы не должны перебазировать коммиты, которые вы отправили в общедоступный репозиторий , а хранилище subversion достаточно (очевидно) публично.git merge, с другой стороны, прекрасно работает и не имеет никаких проблем.

Итак, длинный ответ таков: когда вы хотите объединить последние изменения в стволе в ветку svn, вы 'Для отслеживания просто сделайте:

git merge master
# Handle conflicts, git add when you're done
git commit
git svn dcommit

Это сохранит вашу ветку синхронизированной с транком, но не установит mergeinfo, поэтому вам, вероятно, не следует смешивать svn merge с подобными практиками.

...