Version control Mercurial:从未知的divergant合并&x27;分行';
我正试图在一个名为NS-3的项目上做一些工作,但我的问题不是特定于项目的,所以我想我会在这里询问相关的邮件列表 基本上,当时的项目代码被复制了一份,并用该代码进行了新的回购。在“分叉”版本和主干上都做了工作 因此,克隆了分叉源代码、cd-in和Version control Mercurial:从未知的divergant合并&x27;分行';,version-control,mercurial,repository,Version Control,Mercurial,Repository,我正试图在一个名为NS-3的项目上做一些工作,但我的问题不是特定于项目的,所以我想我会在这里询问相关的邮件列表 基本上,当时的项目代码被复制了一份,并用该代码进行了新的回购。在“分叉”版本和主干上都做了工作 因此,克隆了分叉源代码、cd-in和hg-pull、hg-merge,虽然这不是一个完美的合并,但无法组织的更改都与一个库更改相关,因此很容易修复(理论上)。当然,这种乐观的尝试失败了 现在我不完全确定从这里走到哪里,我是DCV的新手,所以请;针对5岁孩子的想法 由于分叉版本是独立的但相关的
hg-pull
、hg-merge
,虽然这不是一个完美的合并,但无法组织的更改都与一个库更改相关,因此很容易修复(理论上)。当然,这种乐观的尝试失败了
现在我不完全确定从这里走到哪里,我是DCV的新手,所以请;针对5岁孩子的想法
由于分叉版本是独立的但相关的repo,我如何找出分叉版本的哪一个变更集最后一次合并到dev trunk中?以副本而非克隆开始的情况: 如果是这样的话:
hgint
在每个单独的副本中运行,创建两个不相关的存储库hg update 0
,它将存储库跳回其最早的点,即它最后看起来与另一个相同的点hg commit
,它创建了一个新的头hg merge
,它合并了两个标题,还提供了一个基础修订,有助于合并过程关键是尽可能地进行基础修订。DVCS系统带来的CVS和SVN所没有的是,每个合并都是两个头部和最新的共同祖先之间的三路合并。通过在最后一点上创建新的头来伪造共同祖先,这两个repo看起来相同(副本中的版本0)模拟了基本版本。以副本而不是克隆开始的情况: 如果是这样的话:
hgint
在每个单独的副本中运行,创建两个不相关的存储库hg update 0
,它将存储库跳回其最早的点,即它最后看起来与另一个相同的点hg commit
,它创建了一个新的头hg merge
,它合并了两个标题,还提供了一个基础修订,有助于合并过程关键是尽可能地进行基础修订。DVCS系统带来的CVS和SVN所没有的是,每个合并都是两个头部和最新的共同祖先之间的三路合并。通过在最后一点上创建新的头来伪造共同祖先两个repo看起来相同(副本中的版本0)模拟了基本版本。以克隆而不是副本开始的情况 这是典型的DVCS案例,您不需要做太多事情。只要进入其中一个克隆,
hg从另一个克隆中拉出,然后启动hg merge
。如果合并需要输入,您将使用hg resolve
来提供它,完成后使用hg commit
如果此时代码没有生成/运行,那么只需开始调试。使用hg
查看无法编译的行附近正在执行的操作,并尝试找出正在执行的操作以及如何执行
合并过程越频繁,越容易进行。每天而不是每月引入上游变化
您可以打开扩展并使用hglog-G
命令查看两条开发线偏离的点,但最终合并就是开发,您只需要像处理任何其他软件缺陷一样处理非构建合并。以克隆而不是副本开始的情况
这是典型的DVCS案例,您不需要做太多事情。只要进入其中一个克隆,hg从另一个克隆中拉出,然后启动hg merge
。如果合并需要输入,您将使用hg resolve
来提供它,完成后使用hg commit
如果此时代码没有生成/运行,那么只需开始调试。使用hg
查看无法编译的行附近正在执行的操作,并尝试找出正在执行的操作以及如何执行
合并过程越频繁,越容易进行。每天而不是每月引入上游变化
您可以打开扩展并使用hg log-G
命令查看两条开发线的分歧点,但最终合并就是开发,您只需要像处理任何其他软件缺陷一样处理非构建合并。我不太清楚您在问什么。您在“当前项目代码的ac副本”中进行了开发,但它不是克隆?如果是这样,hg pull
是如何工作的?你不能从没有共同根的回购中提取(没有-f
,这是不可取的)。我将在下面给出两个答案,一个是关于合并两个以副本而非克隆开始的回购协议的情况,另一个是关于更可取的情况,即合并两个克隆。好的,这里有两个答案。希望其中一个能帮上忙。我不太清楚你在问什么。Y