Как добавить ветвь, созданную SVN, в git-svn?
У меня есть две ветви, отслеженные в репозитории Git из SVN. Ветвь B была создана в r6 в SVN путем копирования r5 из ветви A. Когда я добавил ветвь B в git-svn, она отслеживается только до r6. Я ожидал, что он соединит коммит Git r6 на ветке B с коммитом Git r5 на ветке A.
Я пытался git rebase $(git svn find-rev r6 git-svn-BranchA) master-BranchB
, но это не сработало для меня в этом сценарии, поскольку git svn rebase
попытки. Он думает, что ему нужно объединиться, и похоже, что он пытается сделать ребаз из git-svn-BranchA вместо git-svn-BranchB.
Как добавить ветвь, созданную SVN, в git-svn?
1 ответ
Через взлом и повторный взлом у меня был прорыв:)
Перебазируйте пульт на точку ветвления в SVN:
git rebase $(git svn find-rev r5 git-svn-BranchA) git-svn-BranchB
Непосредственно перепишите SHA пульта git-svn для филиала B:
git rev-parse HEAD > .git/refs/remotes/git-svn-BranchB
Удалить отслеживание ветви BranchB из SVN:
git branch -D BranchB
Получите новую ветку отслеживания для BranchB от SVN:
git checkout -b BranchB git-svn-BranchB
Восстановите информацию отслеживания:
git svn rebase
Вы должны увидеть результат как:
Partial-rebuilding .git/svn/refs/remotes/git-svn-BranchB/.rev_map.########-####-####-####-############ ... Currently at 9 = ######################################## r6 = ######################################## r7 = ######################################## r8 = ######################################## r9 = ######################################## Done rebuilding .git/svn/refs/remotes/git-svn-BranchB/.rev_map.########-####-####-####-############ Current branch BranchB is up to date.
Я действительно надеюсь, что у кого-то есть намного менее уродливая версия шага 2. Это кажется мне гротескным хаком.