Através de hacking e re-hacking eu tive um avanço:)
-
Rebase o remote para o ponto de ramificação no SVN:
git rebase $(git svn find-rev r5 git-svn-BranchA) git-svn-BranchB
-
Reescreva diretamente o SHA do controle remoto git-svn para o ramo B:
git rev-parse HEAD > .git/refs/remotes/git-svn-BranchB
-
Exclua o ramo de rastreamento BranchB do SVN:
git branch -D BranchB
-
Obtenha uma nova ramificação de rastreamento para BranchB do SVN:
git checkout -b BranchB git-svn-BranchB
-
Reconstrua as informações de rastreamento:
git svn rebase
Você deve ver a saída como:
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.
Eu realmente espero que alguém tenha uma versão muito menos feia do segundo passo. Parece um truque grotesco para mim.