Version control 您使用分布式版本控制吗?

Version control 您使用分布式版本控制吗?,version-control,dvcs,revision,Version Control,Dvcs,Revision,我想听听使用分布式版本控制(又称分布式版本控制,分散版本控制)的人们的意见,以及他们是如何找到它的。你在用什么,Mercurial,Darcs,Git,Bazaar?你还在用吗?如果您过去使用过客户机/服务器rcs,您觉得它更好、更差还是完全不同?你能告诉我什么能让我加入这股潮流?或者就此跳下去,我也很想听听有负面经历的人的意见 我目前正在考虑替换我们目前的源代码管理系统(Subversion),这是这个问题的推动力 我特别感兴趣的是那些与其他国家的同事一起使用过它的人,在这些国家,你的机器可能

我想听听使用分布式版本控制(又称分布式版本控制,分散版本控制)的人们的意见,以及他们是如何找到它的。你在用什么,Mercurial,Darcs,Git,Bazaar?你还在用吗?如果您过去使用过客户机/服务器rcs,您觉得它更好、更差还是完全不同?你能告诉我什么能让我加入这股潮流?或者就此跳下去,我也很想听听有负面经历的人的意见

我目前正在考虑替换我们目前的源代码管理系统(Subversion),这是这个问题的推动力

我特别感兴趣的是那些与其他国家的同事一起使用过它的人,在这些国家,你的机器可能不会同时开机,而且你的连接速度非常慢

如果您不确定什么是分布式版本控制,以下是几篇文章:


使用Subversion与SourceForge和其他服务器通过多种不同的连接与中等规模的团队协作,效果非常好

使用Subversion


Subversion不是分布式的,所以这让我觉得我需要一个维基百科链接,以防人们不确定我在说什么:)

我自己不使用分布式源代码管理,但这些相关的问题和答案可能会给你一些启示:


出于很多原因,我是集中式源代码管理的坚定支持者,但我确实在一个项目上尝试过BitKeeper。也许在以一种或另一种格式(Perforce、Subversion、CVS)使用集中式模型多年之后,我发现分布式源代码管理很难使用


我的心态是,我们的工具永远不应该妨碍实际工作;他们应该使工作更容易。所以,在经历了几次头部撞击之后,我跳伞了。我建议在摇动船之前与您的团队进行一些非常艰苦的测试,因为该模型与大多数开发人员在SCM世界中可能习惯的模型非常不同

我真的很喜欢Git,尤其是GitHub。能够在本地提交和回滚,真是太好了。切磋合并虽然不是小事,但并不十分困难,而且比Svn或CVS所能做的任何事情都要高级。

在我的工作场所,大约两个月前,我们从CVS切换到Git(我的大部分经验是Subversion)。虽然熟悉分布式系统需要一段学习过程,但我发现Git在两个关键领域具有优势:工作环境的灵活性和合并

我不需要使用我们的VPN,甚至不需要网络连接,就可以访问完整的版本控制功能。这意味着我可以在冲动袭来的任何地方尝试想法或执行大型重构,而不必记得签入我已经建立的巨大承诺,也不必担心在我陷入混乱时无法恢复


因为合并是在客户端执行的,所以它们比启动服务器端合并要快得多,也不容易出错

我个人使用Mercurial源代码控制系统。我已经用了一年多了。这实际上是我第一次使用VSC

我试过Git,但从未真正投入使用,因为我发现它满足不了我的需要。如果您是Subversion用户,Mercurial非常容易接受,因为它与它共享许多命令。另外,我发现我的存储库的管理非常简单

我有两种与他人共享代码的方式:

  • 我和一个同事共用一台服务器,我们为我们的项目保留一个主回购协议
  • 对于我所从事的一些OSS项目,我们使用Mercurial(hg导出)创建了我们工作的补丁,项目的维护者只需在存储库(hg导入)上应用它们

非常容易使用,但功能非常强大。但一般来说,选择VSC实际上取决于我们项目的需要…

在我们关闭Sun工作站进行嵌入式系统开发之前,我们使用的是Sun的解决方案。TeamWare是一个完全分布式的解决方案,使用SCCS作为本地存储库文件修订系统,然后使用一组工具将其包装,以处理合并操作(通过分支重命名完成),并将其返回到集中存储库,其中可能有多个存储库。事实上,因为它是分布式的,所以实际上没有主存储库本身(如果需要的话,按照惯例除外),所有用户都有自己的整个源代码树和修订版的副本。在“放回”操作期间,使用3路差异的合并工具通过算法整理出什么是什么,并允许您合并不同开发人员随时间累积的更改

在我们的开发平台切换到Windows之后,我们最终切换到了。虽然AccuRev由于依赖于集中式服务器而不是真正的分布式解决方案,但从逻辑上讲,它与工作流模型非常接近。如果TeamWare在每个客户机上都有完整的独立副本,包括所有文件的所有修订版,则在AccuRev下,该副本保存在中央数据库中,而本地客户机上只有用于本地编辑的平面文件当前版本。但是,这些本地副本可以通过与服务器的客户端连接进行版本控制,并完全独立于其他开发人员隐式创建的任何其他更改(即:分支)进行跟踪

就我个人而言,我认为TeamWare实现的分布式模型或AccuRev实现的混合模型优于完全集中的解决方案。这样做的主要原因是,不存在必须签出文件或由其他用户锁定文件的概念。此外,用户不必创建或定义分支;这些工具会隐式地为您执行此操作。当有较大的团队或不同的团队参与或维护一组sou时