Version control 集中式和分布式版本控制系统的比较

Version control 集中式和分布式版本控制系统的比较,version-control,comparison,dvcs,Version Control,Comparison,Dvcs,使用集中式版本控制系统(DVC)与分布式版本控制系统(DVC)的优缺点是什么?您在DVCS中是否遇到过任何问题?您是如何防范这些问题的?保持讨论工具的不可知性,并将其最小化 对于那些想知道有哪些DVCS工具可用的人,这里列出了最著名的免费/开源DVCSs: ,(用C编写)由用户使用 ,(用Python编写)由使用 ,(用Python编写)由使用 ,(用哈斯凯尔语写成) 主要问题(除了明显的带宽问题)是所有权问题 这是为了确保不同的(地理)站点在同一个元素上的工作方式不同于其他元素 理想情况下,

使用集中式版本控制系统(DVC)与分布式版本控制系统(DVC)的优缺点是什么?您在DVCS中是否遇到过任何问题?您是如何防范这些问题的?保持讨论工具的不可知性,并将其最小化

对于那些想知道有哪些DVCS工具可用的人,这里列出了最著名的免费/开源DVCSs:

  • ,(用C编写)由用户使用
  • ,(用Python编写)由使用
  • ,(用Python编写)由使用
  • ,(用哈斯凯尔语写成)
主要问题(除了明显的带宽问题)是所有权问题

这是为了确保不同的(地理)站点在同一个元素上的工作方式不同于其他元素

理想情况下,该工具能够为文件、分支甚至存储库分配所有权

要回答此答案的评论,您确实希望该工具告诉您谁拥有什么,然后(通过电话、IM或邮件)与远程站点通信。

如果你没有所有权机制。。。你会“沟通”,但往往太晚;)(即:在同一分支中对一组相同的文件进行并行开发之后。提交可能会变得混乱)

对我来说,这是关于个人品味的另一个讨论,很难做到真正客观。我个人比较喜欢DVC。我喜欢使用与所用语言相同的语言编写钩子,并且网络开销更小——这只是我自己的一些原因。

我感觉Mercurial(和其他DVC)比集中式的更加复杂。例如,在Mercurial中合并分支会保留分支的完整历史记录,而在SVN中,您必须转到分支目录才能查看历史记录。

从到不同的:

分布式版本控制系统 (DVCSs)解决不同于 集中式VCS。比较它们是很重要的 比如比较锤子和锤子 螺丝刀

系统是 设计的意图是 一个被祝福的真正源头,和 所以很好。所有开发人员都工作 (签出)从该来源,然后 添加(提交)他们的更改,然后 变得同样幸福。唯一的 CV之间的真正区别, Subversion、ClearCase、Perforce、, VisualSourceSafe和所有其他 CVCSes在工作流程中, 性能,以及每个 产品提供

系统是 设计的意图是 存储库和其他存储库一样好, 它从一个存储库合并到另一个存储库 另一种只是另一种形式的 沟通。任何语义值作为 应该信任哪个存储库 是由外部强加的 过程,而不是软件本身

使用一种类型之间的真正选择 或者另一个是组织性的——如果 您的项目或组织需要 集中控制,则DVCS是 非初学者。如果你的开发者是 预计将在全世界工作 国家/世界,不安全 与中央计算机的宽带连接 存储库,那么DVCS可能是您的 拯救如果你两者都需要,那你就是 fsck'd


CraigTrader的回答概括了其中的大部分,然而,我发现个人工作风格也会产生巨大的差异。在我目前工作的地方,我们使用subversion作为一个真正的源代码,然而,许多开发人员在他们的个人机器上使用git svn来补偿我们遇到的工作流问题(管理失败,但那是另一回事)。无论如何。它实际上是平衡哪些功能集使您的工作效率最高,以及组织需要什么(例如,集中式身份验证)

在搜索正确的SCM时,我发现以下链接非常有用:

  • 。比较了大约26个版本控制系统
  • 。Wikipedia的一篇文章比较了大约38个版本控制系统,包括技术差异、功能、用户界面等主题
  • 。另一个比较,但主要集中在分布式系统上
  • 对于那些认为分布式系统不允许权威 副本请注意,分发的地方很多 系统有权威的副本,最好的例子可能是 李纳斯的核树。当然很多人都有自己的树但是 它们几乎都流向莱纳斯的树

    也就是说,我过去认为分布式SCM只对 许多开发人员做了不同的事情,但最近决定 集中式存储库可以做的任何事情,分布式存储库都可以做 更好

    例如,假设您是一名独立开发人员,在自己的个人电脑上工作 项目集中式存储库可能是一个明显的选择,但是 考虑一下这个场景。您远离网络访问(在飞机上, 在公园等)并想从事你的项目。你有你的本地 复制,这样你可以做的很好,但你真的想承诺,因为你 已完成一项功能并希望继续使用另一项功能,或者您发现 一个需要修复的bug或者别的什么。关键是,通过集中回购 你要么把所有的更改混合在一起,然后提交它们 在非逻辑变更集中,或者稍后手动将其拆分

    通过分布式回购,您可以像往常一样开展业务,承诺,继续前进, 当你再次进入网络时,你会推动你的“一次真正的回购”,并 没有什么变化

    更不用说分布式回购的另一个好处:完整的 历史记录始终可用。您需要查看修订日志 远离网络?您需要对源代码进行注释,以了解bug是如何产生的 是谁介绍的?所有这些都可以通过分布式回购实现

    请不要相信分布式与集中式是关于 所有权或权威副本或诸如此类的东西。现实 分布式是进化的下一步