我正在评估使我们的团队远离 CVS 的各种选择。我们在另一个站点上有另一个使用 Subversion 的大型团队,我们的一些开发人员使用 Subversion 服务器。因此,Subversion 对我们的团队来说是一个显而易见的选择。然而:
- 涉及 Subversion 服务器的操作可能会很慢(尽管我们在站点之间有良好的连接)。
- 我们中的许多人都接受了分布式版本控制的想法,并广泛使用 Mercurial 或 git(然后合并并提交到 CVS 并从
git-svn看起来很有趣,但我想知道的是,由于在 Subversion 中拥有少数集中式分支,DVCS (如 git)的功能有多少会丢失。特别是,我仍然希望能够保留 Mercurial 的工作流程,例如:
- 我们可以拉取其他团队成员的存储库并合并,从而在特性分支进入我们在 Subversion 上的主要稳定主干之前就特性分支进行协作吗?
- 我们是否可以期望 git 可能产生的大量诡计通常会起作用,或者我们是否需要小心避免混淆 git-svn?
- 我们是否可以使用 git 来加快从 Subversion 的签出速度,方法是将其从另一个站点拉过连接一次,然后将其拉入单独的存储库一次。
- 如果有人提交了 Subversion,我们可以安排其他 git 用户通过 git-svn 仍然看到完整的开发历史吗?
- 尽管 Subversion 服务器有半个世界的延迟,我们是否可以基本上避免在 Subversion 服务器上等待交互操作?
我们中的许多人已经习惯了一个主要的相当稳定的共享分支的想法,它具有一个简单的线性历史,每个人都可以推送到它,因此它们会定期合并到尖端。我不清楚如何使用 git(或 Mercurial 或 Bazaar)很好地支持此工作流程。