为分支中的所有更改创建diff补丁?

时间:2017-10-11 14:47:36

标签: mercurial branch

我从brnch创建了一些分支(称之为default)并在那里做了一些提交。现在需要从分支中挑选所有差异到某个发布分支以进行修补。在mercurial这样的事情是可能的吗?

    ^  ^ 
    |  |<--- brnch
    |  - commit3
    |  |
    |  - commit2
    -  |
    |  |
    |  - commit1
    -  |
    |  |
    |  |
    |--
    |
    -
 default

是否可以从分支brnch(commit1,commit2,commit3)中的所有提交创建补丁并应用于其他分支(在我的情况下发布hot-fix)?

2 个答案:

答案 0 :(得分:2)

请参阅hg help exporthg help import

示例:

hg export branch(brnch) -o brnch.patch               # export everything on brnch
hg export -r commit1 -r commit2 -o cherrypick.patch  # cherrypick two changesets

hg update <somewhere_else>
hg import brnch.patch   # import the revisions in the patch

hg import --no-commit brnch.patch # import (but don't commit) revisions.
hg commit -m hotfix               # commit changes as one commit with "hotfix" description.

答案 1 :(得分:1)

您可以通过hg rebase轻松实现这一目标。

为简单起见,我假设您希望在 brnch 中看到commit1以后的所有内容,请参阅发布分支。因此,请检查发布分支,然后重新设置 brnch 提交:

hg update release
hg rebase --source commit1 --collapse --keep --dest . --message "bla bla something fixed"

或者,您可以提供修订范围。如果你想看到崩溃的提交在 brnch 分支中是非线性的,那么你将需要求助于移植(这是挑选个人提交) - 你可以崩溃({{1 }})随后在发布分支中的所有嫁接变更集,前提是您最初将它们保留在阶段草稿中。