Version control 如何使用Mercurial合并存储库外部的更改?

Version control 如何使用Mercurial合并存储库外部的更改?,version-control,mercurial,merge,Version Control,Mercurial,Merge,我加入了一个有绿地代码的团队。当我加入时,他们没有一个共同的存储库,他们给我发了一封他最新的tarball邮件。(是的,我知道…)我一直在处理那个tarball,做一些更改和添加文件。现在这个团队有了一个Mercurial存储库(万岁!),并且已经用相同的代码填充了它,其中包含了其他人最近所做的更改。换句话说,我在on目录中有原始的tarballed代码,在另一个目录中有我的更改,在第三个目录中有一个hg克隆,其中原始tarballed代码是公共祖先 将更改合并到Mercurial存储库的好方法

我加入了一个有绿地代码的团队。当我加入时,他们没有一个共同的存储库,他们给我发了一封他最新的tarball邮件。(是的,我知道…)我一直在处理那个tarball,做一些更改和添加文件。现在这个团队有了一个Mercurial存储库(万岁!),并且已经用相同的代码填充了它,其中包含了其他人最近所做的更改。换句话说,我在on目录中有原始的tarballed代码,在另一个目录中有我的更改,在第三个目录中有一个hg克隆,其中原始tarballed代码是公共祖先

将更改合并到Mercurial存储库的好方法是什么?Mercurial没有共同祖先的历史。我是Mercurial的新手。我的风险投资经验是与CVS、Perforce和一些SVN合作。我可以再创建两个本地hg克隆,用原始代码重写一个,用修改过的代码重写另一个,然后使用Mercurial以某种方式合并它们吗?(如果是这样,如何?)还是应该考虑使用独立的合并工具,然后将合并的版本复制到克隆的目录中?还是别的什么

这都是在RHE Linux上完成的


谢谢。

一个可以尝试的选项如下:

diff -urN your-original-tarball your-current-code > mychanges.patch
hg clone their-current-repo your-local-clone
cd your-local-clone
hg update -r 0 # go to their oldest item in history
hg import --no-commit ../mychanges.patch
# check it out, test, fix any rejected changes, etc.
hg commit -m 'my changes'  # <-- you'll be warned this creates new heads
hg merge # merge your changes with their changes since they started using mercurial
hg commit -m 'merged my solo work with yours'
diff-urN原始tarball当前代码>mychanges.patch
hg克隆他们当前的回购协议您的本地克隆
cd您的本地克隆
hg update-r 0#转到历史上最古老的项目
hg导入--无提交../mychanges.patch
#检查、测试、修复任何被拒绝的更改等。

hg commit-m'my changes'#一个可以尝试的选项如下:

diff -urN your-original-tarball your-current-code > mychanges.patch
hg clone their-current-repo your-local-clone
cd your-local-clone
hg update -r 0 # go to their oldest item in history
hg import --no-commit ../mychanges.patch
# check it out, test, fix any rejected changes, etc.
hg commit -m 'my changes'  # <-- you'll be warned this creates new heads
hg merge # merge your changes with their changes since they started using mercurial
hg commit -m 'merged my solo work with yours'
diff-urN原始tarball当前代码>mychanges.patch
hg克隆他们当前的回购协议您的本地克隆
cd您的本地克隆
hg update-r 0#转到历史上最古老的项目
hg导入--无提交../mychanges.patch
#检查、测试、修复任何被拒绝的更改等。

hg commit-m“我的改变”#感谢您的回复;我不知道你可以导入这样的补丁。事实证明,他们的新代码与原来的tarball相比有了显著的变化,目录结构也有一些变化,这让我的diff工具感到困惑。我想我将需要使用一个独立的合并工具文件的文件。叹气。Mercurial将启动您教它如何启动的任何合并工具,您可以在“hg merge”和“hg commit”步骤之间使用“hg resolve”进行迭代操作。感谢您的回复;我不知道你可以导入这样的补丁。事实证明,他们的新代码与原来的tarball相比有了显著的变化,目录结构也有一些变化,这让我的diff工具感到困惑。我想我将需要使用一个独立的合并工具文件的文件。叹气。Mercurial将启动您教它如何启动的任何合并工具,您可以在“hg merge”和“hg commit”步骤之间使用“hg resolve”以迭代方式对其进行操作。