我正在尝试在一个名为NS-3的项目上做一些工作,但我的问题不是项目特定的,所以我想我会问这里以及相关的邮件列表。
基本上,当时的项目代码的副本已经制作完成,并且由该代码组成了一个新的回购。在“分叉”版本和主干上完成了工作。
克隆了分叉的源代码,cd in和hg pull <latest-dev>
,hg merge
,虽然它不是一个完美的合并,但是无法改变的更改都与一个库更改有关,所以很容易固定(理论上)。当然,这种乐观的尝试未能建立起来。
现在我不完全确定从哪里开始,我是DCVS的新手,所以请;针对5岁的想法!
如何找出分叉版本上次与dev-trunk合并的变更集,因为它们是分开但相关的回购?
答案 0 :(得分:3)
您使用副本而非克隆开始的情况:
如果发生了这种情况:
hg init
在每个单独的副本中运行,创建两个无关的存储库然后要合并它们,您希望在两个无关的回购中的最新版本中执行此操作:
hg update 0
,它将存储库跳回到最早的点 - 它最后看起来与另一个点相同hg commit
,创建新头hg merge
,它合并了两个头并提供了 base 版本,这有助于合并过程。关键是尽可能参与基础修订。 DVCS系统带来的是CVS和SVN没有的表格,每个合并都是两个头和最近共同祖先之间的三向合并。通过在最后一点创建新头来伪造该共同祖先,两个回购看起来相同(副本中的修订版0)模拟基本修订版。
答案 1 :(得分:3)
您使用克隆而不是副本开始的案例
这是典型的DVCS案例,您不应该做太多事情。只需从另一个克隆进入其中一个克隆hg pull
并点燃hg merge
即可。如果合并需要输入,您将使用hg resolve
来提供,并在完成后hg commit
。
如果此时你的代码没有构建/运行,那么你需要开始调试。使用hg blame
查看在无法编译的行附近正在完成的操作,并尝试确定正在完成的工作以及如何处理它。
合并过程 越容易,您就越频繁。每天提取上游更改,而不是每月。
您可以打开GraphLog扩展名并使用hg log -G
命令查看两条开发线的分歧点,但最终合并是开发,你只需要像任何其他软件缺陷一样处理非构建合并。