10

似乎很多人阅读了分布式版本控制并隐含地理解为什么它对开源开发是一件好事,因为许多分布式开发人员都独立地根据自己的选择而不是管理层的要求行事。但是从这种印象中,很多人形成了 DVCS在开源环境中有用的想法。他们看不到这将如何帮助发布专有产品并且不使其版本控制系统可从外部访问的组织,或者它将如何帮助单个开发人员。

如果企业选择使用分布式版本控制(如 git、darcs 或 Mercurial)而不是集中式版本控制(如 CVS 或 Subversion),企业可以看到哪些好处?

4

7 回答 7

11

这个论点在我看来似乎倒退了。

鉴于集中式修订控制系统只是分布式系统的众多用例之一,应用这样的限制对公司有何好处?

我从经验中知道,当 p4 服务器变慢或中断或您离它太远时,使用它的每个人都必须停止工作。

人们喜欢将“平面”论点视为有点像稻草人,但我去过那里真正重要的地方。在互操作事件或客户演示的现场,我们现在必须在网络支持有限的环境中构建一些东西,所有工作都必须回来我希望能够在我犯错时恢复。

我听到的两个论点对我来说不是很好:

  1. 无法获取所有代码并运行。
  2. 锁定

1号只是愚蠢的。也许获得完整的历史记录稍微困难一些(如果我不能,反正没有修订控制系统),但是当谈到我们在这里谈论的那种恐惧时,我可以抓住最新的修订版然后它同样危险。

2 号似乎真的试图使用错误的工具来完成这项工作。我曾经从 RCS 用户那里得到反 CVS 参数,因为他们真的认为你应该每次都锁定每个文件,以防止两个人,我不知道,工作。

通信是带外的。如果你有大的、不可合并的文件,我认为可以讨论它们。IMO,许多有这个问题的人不想要一个版本控制系统,而是一个快照文件系统(zfs、9fs、Drop Box 等)。

不过,总的来说,我不明白为什么人们甚至会问“我为什么要给我的开发人员提供更便宜、更快、更可靠、更健壮并提高生产力的工具?” 各种问题。

于 2009-03-31T23:10:24.787 回答
5

首先,DVCS 不会阻止集中式代码管理:您仍然可以将一个存储库设置为“参考”存储库,所有开发人员都可以从中提取。
所以这里的好处(实际上是一个副作用)是通过数据复制进行自然备份,同时维护一个中央代码库。

但真正的好处来自项目间的交叉开发:即当您需要“来自另一个团队,来自另一个项目”的开发时,以便您的工作继续进行:您可以轻松地将一个他们的工作分支拉入您的存储库(通过跟踪它),而不必等待他们在中央存储库中正式发布它。

这意味着即使存储库仅在内部(公司内部)复制,您仍然可以获得 DVCS 的主要优势,即易于跟踪、拉取和合并来自本地和不同存储库的分支,同时拥有发布代码的主要基地在开发生命周期的其余部分。
(每个集成、认证、预生产测试都只能从发布到该中央存储库的代码运行)。

人们还可以看到以这种方式管理的 DVCS 是一个自然的“清理”过程(只有“有效”的内容——例如至少经过单元测试的内容——才能发布到中央存储库中),具有更清晰的历史记录(所有中间提交可以留在本地存储库的主题分支中)。

于 2009-03-31T20:36:34.393 回答
5

我同意 VonC,但想补充一点(至少在 git 中)创建新分支很简单,我可以轻松地处理我不一定想与其他存储库用户共享的实验代码或原型。这有助于保持中央存储库的清洁(如果您使用中央存储库),我认为让开发人员可以尝试他们可能不会在系统中尝试的事情,在这个系统中,您可能会将实验代码放入中央存储库。

我还注意到,使用 git 在多个分支中工作效率更高,因为分支之间的交换速度很快,而且我不必同时在单独的目录中检出多个分支。

于 2009-03-31T23:34:40.110 回答
3

使用 git 可以连接到传统的基于中央存储库的系统。

例如,我发现 git 比 svn 本身更适合 svn。因此,如果公司坚持使用中央存储库系统,您仍然可以获得 git 的个人利益,同时仍然维护中央存储库。

于 2009-04-01T03:22:02.017 回答
1

我注意到使用 Mercurial 的一件事是它改变了我的工作方式,甚至在我的工作站本地。每个副本都是一个完整的、独立的 repo 的想法有助于将不同的副本保存在不同的工作中,并将它们合并在一起或合并到“common”repo 中。这很好,因为不同事物的补丁集保持在一起,并且使工作本身保持独立。这些事情可以在传统系统中以某种方式完成,但在 Mercurial 中这是很自然的。在组织工作流程方面提供更大的灵活性还有其他不错的回报。

于 2009-03-31T20:41:53.693 回答
0

我不明白为什么它对开源开发更好。商业项目也有许多开发人员同时从事不同的工作。您的“管理层授权”是否告诉您要编辑哪些文件以及何时编辑?

于 2009-03-31T20:41:30.933 回答
0

检查这里的优势......

http://blog.teamtreehouse.com/why-you-should-switch-from-subversion-to-git

http://www.ehow.com/info_12217814_git-commit-vs-push.html
于 2012-10-03T04:08:03.343 回答