使用git-svn优于git的优点是显而易见的(svn兼容性),但是git优于git-svn有什么优势?
答案 0 :(得分:5)
它只是意味着您在开发链(svn)中管理的VCS少一个 在管理方面:
git bundle
导出Git仓库)当然,您可以管理所有advantages of Git over SVN。
答案 1 :(得分:3)
git-svn
和git
在本地工作时共享相同的功能。当从远程存储库发送或接收修改时,会出现差异。
Push vs. dcommit。
为什么git-svn
需要这个单独的dcommit
命令?
因为Subversion存储库的行为与远程Git存储库的行为不同:SVN总是尝试合并目录级别的传入更改。如果修改了另一个用户同时修改的文件,SVN会拒绝带有过期错误的传入修改。否则commit
/ dcommit
会通过。
与此相反,Git push
会在修改相同的分支/标记时返回过时的错误,无论触摸的文件是什么。
结果,git-svn dcommit
必须确保它刚刚提交的版本与它预期的相同(某些目录可以在dcommit
期间自动合并)。这意味着,git-svn
总是拉取/取回刚刚发送到SVN存储库的更改。
文件忽略。
如果忽略工作树中的某些文件并提交此修改,则无法使用git-svn dcommit
发送此修改。因此,没有办法与其他SVN存储库用户共享忽略。
Git属性。
Subversion和Git都有一些与文件和目录相关的元数据。与.gitignore类似,没有办法与同事分享.gitattributes。
合并提交。
最后,当一个人尝试dcommit
合并提交时,某些提交可能根本不会发送到SVN存储库。当合并分支的所有提交尚未提交到SVN存储库时,会发生这种情况。
这些git-svn
问题中的大多数很难解决,甚至无法修复。您可以考虑使用SubGit - git-svn
的服务器端替代方案来修复大部分内容。
有关详细信息,请参阅SubGit documentation和SubGit vs. git-svn comparison。