2012-03-01 96 views
2

我真的很想了解分布式版本控制系统如何改变我们的工作方式。我观看了一篇关于Linus Torvalds on git的技术讲座,主要讲述分布式版本控制的力量,他声称它改变了我们的工作方式。分散版本控制系统如何改进工作流程?

让我们考虑一下git。爱好和使用git有充足的理由,我知道这些好理由。我也确信,分散模式的力量并不仅仅局限于提高效率和实现地方承诺的能力。其中重要的一点是它允许开发人员同步他们的工作。假设这项工作还没有完成,我会假定代码(可能)不适合部署,可能会有所改变(如果我很难将它的依赖关系耦合到它,那么可能会发生变化),对我而言,这听起来像是一个痛苦的世界等待展开。

我有一种感觉,分散模式在Linus面临的设置中表现出色,但这通常在大多数设置或需求中不常见,并且集中式设置基本上是我们所有人希望在我们的统一网络中使用的即大多数公司设置,尽管我承认这是我的一个假设)。我们都将东西推回到一个中心位置,以便我们可以与其他人分享,而这种集中化需求构成了github的基础。我们都依靠中心位置的完整性来提供安全的访问工作,并为我们提供支持。

不要回答为什么git可爱。它出色的作品与本地提交的奖金集中的模式,但我真的觉得我已经错过了关于下放工作流程点的地方....我可能要观看视频再次

更新:

感谢您提出这个问题,我不认为我的观点特别明显。基本上我面对的问题如下。许多公司都设有中央工作流程。我们致力于统一的快速本地网络。管理集中管理配置的后勤工作稍微简单一些;我们都使用中央存储库,这是我们确保防止磁盘故障和火灾以及任何其他您可能会偏执的蜜罐。将这种必要性融入到工作流程中会增加您的工作(无论状态如何)最终落在此安全位置的可能性。我们依赖于这个中心位置的网络连通性和可用性,以满足我们共享的一切。我首先想到,也许我们对中央工作流程的热爱是我们无法掌握如何在微观尺度上使用DVCS。现在要说使用git,因为它是集中式变体的超集,我猜是可以的。但是,鉴于我仍然在大多数情况下看不到分散模型固有的任何内容,我们可能会使用更复杂的工具来解决更简单的问题。在集中式工具中可能会有一些价值,可以做我们已经在做的事情。

+1

参见http://stackoverflow.com/questions/2704996/describe-your-workflow-of -using-version-control-vcs-or-dvcs,http://stackoverflow.com/questions/2563836/sell-me-distributed-revision-control/2563917#2563917和http://stackoverflow.com/a/2473315/6309 – VonC 2012-03-01 22:37:48

回答

2

我会尽力回答问的问题

排序版本

任何DVCS本身并不能改善工作流程。所以在问题上“如何?”快速&简单的答案是“绝不!“

加长版

DVCSes 有可能(由于分布式性质),它可以用来改变和进化的工作流程和工作的共同风格,但它总是不是技术,但管理,行政和组织解决方案和责任:什么,如何,何时,以解决使用DVCS哪些业务任务是可能的和合理的

立即在开始时,我可以看到DVCS的一项重大业务优势 - 它允许开发人员之间的P2P通信,减少这种方式浪费在CVCS模式时间。

它在哪里可以有用和要求?任何时候,当2+开发人员从事相关工作时,都会从“主流”任务中分离出来。试想

  • 一些系统的核心和前端分离的责任区(coredev不接触前端,主唱不能做任何与核心),核心和前
  • 一个回购协议,而无需外部回购(清一色in-one)
  • 前面的小作业需要核心更改
  • 前面的文件位于/views/default/main/lib.js,core-file/core/db/connectors/engine(但位置深的天堂' t实际值)

S VN-版本,分支每个操作模式

  • 主唱的作品与WC,当 “狗屎发生”
  • Coredev创建分支分支 “分支/ LIB2 - 前端”(不疏复印件),相关“branches/lib2-fixes”,成功执行更改,提交
  • Frontman监视器回购并等待Coredev的最终提交
  • Frontman必须获取某种更新的文件才能执行他的工作和。启动mergevoodoo魔术
  • 如果一切OK,主唱已经消除某种方式c​​ommiting从coredev核心文件合并在他提交

DVCS版本

故事是不是大大缩短且在1处不同 - 当coredev完成他的工作时,分支交付给主管,在当地合并。后来合并的工作可以分支清理 - 剥离成公开形式发布(樱桃采摘,历史改写等)

+0

在DVCS故事中,我(作为Mercurial和MQ evangelist)而不是提交可能更喜欢MQ队列的直接交换,并且不要用新变更集触及回购,而在故事结束时并不真正需要它,和MQ比普通补丁更有用 – 2012-03-02 06:59:53

+0

我认为这个答案以最合适的方式解决了我的问题。我还应该补充说,这个分​​布式模型还有一些简单的好处,例如,如果有人想看到我目前正在进行的工作状态,他们可以从我这里拿走它。我确实认为在纯粹的中央版本控制系统中存在创新的空间,这只是一种识别DVCS的好处,并且看看我们是否能够在简单模型下获得类似优势的情况。 – 2012-03-05 18:11:13

0

我很困惑,你在这里想了解什么?你基本上说“我知道为什么git很棒”,然后继续问“为什么git很棒?”这种感觉不是真的是一个问题,或者至少是一个问题,在被问到的东西中是非常模糊的。

如果您具体询问DVCS如何改进工作流程,那么我会说它的确如此,每个用户都有自己的存储库副本,因此可以完全独立工作,但仍保留合并功能与其他人在同一个存储库上工作。

例如:说乔正在研究“项目A”,而且我也在研究项目A.Joe &我可以疯狂,做提交,重构等等,但在一天结束时仍然结合我们的代码(这基本上是Github的模型 - 你分叉一个项目,做一些疯狂的事情,但是因为你的副本是原始的克隆,总是可以轻松地将您的更改合并到原始文件中)。

但我觉得我已经错过了你在问什么。

你也许也想看看Version Control By Example这是一本免费的电子书,讨论不同DVCS(git只是一个)的一些优缺点。也许你所寻求的答案就在那里。

+0

Git很棒。如果你以集中的方式使用git,它在性能方面仍然会与许多中央版本控制系统竞争并击败它们。但是这并不反映git的分布式特性。 CVCS可以构思出同样的好处。我真正想要了解的是,git的分布式功能如何改变我们的工作方式,因为看起来git用户想要做的就是通过集中存储的位置来共享他们的回购。使用分支的CVCS可以实现相同的工作流程。我会看看你链接的电子书,谢谢。 – 2012-03-01 23:40:04

+0

为了更好地评论我实际上说的话,'你基本上说'我知道为什么git很棒',然后继续问......'*为什么DVCS很棒*?我不认为DVCS是git很棒的原因,或者至少我不明白为什么DVCS会让git变得更好。但我明白为什么数据的完整性和速度会让git变得更好。义卖市场是否适合支持分布式模型?我只是想知道,如果我们改变了对待它的方式,是否在git或任何DVCS中找到了更多的优点,但是我怀疑它只适用于工作自然分布广泛的史诗般的问题(如linux内核项目) – 2012-03-01 23:59:52

2

Git改进了工作流程,因为合并不再是痛苦的事情。

如果你曾经在一个使用SCM的单个项目上与几个开发人员一起工作,你应该知道合并是你必须处理的第一个问题。假设你观看了视频,你已经知道Linus花了很长时间来阐述这个问题,为什么这是其他SCM的主要问题。

我要重申将在莱纳斯你说你看了影片提出的例子,但这里有云:

说,有3个开发人员,包括你自己,对有3份项目。你们都是你所从事工作的专家。假设你已经被指定为存储库的维护者,另外两个开发者可能会要求你将代码合并到主分支中。但!你不是他们工作的专家,你不一定需要了解他们的代码是如何工作的......但是你相信他们所做的改变是可以的。使用git,你可以将合并的责任(阅读:工作)转移给他们。一旦他们拉出你的代码,合并他们的代码并提交,他们可以要求你提取合并的代码。

这是为什么这么好?因为他们完成了所有的工作,而且他们明白他们正在合并。如果没有git,这个过程无疑会非常痛苦和耗时。

+0

我几乎问到为什么我们只能使用分布式模型?这不仅仅是一个精心设计的分支合并功能吗?你只是说,我不能将我的分支合并到你的新代码中。请合并这些。但这很明显,为什么这不是一回事。克隆存储库比在分支库上泄漏(不需要访问)更清洁。但是我想要做的是找出一般软件公司是否对DVCS有任何用处。我只有在维护存储库的环境中工作。 – 2012-03-02 00:25:26

+0

-1,因为1.自然合并**不是唯一的Git **特性2.合并**不直接或间接地将**与VCS的* DVCS特性*相关联。失败! – 2012-03-02 06:04:23

+0

是的,其他人也有他们,但与DVCS合并很容易,因为您没有像在CVCS中一样的层次结构。重点是你可以合并OFTEN和DVCS,这使得它几乎无痛。关于CVCSes也不能这样说。 – Brendan 2012-03-02 15:46:43

1

DVCS允许您在不影响他人工作的情况下完成任务,直到准备就绪。

因此,您可以在本地修复所有错误和集成不兼容性,然后然后发送出去。

+1

而我自己的分支在颠覆无能为力?我可以在我自己的分支结账时在本地修复我的问题。我已经承认我不能在本地提交,但我可以在人们可以访问它的中心位置回到我自己的分支。大多数公司都有幸拥有快速的本地网络,因此在大多数情况下,不可用的中央存储库或缓慢访问问题不应成为问题。 – 2012-03-02 00:10:15

+0

有些开发人员可能不喜欢在分支之间切换(可能有麻烦),但是推到/从不同的远程(fork)更容易 – linquize 2012-03-02 03:51:16

+1

@ me232:是的,很高兴能够恢复您的本地提交,如果事情变质... .. – 2012-03-02 07:05:06

1

我真的觉得我已经错过了对分散的工作流程

无论我用Git的,无论是个人(Github上)和$工作点,它主要是集中模式。但是,我看到的分散模型的唯一优点是速度。我非常确定,在当地本地中进行几次提交并在当天结束时触发push到中央仓库的方式会更快。比较(速度)每天向远程存储库提交多次提交。