1

У меня есть две ветви, отслеженные в репозитории 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 ответ1

0

Через взлом и повторный взлом у меня был прорыв :)

  1. Перебазируйте пульт на точку ветвления в SVN:

    git rebase $(git svn find-rev r5 git-svn-BranchA) git-svn-BranchB
    
  2. Непосредственно перепишите SHA пульта git-svn для филиала B:

    git rev-parse HEAD > .git/refs/remotes/git-svn-BranchB
    
  3. Удалить отслеживание ветви BranchB из SVN:

    git branch -D BranchB
    
  4. Получите новую ветку отслеживания для BranchB от SVN:

    git checkout -b BranchB git-svn-BranchB
    
  5. Восстановите информацию отслеживания:

    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. Это похоже на гротескный хак для меня.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .