什么是的 优点和缺点 与使用 集中与分发 版本控制系统(DVC)?你有没有遇到任何问题,在DVC和你是如何保障对这些问题? 继续讨论工具无关的和的火焰至最低。

对于那些想知道什么DVC工具可用,这是一个列表中的最知名的自由/开放源DVCSs:

有帮助吗?

解决方案

我的回答 不同 的问题:

分发的版本控制系统 (DVCSs)解决不同的问题比 集中式系统的.比较他们是 像比较和锤子 螺丝刀。

集中风险 系统 设计意图,有的是 一个真正来源,这是祝福, 因此,好的。所有开发人员的工作 (结帐),从这一来源,然后 添加(承诺)它们的变化,然后 成为同样的祝福。唯一的 现实之间的差CVS 颠复,必然, VisualSourceSafe和所有其他的 CVCSes是在工作流程, 业绩和整合,每 产品提供。

风险分布 系统 设计意图的那一个 仓库是不如任何其他的, 这将从一个储存库 另一个只是另一种形式 通信。任何的语义价值为 它储存库应被信任 是从外部强加的 过程中,没有通过软件本身。

真正的选择之间使用一种类型 或是其他组织--如果 您的项目或组织希望 集中控制,然后DVC是 非起动。如果你的开发商 预计所有工作过 国/世界上,没有安全的 宽带的连接到一个中央 库,然后DVC可能是你的 拯救。如果你需要你 的。

其他提示

那些人认为分布式系统不允许权威 副本,请注意,有大量的地方分布 系统具有权威性副本,一个完美的例子可能是 Linus'核树。肯定很多人有自己的树木但是 几乎所有的人流向Linus'树。

这就是说我认为,分布SCM的只是有用的 很多开发做不同的事情,但最近已经决定 任何一个中央储存库可以做一个分布式之一可以做的 更好。

例如,说你是一个开发工作上自己的个人 的项目。一个中央储存库可能是一个明显的选择而是 考虑这种情况。你远离网络访问(在飞机上, 在一个公园,等等),并希望工作上的项目。你有你的地方 复制所以你可以做的工作很好,但你真的想要提交,因为你 已经完成的一个特征,想要移动到另一个,或者你发现了 一个错误来解决或什么的。这一点是,与一个集中的仓库 你结束了捣碎所有的更改在一起,并提交他们 在非逻辑变更或手动拆分出来之后。

有一个分布式回购你去照常营业,承诺,继续前进, 当你有净的访问再次你把你的"一个真正的回购"和 没有什么改变。

更不要说其他好处分布repos:全 历史提供的始终。你需要看看修订记录的时候 远离网?你需要注释的来源看到一个错误 介绍了?所有可能有分布式repos.

请请不要认为布vs集中的是关于 所有权或权威性副本或任何类似的。现实 分发的下一步是进化的供应链管理。

不是一个真正的比较,但是这里有什么大的项目是使用:

集中Vcs

  • 颠复

    Apache,海湾合作委员会、红宝石、下,现,Plone,Xiph、FreeBSD其,...

  • CVS

    CVS

分布式Vcs

  • git

    Linux内核,KDE Perl,红宝石上轨道,安卓、酒、库,X.org,师Django、多,单,Gnome,Samba,杯子,GnuPG、Less于...

  • 善变的(hg)

    Mozilla和Mozdev们可根据最新的技术提供一些(Java),问题,艾莎,新技术文件系统-3G、鸽舍、MoinMoin,笨蛋,PETSc,八度,FEniCS,能力,Python,XEmacs,Xen,Vim,Xine...

  • 开始

    Emacs,Apt,邮递员,MySQL、鱿鱼...还促进了在Ubuntu。

  • darcs

    ghc,离子,xmonad,...受欢迎的内Haskell的社区。

  • 化石

    源码

W.克雷格交易 说这个有关DVC和中心静脉:

如果你需要两个,你们的。

我不会说你是 的会 在使用这两者。实际上开发人员使用DVC工具通常试图合并他们的变化(或送拉的请求)对一个中心地点(通常以释放的分支中释放repository)。有些讽刺与开发人员使用DVC但最终坚持使用一个集中的工作流程,可以开始不知道如果分布式方法真是好于集中。

有一些优点与DVC过一个中心静脉:

  • 这一概念的唯一可识别的承诺使得发送贴之间的同龄人的痛苦。I.e。你做修补一承诺,并与他人分享开发人员需要它。后来,当每个人都希望合并在一起,这特别是承诺承认和可以比较的分支之间,具有较少机会合并的冲突。开发人员往往会送贴到互通过u盘或电子邮件,不论的版本控制工具的使用。不幸的是,在该中心静脉情况下,控制版本将登记册提交作为单独的,未能认识到变化是相同的,导致更高的机会合并的冲突。

  • 你可以拥有地方实验性的分支机构(库克隆,也可以考虑的一个分支),你不需要表现出对其他人。这意味着,破坏性的改变不需要影响到开发人员如果你还没有推动任何东西上游。在一个中心静脉,当你还有一个断裂变化,可能必须离线工作,直到你已经固定和承诺的变化。这种做法有效地击败的目的使用版本作为一个安全网,但这是一个必要的罪恶中心静脉.

  • 在今天的世界中,公司通常的工作与海上开发人员(或者如果甚至更好的他们想要的工作,从家庭)。具有DVC有助于这些种类的项目,因为它消除了需要一个可靠的网络连接,因为每个人都有自己的回购。

...和一些缺点,通常有解决方法:

  • 谁拥有最新修订? 在一个中心静脉,继通常具有最新修订,但在DVC它可能不够清楚地显而易见的。解决方法是使用行为守则》,开发商在一个项目必须来到一项协议,其中回购到合并他们的工作。

  • 悲观锁,即文件被锁定当进行检查,通常是不可能的,因为并发,可能会之间发生的储存库中DVC.原因的文件锁存在的版本控制是因为开发人员需要避免合并的冲突。但是,锁定具有的缺点放缓的发展下来的两个人不能工作,在同一段代码同时作为一个长期的交易模式,它并不是充分证明保证对合并的冲突。唯一理智的方式,不论的版本控制是打击大合并冲突是要有良好的代码结构(如低联接高凝聚力)除了你的工作任务,使他们有影响较小的代码(其是说起来容易做起来难).

  • 在专用项目,这将是灾难性的,如果整个储存库变为公开可用。更是这样,如果一个心怀不满或恶意程序得到保持的一个克隆的储存库。源代码渗漏是一种严重的痛苦,对于私有企业。DVC是使得这个简单的简单的因为你只需要克隆的储存库,而有些厘米的系统(例如明确案件)试图限制,访问。但是在我看来,如果你有足够数量的功能失调的状况在你的公司文化,那么没有版本控制在世界上将有助于你对源代码的泄漏。

我在寻找合适的供应链管理,我发现了以下链接到很大的帮助:

  1. 好SCM倡议:比较.比较的约26版本控制系统。
  2. 比较的修订控制软件.维基百科文比较,约为38版本控制系统涵盖的主题,如技术上的差异、特征、用户接口,和更多。
  3. 分发的版本控制系统.另一个比较,但重点主要分布式系统。

在某种程度上,这两个方案都是等同的:

  • 分布式风险可以平凡模仿一个集中的一个,如果你只是一直把你的改变到一些指定的上游库之后,每个地方提交。
  • 一个集中的风险不会通常能够效仿的一个分布式之一相当不自然,但你可以得到一些非常类似,如果您使用的东西喜欢 被子 在它的上面。被子,如果你不熟悉它,是一个工具,用于管理大量的增补程序上的一些上游项目。这里的想法是,DVC提交命令实施通过创建一个新的贴,并推命令实施的犯下的每一个出色的补丁的中央风险,然后丢弃的补丁文件。这听起来有点尴尬,但在实践中它的实际工作相当好。

有的说,有一对夫妇的事DVCSes传统上做得非常好,其中大多数集中Vcs编位的散列。最重要的是这些可能是分支:一DVC将使它很容易分支的存储库或合并分支机构已不再需要,将继续跟踪的历史,而你这样做。有没有特别的理由为什么一个集中的方案会有困难,但从历史上看似乎没有人有相当的得到了它的权利。是否这实际上是你的一个问题取决于你要如何来组织的发展,但对许多人来说这是一个重要的考虑。

其它假定利用DVCSes是,他们的工作脱机。我从来没有真正有多大用处;我多做的发展无论是在办公室(所储存库的在本地网络)或在家中(所有ADSL).如果你做了很多发展笔记本电脑上的同时也能那么这可能会更多的考虑。

没有实际上很多陷阱,其特DVCSes.有一个稍大的趋势,人们去安静的,因为可以提交,而不推动和很容易最终抛光的东西在私有的,但除此之外,我们还没有很多的问题。这可能是因为我们有一个大数目的开放源码开发人员,他们通常熟悉的补贸易的发展模式,但进入的封闭源码开发人员似乎也捡东西的合理迅速。

分发的风险投资被吸引人的方法很多,但一个缺点,这将是重要的到我公司是问题的管理非mergable文件(典型的二进制的,例如Excel文件)。颠复处理这一支持"svn:需要锁"的财产,这意味着你必须锁定为非mergable文件之前编辑。它工作得很好。但是,工作流量需要一个中央储存库的模式,这是违反DVC的概念。

所以如果你想使用一个DVC,它是不是真的适当管理文件是非mergable.

我已经颠复使用多年的现在和我是真的很高兴。

然后从初的嗡嗡声,开始我只是得进行测试。对我来说,主要销售点分支。哦男孩。现在我不再需要清理我的储存库,回去的几个版本或任何愚蠢的事情,我没有当采用颠复活动。一切都是便宜在dvc.我已经只有试图化石并让,虽然,但我必须使用必然,cvs和颠复和它看起来像dvc所有有真的很便宜的分支和标记。不再需要副本所有的代码一边,因此,合并只是一件轻而易举的事。

任何dvc可以设置一个中央服务器,但是你得到的是除其他事情

你可以登记的任何变化小你喜欢,如莱纳斯说如果你需要使用一句描述了什么你就做到了,你做的太多了。你可以有自己的方式与代码,分支机构,合并、复制和测试所有本地没有引起任何人都可以下载大量的数据。你只需要推动最后变成中央服务器。

你可以没有的网络。

因此,在短期,采用一个版本控制始终是一个好事。使用dvc是便宜(KB和带宽),我认为这是更有趣的使用。

签文件 http://git-scm.com/
结帐的化石: http://www.fossil-scm.org
结帐善变的: https://www.mercurial-scm.org

现在,我只能建议dvc系统,而你轻易地可以使用一个中央服务器

主要问题(除了明显的带宽问题的) 所有权.

这是可以肯定的是不同的(地理)的网站都不工作上的相同的元素比其他。

理想情况下,该工具能够分配所有权文件的一个分支或甚至存储库。

回答的意见的这个答案,你真正想要的工具来告诉你是谁拥有什么, 然后 通信(通过电话、IM或邮件),与遥远的站点。
如果你有没有所有权机制...你将"通信",但往往太迟;)(即:后完成并发展一套相同的文件在同一个分支。提交可以得混乱)

对我来说这是另一个讨论关于一个人口味和它的而难以真正的目标。我个人喜欢 善变的 在其他DVC.我喜欢写的钩子相同的语言 善变的 是写在和小型网络开销的-只要说一些我自己的原因。

每个人都这些日子是在马车关于如何DVCSs是卓越的,但是克雷格的评论是很重要的。在DVC,每个人有整个历史的分支。如果你的工作了很多的二进制文件(例如,图像的文件或新楼)这需要大量的空间,你不能这样做比较.

我有一种感觉,善变的(和其他DVC)更复杂的集中化的。例如,合并的一个分支在刺客保持完整的历史的分支而在SVN你必须去的分目录查看历史记录。

另一个分布式SCM甚至在个开发商的情况是如果你喜欢我们很多人在那里,有多于一个机器上工作。

可以说,你有一套共同的脚本。如果每个机器你在工作上有一个克隆可以对要求更新和改变你的脚本。它给你:

  1. 一个节省时间,尤其是与ssh的钥匙
  2. 一种方法分支之间的差异不同的系统(例如红帽vs Debian,BSD vs Linux等)

W.克雷格*交易的答复总结了它的大多数,然而,我找到这个人的工作作风差别巨大。我目前的工作,我们使用的颠复作为我们的一个真正来源,但是,许多开发使用混帐svn对他们的个人机器来补偿工作流程问题,我们必须(失败的管理,但这是另一个故事).在任何情况下。其真正的平衡是什么征集的让你的生产力最高的,与该组织的需要(集中的认证,例如)。

一个集中的系统不一定禁止使用单独的分支机构做的发展。有没有需要一个真正的副本代码的基础,而不同的开发人员或团队可以有不同的分支,遗产的分支机构可能存在等等。

什么不一般的意思是,储存库是中央管理的-但是这是通常的一个优点在一个公司主管部门,因为这意味着只有一个地方的备份和只有一个地方管理储存。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top