处理多个合并到分支机构在颠复或CVS是那些只有一个东西,要的经验。这是相当容易跟踪的分支机构并且合并在善变的(以及可能的其他任何分布式系统),但我不知道为什么。没有任何人知道吗?

我的问题源自一个事实,即善变的,你可以通过一项工作实践相类似的颠复/CVSs中央储存库和一切会工作得很好。你可以做多个合并在同一分支和你不需要无穷无尽的纸屑与提交号码和签名。

我知道的最新版本的颠复有能力追踪并对分支机构,这样你就不会得到相当程度相同的麻烦,但这是一个巨大和重要发展,在他们一边,它仍然不能做的一切发展的团队就像它这样做。

必须有一个根本的区别在它的所有工作。

有帮助吗?

解决方案

在颠复(和CVS)、储存库的第一和最重要的。在git 和善变那是不是真的概念的一个储存库中 同样的方式;这里变化的中心主题。

+1

麻烦在CVS/SVN来自一个事实,即这些系统做 记住的父母的变化。在操善变的, 不仅可以提交有多个孩子,它也可以有多种 父母!

可以很容易观察到使用一个图形用工具, gitkhg view.在下面的例子中,支#2的分叉从#1 提交,并已合并一次(在米,合并提交B):

o---A---o---B---o---C         (branch #1)
     \       \
      o---o---M---X---?       (branch #2)

注意如何和B都有两个孩子,而有两个M 父母.这些 关系 记录 在储存库中。让我们说的维护者 支#2,现在希望合并的最新变化从支#1,他们可以 发出命令,例如:

$ git merge branch-1

该工具将自动知道 基地 是B-因为它 被记录在犯米、祖先的尖端#2--和 它已经合并发生了什么事情 之间的B和CCVS不记录这些信息,也没有SVN之前 版本1.5。在这些系统中,曲线图 看起来像:

o---A---o---B---o---C         (branch #1)
     \    
      o---o---M---X---?       (branch #2)

其中M仅仅是一个巨大的"压"提交所发生的一切之间的A和B, 上应用的M。注意,以后的契约完成,有的是 没有任何痕迹 左 (除潜在的人们可阅读的意见)的M没有 起源,也不是 多少 提交们折叠在一起的--使 历史更坚不可摧的。

更糟糕的是,执行第二次合并成为一个噩梦:一个已经找出 什么的合并基础是当时的第一合并(和一个 知道吗 这里已经一个合并的第一个地方!), 然后 本那些信息的工具,因此,它并不试图重B上 顶部的M。所有这一切都是困难的足够的当密切合作,但是 根本不可能在分布式的环境。

A(相关的)问题是,有没有办法回答的问题:"并X 含有B?"这里是一个B 潜在的严重错误的修复。那么,为什么不只是记录这些信息在提交,因为 它是 在合并时间!

P.-S.-我没有经验SVN1.5+合并记录的能力,但该工作流程似乎是更多 人为的比分布式系统。如果这的确是这种情况下,这可能是因为--如前所 在上述评论--重点是放在储存库的组织,而不是在改变自己。

其他提示

因为颠复(版本至少为1.4和下文)不保留什么的轨道已予合并。为颠复、合并基本上是相同的任何承诺,同时在其他版本控制等Git,什么已经合并会被记住。

没有受到任何的已经提供的答案,Hg提供卓越合并的能力,因为它使用了更多的信息,当合并的变化(hginit.com):

例如,如果我改变的功能的一个 点,然后移动它的地方 还有,颠复不是真的 还记得那些步骤,这样的时候 时间合并,它可能认为 新的功能只是出现了出来的 蓝色的。而善变的会记得 这些东西分开:功能 改变,功能的移动,这意味着 如果你也改变了这一功能 一点点,就是更有可能的 那善变将成功地合并 我们的改变。

当然,想起什么是最后的合并(点讨论的大多数提供答案在这里)也是一个巨大的胜利。

两改进,但是,是有疑问的,因为颠复1.5+存储额外信息合并形式的颠复性:这些信息可用,没有明显的原因,颠复合并不能实施合并为成功地作为汞或饭桶。我不知道如果确实如此,虽然,但它肯定听起来像颠复开发人员对他们的方式来解决这个问题。

我想这可能部分是因为颠复已的想法的中央服务器的一个绝对的时间线的修订。刺客是真正的分布并没有这样的参考到一个绝对的时间线。这不会允许水银项目,形成更复杂的层次结构的分支机构添加的特点和测试周期的子项目,但是小组现在需要更积极地保持在合并,以保持目前因为他们不能只是打了更新,并用它来完成。

在颠复(和CVS)、储存库的第一和最重要的。在操善变那是不是真的概念的一个储存库中相同的方式;在这里, 变化 是的中心主题。

我没想过很多关于你如何实施,但我的印象(基于痛苦的经验和大量的阅读)是这种差异是什么使合并和分支,以便更容易在非库基础的系统。

我只是有经验的颠复,但我可以告诉你的屏幕合并在如今是非常复杂。幸运的是,他们包括干燥的运行按钮,你可以看到如果你这样做是正确的。的并发症是在配置的,你想要什么合并到哪里。一旦你得到设立,用于合并的合并一般进罚款。然后你需要解决的任何和所有冲突,然后提交合并在工作副本的存储库。

如果刺客可以使配合并更容易,然后我可以说,这将使合并100%的那么容易颠复活动。

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