我想开始使用GIT-SVN来处理SVN存储库。我知道使用GIT的许多好处仍然与GIT-SVN一样存在,如轻量级分支,以及improved file rename/move detection。使用GIT-SVN优于其他SVN客户端的缺点?
但我想知道是否有任何缺点,我应该知道?
我想开始使用GIT-SVN来处理SVN存储库。我知道使用GIT的许多好处仍然与GIT-SVN一样存在,如轻量级分支,以及improved file rename/move detection。使用GIT-SVN优于其他SVN客户端的缺点?
但我想知道是否有任何缺点,我应该知道?
优势
这也是为什么我觉得有价值的,虽然可能有其他原因吧。
git-svn rebase
好过一千倍SVN的内置解决冲突的工具。缺点
主要沉重的缺点:千万不要做任何merge
操作,否则将SVN吓坏了,当你试着提交。另外,因为您使用rebase
与SVN存储库同步,并且从已重新绑定的存储库中获取pull
会导致Git出现异常,所以维护主要Git存储库的克隆要困难得多(您可能最终需要删除它们并在每次重新分配之后重新克隆。)
合并是我在使用svn时可以想到的唯一缺点。 – yasouser
我能想到的主要缺点是,由于您克隆了项目的整个历史,所以初始克隆可能非常缓慢。当然,纯粹的git也是如此,但如果你是从纯粹的git服务器克隆的话,它就是为此而设计的。 svn版本库不是,所以git-svn必须一次获取历史版本。一个解决方案(除了让克隆操作在一夜之间运行外)是做一个“shallow clone”,虽然那时你显然没有完整的历史记录,所以你必须使用svn log
寻找非常旧的版本。
我同意MatrixFrog的说速度是一个问题。特别是当你第一次克隆一个项目时,情况确实如此,但不是那样。
我遇到的另一个问题是几乎不支持git-svn本身的svn:externals。并且the best solution I could find并不总是按照它的方式工作。
又想起的一对夫妇:
svn:mergeinfo
属性不会被设置。实际上,我认为几乎所有使用SVN属性的东西都可以通过git-svn来实现。总的来说,它仍然比使用标准的SVN客户端恕我直言,但有一些明确的缺点。
标题询问福利,但问题询问缺点。你是指哪一个? – svick
@svick:你说得对!对不起......我注意到了写这个问题,但忘了在发布前改变它。感谢您指出:-) – Nippysaurus