由于这里需要详细描述的原因,我创建了一个本地SVN存储库,复制了远程存储库的内容,并对其进行了总共60次提交。同时,远程存储库没有改变一个位。现在我想在远程存储库中获得这60个提交。实现这一目标的最佳方法是什么?
我一直在寻找解决方案。我发现的第一件事是svnsync,但它只适用于新的空存储库。
使用'use git-svn'回答了一些类似的问题,但没有解释这是如何工作的。我得到的问题是我最终在GIT中有两个不相关的分支。使用git-replace我应该能够在远程分支中标记本地分支的祖先,但是在小规模测试中它会导致大量的合并。 作为最后的手段,我可以编写一个shell脚本,从本地存储库获取所有补丁并将它们应用到远程存储库。它应该在互联网上的某个地方,但我找不到它。
在未来的场景中,我总是使用GIT来获取本地存储库,这样可以省去很多麻烦。
详细说明我的小规模git-svn测试:
然后我在控制台中这样做了:
cd temp/git
git svn init --prefix=svn-original –R svn-original svn://localhost/ --stdlayout
git svn init --prefix=svn-local –R svn-local svn://localhost:1234/ --stdlayout
git svn fetch svn-original
git svn fetch svn-local
git checkout -b svn-original svn-original/trunk
git checkout -b svn-local svn-local/trunk
git log svn-local --oneline
# find the commit that adds code from the original
git log svn-original --oneline
# find the last commit
git-replace <first-local> <last-original>
这不起作用:svn-original的最后一次提交现在在gitk中显示为svn-local的一部分。合并冲突导致合并结果,并且dcommit失败。
答案 0 :(得分:1)
svnrdump dump --incremental file:///path/to/local/repository -r 42:HEAD |
svnrdump load https://svn.example.org/path/to/remote/repository
有关详细信息,请参阅SVN手册的以下章节:Migrating Repository Data Elsewhere