我想开始使用GIT-SVN来处理SVN存储库。我知道使用GIT的许多好处仍然存在于GIT-SVN,如轻量级分支和improved file rename/move detection。
但我想知道是否有任何我应该注意的缺点?
答案 0 :(得分:6)
<强>优势强>
这就是我发现它有价值的原因,尽管可能还有其他原因。
git-svn rebase
比SVN内置的冲突解决工具好一千倍。<强>缺点强>
主要的弊端:确保不要执行任何merge
操作,否则当您尝试提交时SVN会吓坏。此外,因为您正在使用rebase
与SVN存储库同步,并且由于已经重新定位的存储库中的pull
将导致Git异常,因此维护主要克隆更加困难Git存储库(您可能最终需要删除它们并在每次rebase之后重新克隆。)
答案 1 :(得分:2)
我能想到的主要缺点是初始克隆可能非常慢,因为您正在克隆项目的整个历史记录。当然,纯粹的git也是如此,但是如果你是从一个纯粹的git服务器克隆的,它就是为此设计的。 svn存储库不是,因此git-svn必须一次获取历史记录一次。一个解决方案(除了让克隆操作一夜之间运行)就是做一个“shallow clone”但是你显然没有完整的历史记录,所以你必须使用svn log
来寻找旧修订。
答案 2 :(得分:2)
我同意MatrixFrog的说法,速度是一个问题。这是真的,尤其是当您第一次克隆项目时,而不仅仅是那时。
我遇到的另一个问题是git-svn本身几乎不支持svn:externals。而the best solution I could find并不总是以它应有的方式运作。
答案 3 :(得分:0)
我想到了几个:
svn:mergeinfo
属性将不会被设置。事实上,我认为几乎任何使用SVN属性的东西,你都做不到git-svn。 总的来说,它仍然比使用标准SVN客户端恕我直言更好,但有一些明显的缺点。