![如何在 git-svn 中添加 SVN 创建的后代分支?](https://linux22.com/image/1264916/%E5%A6%82%E4%BD%95%E5%9C%A8%20git-svn%20%E4%B8%AD%E6%B7%BB%E5%8A%A0%20SVN%20%E5%88%9B%E5%BB%BA%E7%9A%84%E5%90%8E%E4%BB%A3%E5%88%86%E6%94%AF%EF%BC%9F.png)
我在 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
通过一次又一次的黑客攻击,我取得了突破:)
重新定位偏僻的到 SVN 中的分支点:
git rebase $(git svn find-rev r5 git-svn-BranchA) git-svn-BranchB
直接重写分支 B 的 git-svn 远程的 SHA:
git rev-parse HEAD > .git/refs/remotes/git-svn-BranchB
从 SVN 中删除跟踪 BranchB 的分支:
git branch -D BranchB
从 SVN 获取 BranchB 的新跟踪分支:
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 步版本。对我来说,这似乎是一种可怕的黑客行为。