SVN GIT本地自定义更改

时间:2011-09-19 11:46:18

标签: git svn

我遇到这样的情况: 还有第三方开发的开源项目。我正在使用它,并在其上更改我的自定义源代码。我不想将任何内容提交给第三方存储库。只获得最新的更新。

从另一方面,我想将源代码(第三方代码和我的更改)重新分发到其他位置。即如果有来自第三方的错误修正更新,我只想更新我的主存储库并将更改重新分发到其他位置。当我进行一些自定义更新时也是如此。

我在这里思考了一段时间,但找不到最合适的解决方案。

我的想法:

  • 使用SVN从第3方更新到$ REPODIR
  • $ REPODIR将成为我的GIT存储库 - 所有其他位置将从此处获取更改。
  • 我将进行本地更改并将其推送到$ REPODIR

有人有更好的解决方案或以其他方式解决了类似问题吗?

1 个答案:

答案 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/以获得更详细的解释。