在mercurial中合并书签

Ind*_*ial 7 version-control mercurial branching-and-merging

在昨天问这个关于mercurial分支的问题之后,我决定尝试使用短期分支(功能)的书签,如下所示.
但是现在当我尝试将我的书签头合并到开发修订版中时,我得到以下错误:

hg update dev-1.1
hg merge feature1
abort: nothing to merge
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

我的回购的图形表示:

o  changeset:   5:fa2b19961b46
|  bookmark:    feature1
|  description:  Work on feature 1 finished.
|
| o  changeset:   4:6ea0155d4d89
| |  bookmark:    feature2
| |  description: Work on feature 2 started. 
| |
o |  changeset:   3:44e335b5426c
| |  bookmark:    feature1
|/   description: Work on feature#1 started.
|
@    changeset:    2:407b3b94624f
|    tag:          dev-1.1
|    description:  Development for release 1.1 started. 
Run Code Online (Sandbox Code Playgroud)

Mar*_*ler 14

就像它说的,没有什么可以合并 - 你应该使用更新:

$ hg update feature1
Run Code Online (Sandbox Code Playgroud)

您只能合并历史的不同部分,这里dev-1.1变更集只是变更集的祖先feature1.Mercurial 2.1说

$ hg merge feature1
abort: nothing to merge
(use 'hg update' or check 'hg heads')
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们希望这会使错误更加清晰.

如果你已经为dev-1.1变更集添加了书签(而不是标记它),那么就是普通的

$ hg update
Run Code Online (Sandbox Code Playgroud)

现在(用水银2.1)导致更新了的dev-1.1书签.所以,如果你开始

$ hg bookmarks
 * dev-1.1                   0:b1163a24728f
   feature1                  3:c84f04513651
   feature2                  2:e60dd08af282
Run Code Online (Sandbox Code Playgroud)

然后更新:

$ hg update
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
updating bookmark dev-1.1
Run Code Online (Sandbox Code Playgroud)

然后书签更新:

$ hg bookmarks
 * dev-1.1                   3:c84f04513651
   feature1                  3:c84f04513651
   feature2                  2:e60dd08af282
Run Code Online (Sandbox Code Playgroud)

对于早期版本,您必须这样做

$ hg update feature1
$ hg bookmark -f dev-1.1
Run Code Online (Sandbox Code Playgroud)

如果普通版hg update没有将您带到正确的变更集,这仍然适用,例如,如果您想要与之"合并" feature2.


当历史没有真正分歧时使用合并的想法来自Git.在该系统中,存在快速合并的概念,这就是我们称之为Mercurial中的更新.