所以,我想避免额外存储库的原因是我们使用 GitHub 来存储我们的存储库,而我需要创建的额外存储库会使我们超出当前计划的限制。
因此,我发现,诀窍是将所有存储库保持在本地。我知道这是一种可能性,但不确定如何引用本地存储库。事实证明,这再简单不过了!以下是我经历的步骤:
对于每个 SVN 存储库:
git svn clone http://svnhost.com/path/to/svn/repo
这将创建一个本地 Git 存储库,其中包含来自 SVN 的所有历史记录(甚至保留时间戳!!)。接下来,转到要将其合并到的存储库。创建一个分支,并从以下位置拉入代码:
git checkout -b newsvnbranch1
git pull path_to_newsvnbranch1_git_repo
现在,剩下的步骤不是原始问题的一部分,但它们是我需要完成的最终目标 - 所有 SVN 存储库和历史合并在一起,但在它们自己的目录中。
git mv trunk newname1
git checkout master
git merge newsvnbranch1
为每个 SVN 存储库完成这些步骤基本上会使您的原始 Git 存储库具有以下结构:
original
|-newname1 (containing the contents of the first SVN repo)
|-newname2 (containing the contents of the second SVN repo)
|-newname3 (and so on...)
并且,git log
现在将显示每个 repo 交织在一起的历史。