Почему git svn dcommit теряет историю коммитов слияния для локальных веток?

StackOverflow https://stackoverflow.com/questions/425766

  •  06-07-2019
  •  | 
  •  

Вопрос

У меня есть локальный репозиторий git, созданный с помощью git svn clone . Я делаю локальную ветку, делаю некоторые изменения, переключаюсь обратно на master, git svn rebase и, если все хорошо, я объединяю свою ветку обратно с master. Тогда дерево выглядит примерно так:

альтернативный текст http://img.skitch.com/20090108-cjguu3hcci9x2k17mcftamw8f1.jpg

Иногда, когда я снова делаю git svn rebase и получаю некоторые удаленные изменения, теряется тот факт, что a_branch был объединен с основной линией, и дерево выглядит так:

альтернативный текст http://img.skitch.com/20090108-kn3bn1qgi5ijw8ja5ijkd75pa3.jpg

Почему это? Могу ли я остановить это? Есть ли простой способ сказать, что ветка была объединена, или я должен удалить свои ветви, когда я закончу, чтобы я не забывал, что было и не было объединено?

Это было полезно?

Решение

Страница man git-svn рекомендует не использовать слияние. Это один побочный эффект. Поскольку вы перебираете ветку (git svn rebase немного похожа на «git pull --rebase»), она эффективно переписывает историю. Он может отбрасывать любые локальные коммиты, которые уже находятся в восходящем потоке в subversion, такие как слияние, и сохранять только те коммиты, которые действительно существуют в репозитории svn. Поскольку тривиальный коммит слияния локальной ветки не имеет эквивалента в SVN, вы просто фиксируете «реальный» изменения, так что это единственные изменения, замеченные в вашей новой перебазированной основной ветке.

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

Другие советы

Потому что ты проходишь через SVN. При этом вы потеряете много информации (например, вы потеряете и автора).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top