同时管理git和svn下的源代码 - 它有意义吗?

时间:2010-07-02 02:32:32

标签: linux svn git

这可能不寻常,所以让我设置场景:

我们有一个包含我们项目历史的SVN仓库 - 一个基于Linux的嵌入式系统。 SVN repo包含Linux内核,U-Boot,busybox等源以及我们所有的内部应用程序,文件系统等。

我们拥有的Linux内核已经老旧而且我正在努力移植到主线,主线正在为我们的平台进行积极的开发。我正在git下进行内核方面的工作,并与“社区”交换补丁。

我可以让事情工作并获取内核源代码的快照并将其转储到SVN中,但我希望能够获得更新,拥有本地分支并使用git管理补丁。我可以保留两个内核副本,一个由每个SCM管理,但这有点乱。使用git管理的内核源进行开发和测试也存在风险,忘记将这些更改放入SVN导致SVN版本损坏,非内核源不同步。

将整个项目迁移到git不是一种选择。使用git管理内核源代码并在SVN中使用一堆粘合脚本和存储的哈希值是可能的,但是对于整个项目来说,从SVN获得统一的历史记录/差异化能力会更好。

我正在考虑尝试同时在同一目录下同时管理SVN和git下的内核源代码。

作为内核开发人员,我主要使用git并在事情看起来很好的时候做内部使用的SVN提交。对于其他内部用户,他们可以通过一个SVN签出获得整个一致的源,查看统一的历史记录,他们可以在SVN下对内核源进行更改。之后我或其他git-using人员可以SVN更新这些更改并将其提交给适当的git。

要让git忽略.svn文件,反之亦然,必须要做一些有趣的事情。此外,我不太确定如何使用普通的SVN结账并告诉git开始管理内核子树,但我确定git有一些不起眼的瑞士军刀可供选择。

所以这就是我的想法。这意味着大多数同事不必担心git,我们可以根据需要悄悄地忽略git和fork。

这里的问题确实是,有没有人做过这样的事情,它是如何运作的,或者你提出了什么替代解决方案?

1 个答案:

答案 0 :(得分:6)

我经常这样做,效果很好。

我唯一需要做的就是将.git文件夹添加到subversion忽略列表,将.svn /文件夹添加到.gitignore文件。