使用git-svn和共享的subversion主线会失去多少git的力量?

Dic*_*eed 14 svn git version-control git-svn

我正在评估让我们的团队远离CVS的各种选择.我们在另一个使用Subversion的站点上有另一个大型团队,我们的一些开发人员使用Subversion服务器.因此,Subversion是我们团队的明显选择.然而:

  1. 涉及Subversion服务器的操作可能很慢(尽管我们在站点之间有良好的连接).
  2. 我们很多人都是出于分布式版本控制的想法,并广泛使用Mercurial或git(然后合并并提交给CVS并从中获取更改)

git-svn看起来很有趣,但我想知道的是,通过在Subversion中拥有一些集中式分支,丢失了诸如git等DVCS的功能.特别是,我仍然希望能够保持Mercurial的工作流程,例如:

  1. 我们可以拉出其他团队成员的存储库并合并,然后在功能分支上进行协作,然后再转到我们在Subversion上的主要稳定中继线吗?
  2. 我们可以期待git通常可以使用的大量技巧,还是我们需要小心避免混淆git-svn?
  3. 我们是否可以使用git加速来自Subversion的检查,方法是将其从其他站点拉过一次连接,然后将其拉入单个存储库一次.
  4. 如果有人提交Subversion,我们可以安排其他git用户通过git-svn仍然可以看到完整的开发历史吗?
  5. 我们基本上可以避免等待Subversion服务器上的交互操作,尽管它有一半的延迟世界吗?

我们中的许多人已经习惯了一个主要相当稳定的共享分支的概念,它具有简单的线性历史记录,每个人都可以推送,因此它们会定期合并到提示中.我不清楚如何使用git(或Mercurial或Bazaar)很好地支持这项工作流程.

Dus*_*tin 2

你确实失去了很多,感觉有点二等,但你确实获得了所有精彩的分支东西。

我通过使用 git 来处理一个在 subversion 中托管的项目来学习 git。git 允许我完成所有本地开发,并在项目上取得相当大的进展,同时仍然跟踪主流分支,甚至与其他人分享我的工作。

最后,我们最终将整个项目推送到 git,因为在进行颠覆时所有信息都丢失了。

你失去什么:

  1. 合并跟踪——有点像。
  2. 正确记录变更的作者身份。

我说“有点”WRT #1 是因为如果你将一棵树放在一起,它会跟踪你用 git 所做的合并和东西并应用于颠覆,但是一旦你尝试克隆该存储库,或者其他人做了 git -svn clone,你会失去它并且合并再次变得非常痛苦。

作者身份对我来说很重要,因为我发现确保人们因所做的工作而获得荣誉非常重要。