Version control Mercurial:从未知的divergant合并&x27;分行';

Version control Mercurial:从未知的divergant合并&x27;分行';,version-control,mercurial,repository,Version Control,Mercurial,Repository,我正试图在一个名为NS-3的项目上做一些工作,但我的问题不是特定于项目的,所以我想我会在这里询问相关的邮件列表 基本上,当时的项目代码被复制了一份,并用该代码进行了新的回购。在“分叉”版本和主干上都做了工作 因此,克隆了分叉源代码、cd-in和hg-pull、hg-merge,虽然这不是一个完美的合并,但无法组织的更改都与一个库更改相关,因此很容易修复(理论上)。当然,这种乐观的尝试失败了 现在我不完全确定从这里走到哪里,我是DCV的新手,所以请;针对5岁孩子的想法 由于分叉版本是独立的但相关的

我正试图在一个名为NS-3的项目上做一些工作,但我的问题不是特定于项目的,所以我想我会在这里询问相关的邮件列表

基本上,当时的项目代码被复制了一份,并用该代码进行了新的回购。在“分叉”版本和主干上都做了工作

因此,克隆了分叉源代码、cd-in和
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