如何在 git-svn 中添加 SVN 创建的后代分支?

如何在 git-svn 中添加 SVN 创建的后代分支?

我在 SVN 的 Git 存储库中跟踪了两个分支。分支 B 是在 SVN 的 r6 中通过复制分支 A 的 r5 创建的。当我将分支 B 添加到 git-svn 时,它只会回溯到 r6。我期望它将分支 B 上的 r6 的 Git 提交连接到分支 A 上的 r5 的 Git 提交。

我尝试过git rebase $(git svn find-rev r6 git-svn-BranchA) master-BranchB,但在这种情况下它对我来说不起作用,因为它会破坏后续git svn rebase尝试。它认为它需要合并,并且看起来像是尝试从 git-svn-BranchA 而不是 git-svn-BranchB 进行变基。

如何在 git-svn 中添加 SVN 创建的后代分支?

答案1

通过一次又一次的黑客攻击,我取得了突破:)

  1. 重新定位偏僻的到 SVN 中的分支点:

    git rebase $(git svn find-rev r5 git-svn-BranchA) git-svn-BranchB
    
  2. 直接重写分支 B 的 git-svn 远程的 SHA:

    git rev-parse HEAD > .git/refs/remotes/git-svn-BranchB
    
  3. 从 SVN 中删除跟踪 BranchB 的分支:

    git branch -D BranchB
    
  4. 从 SVN 获取 BranchB 的新跟踪分支:

    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 步版本。对我来说,这似乎是一种可怕的黑客行为。

相关内容