У меня проблема с git-svn dcommits, из-за которой репозиторий git теряет информацию о том, какие коммиты какие.
Я пытаюсь убедиться, что основная ветка в 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 с черепахой plink и ключом SSH.
Коммиты в репозитории git, которые не были отправлены в SVN, имеют информацию о коммитере как:
Collin Hockey <chockey@xyz.com>
Коммиты, которые былиотправленный в репозиторий svn, имеет это, хотя:Я могу исправить это, снова сказав
git rebase master my-topic
, но я чувствую, что это не нужно.Основная проблема в том, что как только изменения ветки передаются в SVN, git больше не думает, что ветка где-то была объединена.Это сбивает с толку удаление старых веток, которые вам больше не нужны.