2011-07-25 60 views
4

我想开始使用GIT-SVN来处理SVN存储库。我知道使用GIT的许多好处仍然与GIT-SVN一样存在,如轻量级分支,以及improved file rename/move detection使用GIT-SVN优于其他SVN客户端的缺点?

但我想知道是否有任何缺点,我应该知道?

+0

标题询问福利,但问题询问缺点。你是指哪一个? – svick

+0

@svick:你说得对!对不起......我注意到了写这个问题,但忘了在发布前改变它。感谢您指出:-) – Nippysaurus

回答

6

优势

这也是为什么我觉得有价值的,虽然可能有其他原因吧。

  • 为了开始编码,不需要对项目进行提交访问。
  • 可以在本地机器上进行版本控制,而无需提交访问权限甚至互联网连接。
  • 轻松地浏览整个修订历史记录(包括SVN历史。)
  • git-svn rebase好过一千倍SVN的内置解决冲突的工具。
  • 您仍然从Git的改进分支机制中获得一些有限的好处。

缺点

主要沉重的缺点:千万不要做任何merge操作,否则将SVN吓坏了,当你试着提交。另外,因为您使用rebase与SVN存储库同步,并且从已重新绑定的存储库中获取pull会导致Git出现异常,所以维护主要Git存储库的克隆要困难得多(您可能最终需要删除它们并在每次重新分配之后重新克隆。)

+0

合并是我在使用svn时可以想到的唯一缺点。 – yasouser

2

我能想到的主要缺点是,由于您克隆了项目的整个历史,所以初始克隆可能非常缓慢。当然,纯粹的git也是如此,但如果你是从纯粹的git服务器克隆的话,它就是为此而设计的。 svn版本库不是,所以git-svn必须一次获取历史版本。一个解决方案(除了让克隆操作在一夜之间运行外)是做一个“shallow clone”,虽然那时你显然没有完整的历史记录,所以你必须使用svn log寻找非常旧的版本。

2

我同意MatrixFrog的说速度是一个问题。特别是当你第一次克隆一个项目时,情况确实如此,但不是那样。

我遇到的另一个问题是几乎不支持git-svn本身的svn:externals。并且the best solution I could find并不总是按照它的方式工作。

0

又想起的一对夫妇:

  • 当移动/重命名文件,Git并不存储表示,“这个文件改名为”任何元数据,它只是数字出来通过注意到旧文件和新文件非常相似。 SVN希望你做重命名 SVN,以便它可以记录一些元数据。 Git不会这样做,所以你的SVN回购不会有它应该具有的所有历史。
  • 当合并(或更有可能,因为Max所说的樱桃采摘)时,svn:mergeinfo属性不会被设置。实际上,我认为几乎所有使用SVN属性的东西都可以通过git-svn来实现。

总的来说,它仍然比使用标准的SVN客户端恕我直言,但有一些明确的缺点。

相关问题