Git与SVN接口?

12
有没有一种方法可以使用svn的命令集来接口git库? 上下文:我们团队中的大多数成员希望将所有新项目从svn切换到git,但有少数持不同意见者。 我知道可以使用git访问svn存储库,但我正在寻找相反的功能。
5个回答

12

你可以尝试使用SubGit。在服务器上安装它,它将提供一个链接的SVN仓库,这样任何对SVN仓库的提交都会导致Git push反之亦然。翻译是并发安全的,而且相当透明:SVN标签被转换为Git标签,分支到分支,svn:ignore到.gitignores等。

说明如下:

$ svnadmin create svn.repo
$ subgit configure svn.repo
$ #edit svn.repo/conf/subgit.conf to specify path to your bare Git repository
$ subgit install svn.repo

就这样了。该翻译是由钩子触发的,将添加到SVN和Git存储库中。


3
如果不是每个人都习惯这种变化,您可以考虑拥有一个SVN服务器,并要求希望使用Git的人使用 git-svn。Git具有非常陡峭的学习曲线。因此,即使是对使用Git感到兴奋的人,在项目中使用它也可能会影响生产力。最好让每个人通过git-svn学习git,因为如果需要,还有另一种工作方式-通过SVN。如果人们熟悉git,则此转变可能非常有成效。否则,可能会出现很多短期到中期问题。我曾面临过这种情况,并分享我的经验。
另外,在Windows上使用TortoiseGit应该对使用TortoiseSVN的人来说很熟悉。此外,您可以将一些git命令从类似的SVN命令中进行别名,以便它们看起来执行类似的操作。例如,svn revert与git revert不同,但git reset --hard有点相似。大部分时间很难找到等价物,但是您可以找到其中的一些。

1
然而,这样做并没有激励人们使用git,而且使用git的人很可能会因为git-svn的限制而感到沮丧... - Mark Longair
@Mark Longair - 完全同意你的观点,但我更新了我的答案以提供更多解释。 - manojlds

3
基本上不行 - 除非你做出保证会回来咬你的可怕假设和简化。从非分布式到分布式版本控制系统,并有效地利用它,需要你改变思维方式。http://hginit.com/00.html 上有一些关于从svn迁移到hg的笔记,对这种情况同样适用。

这个“建议”并不是答案,但你却接受它作为答案。如果你在寻求验证,那么问题的标题就是具有欺骗性的。 - Blessed Geek

3
我一直在使用svn作为权威源,但所有的git开发人员都在一起在gitorious上连接。当任务完成时,例如正在进行配对任务的某个人,会根据需要进行rebase并使用git svn提交到subversion。

这不是一个完美的解决方案,但至少可以让你与其他git开发人员在本地使用git一起工作。
真正需要做的是让那些持保留态度的人转向git。这似乎是唯一真正可持续的长期解决方案。

到目前为止,我仍然没有解决我的端上的svn holdouts问题。不过现在我使用git svn,这至少比只用svn好一千万倍。 - Stefan Kendall

2
如果你使用的是Windows系统,可以尝试使用TortoiseGit - 它与TortoiseSVN有着类似的界面。但这只是GUI相似性,并非控制台命令相似性。

不是一个坏主意,但我会非常小心。我记得读过一篇关于一个团队的文章,因为某些东西看起来类似于svn,但实际上在关键方面有所不同,导致人们犯了很多重要错误。特别是有一种情况,其中一个人更改了文件A,提交到origin/master,然后另一个人更改了文件B,从origin/master获取,并尝试将origin/master合并到master中。在他们的“合并”提交中,他们取消选中文件A,因为他们没有打算对其进行任何更改,实际上覆盖了第一次更改。 - Tyler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接