git比git-svn有什么优势?

时间:2010-02-18 04:29:13

标签: git git-svn

使用git-svn优于git的优点是显而易见的(svn兼容性),但是git优于git-svn有什么优势?

2 个答案:

答案 0 :(得分:5)

它只是意味着您在开发链(svn)中管理的VCS少一个 在管理方面:

  • 您将获得由Git管理的分布式存储库,每个存储库都具有完整的历史记录
  • 您无需维持与中央SVN存储库的连接。
  • 您可以采用不同的方式整理备份(将数据推送到远程备份裸仓库,或通过git bundle导出Git仓库)

当然,您可以管理所有advantages of Git over SVN

答案 1 :(得分:3)

git-svngit在本地工作时共享相同的功能。当从远程存储库发送或接收修改时,会出现差异。

  1. Push vs. dcommit。

    为什么git-svn需要这个单独的dcommit命令?

    因为Subversion存储库的行为与远程Git存储库的行为不同:SVN总是尝试合并目录级别的传入更改。如果修改了另一个用户同时修改的文件,SVN会拒绝带有过期错误的传入修改。否则commit / dcommit会通过。

    与此相反,Git push会在修改相同的分支/标记时返回过时的错误,无论触摸的文件是什么。

    结果,git-svn dcommit必须确保它刚刚提交的版本与它预期的相同(某些目录可以在dcommit期间自动合并)。这意味着,git-svn总是拉取/取回刚刚发送到SVN存储库的更改。

  2. 文件忽略。

    如果忽略工作树中的某些文件并提交此修改,则无法使用git-svn dcommit发送此修改。因此,没有办法与其他SVN存储库用户共享忽略。

  3. Git属性。

    Subversion和Git都有一些与文件和目录相关的元数据。与.gitignore类似,没有办法与同事分享.gitattributes。

  4. 合并提交。

    最后,当一个人尝试dcommit合并提交时,某些提交可能根本不会发送到SVN存储库。当合并分支的所有提交尚未提交到SVN存储库时,会发生这种情况。

  5. 这些git-svn问题中的大多数很难解决,甚至无法修复。您可以考虑使用SubGit - git-svn的服务器端替代方案来修复大部分内容。

    有关详细信息,请参阅SubGit documentationSubGit vs. git-svn comparison