gpt4 book ai didi

Mercurial:如何与手动控制更改和文件 merge ?

转载 作者:行者123 更新时间:2023-12-05 00:07:03 24 4
gpt4 key购买 nike

注意:我在这里描述的场景在 Stack Overflow: Completely manual Mercurial merge 中没有得到解答。 .

我将用一个例子来解释我的查询。假设我从 Mercurial 存储库开始设计 汽车 :

C:\Car$ dir
Car.cpp
Car.h

我在 Car 的设计上工作了很长一段时间,存储库看起来像:
r0-r1-...-r100-(default)

在某个时间点我分支 默认 SolarCarBranch 在太阳能汽车上并行工作:
C:\SolarCar$ dir
Car.cpp
Car.h
Solar.cpp
Solar.h

一段时间后,存储库看起来像:
r0-r1-...-r100-...-r200-(default)
\--r101-...-r201-(SolarCarBranch)

我如何 merge SolarCarBranch 返回 默认 ?

请注意我想要的 merge 中的以下并发症:
  • 我应该能够继续处理 默认 SolarCarBranch merge 后。
  • Car.cpp 中可能有燃油效率修复和 Car.h SolarCarBranch 我想拉入 默认 ,但是我不希望这些文件中的所有更改。所以,我想挑选我想包含在 中的更改。默认 在 merge 期间(又名手动 merge )。
  • 我愿意 不是 想要Solar.cppSolar.h出现在 默认 .世界可能还没有为太阳能汽车做好准备。 ;-)

  • 我学到:
  • 这可以通过 hg merge SolarCarBranch 实现
  • 这可以通过设置 kdiff3.premerge=False 来实现在 Mercurial.ini
  • 我不知道如何实现这一点,因为 premerge=False仍然 merge/复制 Solar.cppSolar.h进入 默认 没有征得我的许可。
  • 最佳答案

    你真的很亲近,你一般不需要求助于移植(糟糕)或 cherry-pick 。关闭 premerge 是第一步,然后在 merge 之后但在提交之前删除主分支中不需要的文件。你只需要做一次。

    这是一个设置:

    o  changeset:   3:343d531512a3
    | branch: solar
    | tag: tip
    | parent: 1:cb26642f8db5
    | user: Ry4an Brase <ry4an@msi.umn.edu>
    | date: Wed Mar 10 11:16:48 2010 -0600
    | files: afile
    | description:
    | solar-change
    |
    |
    | @ changeset: 2:c5d14e34db07
    | | parent: 0:56465175b2fc
    | | user: Ry4an Brase <ry4an@msi.umn.edu>
    | | date: Wed Mar 10 11:05:44 2010 -0600
    | | files: other-main-file
    | | description:
    | | moremain
    | |
    | |
    o | changeset: 1:cb26642f8db5
    |/ branch: solar
    | user: Ry4an Brase <ry4an@msi.umn.edu>
    | date: Wed Mar 10 11:04:32 2010 -0600
    | files: solar-only
    | description:
    | solar-initial
    |
    |
    o changeset: 0:56465175b2fc
    user: Ry4an Brase <ry4an@msi.umn.edu>
    date: Wed Mar 10 11:04:14 2010 -0600
    files: afile
    description:
    initial

    您可以看到变更集 1 向太阳能分支添加了一个文件——默认情况下我们不想要的文件。虽然变更集 3 调整了一个也存在于主文件中的文件,但我们希望手动控制该更改是否发生。

    也是如此 hg update default ; hg merge -r solar . merge 工具会弹出 afile如果我们想要这些更改,我们决定逐行或逐块。保存后做一个 hg stat :
    % hg stat
    M afile
    M solar-only

    我们看到,solar-only 默认排队等待提交。 只需删除它 (与 if )。
    % hg rm -f solar-only

    现在 hg stat将其显示为已删除:
    % hg stat
    M afile
    R solar-only

    当我们提交时,我们将在新的变更集中拥有我们想要的东西。

    关于Mercurial:如何与手动控制更改和文件 merge ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2414759/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com