mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 00:14:35 +03:00
38693c451d
We can now specify from where the merge is performed. The experimental revset is updated to take revisions as argument, allowing to test the feature. This will become very useful for pick the 'rebase' default destination. For this reason, we also exclude all descendants from the rebased set from the candidate destinations. This descendants exclusion was not necessary for merge as default destination would not be picked from anything else than a head. I'm not super excited with the current error messages, but I would prefer to delay an overall messages rework once 'hg rebase' is done getting a default destination aligned with 'hg merge'.
152 lines
3.4 KiB
Perl
152 lines
3.4 KiB
Perl
$ hg init
|
|
$ echo a > a
|
|
$ hg commit -A -ma
|
|
adding a
|
|
|
|
$ echo b >> a
|
|
$ hg commit -mb
|
|
|
|
$ echo c >> a
|
|
$ hg commit -mc
|
|
|
|
$ hg up 1
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ echo d >> a
|
|
$ hg commit -md
|
|
created new head
|
|
|
|
$ hg up 1
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ echo e >> a
|
|
$ hg commit -me
|
|
created new head
|
|
|
|
$ hg up 1
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
Should fail because not at a head:
|
|
|
|
$ hg merge
|
|
abort: working directory not at a head revision
|
|
(use 'hg update' or merge with an explicit revision)
|
|
[255]
|
|
|
|
$ hg up
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
2 other heads for branch "default"
|
|
|
|
Should fail because > 2 heads:
|
|
|
|
$ HGMERGE=internal:other; export HGMERGE
|
|
$ hg merge
|
|
abort: branch 'default' has 3 heads - please merge with an explicit rev
|
|
(run 'hg heads .' to see heads)
|
|
[255]
|
|
|
|
Should succeed:
|
|
|
|
$ hg merge 2
|
|
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
|
|
(branch merge, don't forget to commit)
|
|
$ hg commit -mm1
|
|
|
|
Should succeed - 2 heads:
|
|
|
|
$ hg merge -P
|
|
changeset: 3:ea9ff125ff88
|
|
parent: 1:1846eede8b68
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: d
|
|
|
|
$ hg merge
|
|
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
|
|
(branch merge, don't forget to commit)
|
|
$ hg commit -mm2
|
|
|
|
Should fail because at tip:
|
|
|
|
$ hg merge
|
|
abort: nothing to merge
|
|
[255]
|
|
|
|
$ hg up 0
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
Should fail because there is only one head:
|
|
|
|
$ hg merge
|
|
abort: nothing to merge
|
|
(use 'hg update' instead)
|
|
[255]
|
|
|
|
$ hg up 3
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ echo f >> a
|
|
$ hg branch foobranch
|
|
marked working directory as branch foobranch
|
|
(branches are permanent and global, did you want a bookmark?)
|
|
$ hg commit -mf
|
|
|
|
Should fail because merge with other branch:
|
|
|
|
$ hg merge
|
|
abort: branch 'foobranch' has one head - please merge with an explicit rev
|
|
(run 'hg heads' to see all heads)
|
|
[255]
|
|
|
|
|
|
Test for issue2043: ensure that 'merge -P' shows ancestors of 6 that
|
|
are not ancestors of 7, regardless of where their common ancestors are.
|
|
|
|
Merge preview not affected by common ancestor:
|
|
|
|
$ hg up -q 7
|
|
$ hg merge -q -P 6
|
|
2:2d95304fed5d
|
|
4:f25cbe84d8b3
|
|
5:a431fabd6039
|
|
6:e88e33f3bf62
|
|
|
|
Test experimental destination revset
|
|
|
|
$ hg log -r '_destmerge()'
|
|
abort: branch 'foobranch' has one head - please merge with an explicit rev
|
|
(run 'hg heads' to see all heads)
|
|
[255]
|
|
|
|
(on a branch with a two heads)
|
|
|
|
$ hg up 5
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ echo f >> a
|
|
$ hg commit -mf
|
|
created new head
|
|
$ hg log -r '_destmerge()'
|
|
changeset: 6:e88e33f3bf62
|
|
parent: 5:a431fabd6039
|
|
parent: 3:ea9ff125ff88
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: m2
|
|
|
|
|
|
(from the other head)
|
|
|
|
$ hg log -r '_destmerge(e88e33f3bf62)'
|
|
changeset: 8:b613918999e2
|
|
tag: tip
|
|
parent: 5:a431fabd6039
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: f
|
|
|
|
|
|
(from unrelated branch)
|
|
|
|
$ hg log -r '_destmerge(foobranch)'
|
|
abort: branch 'foobranch' has one head - please merge with an explicit rev
|
|
(run 'hg heads' to see all heads)
|
|
[255]
|