git相较于git-svn有哪些优势?

7
使用git-svn相比于git的优点很明显(svn兼容性),但是git相对于git-svn有哪些优点呢?

5
访问svn并不是“git-svn相对于git的优势”。git-svn的目的是为了让你享受git相对于svn的优势。如果不使用git,你无法有效地使用git-svn。 - William Pursell
2个回答

5
它只是意味着您在开发链中少了一个版本控制系统(svn)要管理。
在管理方面:
  • 您将拥有由Git管理的分布式存储库,每个存储库都具有完整的历史记录。
  • 您不必维护与中央SVN存储库的连接。
  • 您可以以不同的方式组织备份(将数据推送到远程备份裸存储库,或通过git bundle导出Git存储库)。
当然,您可以管理所有Git相对于SVN的优势

您能否提供更详细的信息,例如使用时的速度、功能等方面? - Mike
1
@Mike:我已经完成了我的回答。 - VonC

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存储库。当合并分支的所有提交尚未dcommit到SVN存储库时,就会发生这种情况。

这些git-svn问题大多数很难甚至无法解决。您可以考虑使用SubGit——一种服务器端替代git-svn的工具,它可以解决其中的大部分问题。
有关更多详细信息,请参见SubGit文档SubGit vs. git-svn比较

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接