Git-Svn dcommit вызывает разделение ветвей

У меня проблема с git-svn dcommit, из-за которой репозиторий git не отслеживает, какие коммиты есть какие.

] Я стараюсь следить за тем, чтобы ветвь master в git всегда следовала за основной веткой в ​​репозитории SVN. Поэтому всякий раз, когда я работаю, я нахожусь в тематической ветке. Вот мой сценарий:

Некоторое время работаю в тематической ветке

git checkout -b my-topic
git commit -m "blah blah blah"

Затем я решаю, что хочу снова объединить свою ветку с мастером

git checkout master
git svn rebase #get any changes in svn
git rebase master my-topic
git merge my-topic --ff-only

До сих пор все шло хорошо. Теперь у меня есть и master, и my-topic, и они указывают на одну и ту же фиксацию, а вся история выглядит так:

A -- B -- C - master + my-topic

Однако, когда я делаю

git svn dcommit

, я получаю дерево, которое выглядит следующим образом (B и C - это коммиты, которые я изначально сделал в теме):

  -- B -- C - my-topic
 /
A -- B -- C - master + remotes/trunk

Похоже, что во время процесса dcommit git подталкивает коммиты до SVN, затем воспроизводит их снова поверх мастера. Я думаю, проблема в том, что они получают разную информацию о коммитерах. Я вхожу в svn с помощью tortoise plink и SSH-ключа.

Коммиты в репозитории git, которые не были отправлены в SVN, имеют такую ​​информацию как:

Collin Hockey <chockey@xyz.com>

Коммиты, которые были отправлены в репозиторий svn, имеют следующее:

chockey <chockey@6206317d-b652-48a9-a948-4036602fc523>

Можно ли как-нибудь предотвратить расщепление этих ветвей? Я могу исправить это, повторив

git rebase master my-topic

еще раз, но я чувствую, что в этом нет необходимости. Основная проблема заключается в том, что после того, как изменения ветки передаются в SVN, git больше не думает, что эта ветка была где-то объединена. Это затрудняет удаление старых веток, которые вам больше не нужны.

8
задан Collin 8 April 2011 в 13:36
поделиться