我遇到这样的情况: 还有第三方开发的开源项目。我正在使用它,并在其上更改我的自定义源代码。我不想将任何内容提交给第三方存储库。只获得最新的更新。
从另一方面,我想将源代码(第三方代码和我的更改)重新分发到其他位置。即如果有来自第三方的错误修正更新,我只想更新我的主存储库并将更改重新分发到其他位置。当我进行一些自定义更新时也是如此。
我在这里思考了一段时间,但找不到最合适的解决方案。
我的想法:
有人有更好的解决方案或以其他方式解决了类似问题吗?
答案 0 :(得分:3)
git-svn命令可以帮助您解决此问题。我将它用于我必须使用的所有SVN repos,就像一个魅力!
以下命令可以帮助您入门:
mkdir svn-checkout
cd svn-checkout
git svn init --stdlayout < your SVN URL >
git svn fetch
现在需要休息一下,取决于SVN存储库中的修订,分支和标签的数量,取出可能需要数天(!)。之后,发出
git gc
然后又休息一下。您可能想要观察内存消耗。
好消息是设置必须只进行一次。之后,整个存储库都在本地机器上 - diff,log和annotate可以在不打扰SVN服务器的情况下执行。
设置完成后,您可以开始编辑代码并使用git进行提交。无论何时您想从SVN获取最新更新,请运行
git svn rebase
结果是一个git repo,它具有当前的SVN状态和你的更改。但是,您可能必须解决由更改引入的冲突。
请参阅http://justaddwater.dk/2009/03/09/using-git-for-svn-repositories-workflow/以获得更详细的解释。