##// END OF EJS Templates
context: possibly yield initial fctx in blockdescendants()...
context: possibly yield initial fctx in blockdescendants() If initial 'fctx' has changes in line range with respect to its parents, we yield it first. This makes 'followlines(..., descend=True)' consistent with 'descendants()' revset which yields the starting revision. We reuse one iteration of blockancestors() which does exactly what we want. In test-annotate.t, adjust 'startrev' in one case to cover the situation where the starting revision does not touch specified line range.

File last commit:

r30211:6b0741d6 default
r31992:3e47a40d default
Show More
test-rebase-newancestor.t
336 lines | 7.9 KiB | text/troff | Tads3Lexer
/ tests / test-rebase-newancestor.t
Adrian Buehlmann
tests: unify test-rebase*
r12608 $ cat >> $HGRCPATH <<EOF
Pierre-Yves David
test: use generaldelta in 'test-rebase-newancestors.t'...
r26928 > [format]
> usegeneraldelta=yes
Adrian Buehlmann
tests: unify test-rebase*
r12608 > [extensions]
> rebase=
>
> [alias]
> tglog = log -G --template "{rev}: '{desc}' {branches}\n"
> EOF
$ hg init repo
$ cd repo
$ echo A > a
$ echo >> a
$ hg ci -Am A
adding a
$ echo B > a
$ echo >> a
$ hg ci -m B
$ echo C > a
$ echo >> a
$ hg ci -m C
$ hg up -q -C 0
$ echo D >> a
$ hg ci -Am AD
created new head
$ hg tglog
@ 3: 'AD'
|
| o 2: 'C'
| |
| o 1: 'B'
|/
o 0: 'A'
$ hg rebase -s 1 -d 3
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 1:0f4f7cb4f549 "B"
Adrian Buehlmann
tests: unify test-rebase*
r12608 merging a
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 2:30ae917c0e4f "C"
Adrian Buehlmann
tests: unify test-rebase*
r12608 merging a
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/0f4f7cb4f549-82b3b163-backup.hg (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608
$ hg tglog
Pierre-Yves David
rebase: preserve working directory parent (BC)...
r19925 o 3: 'C'
Adrian Buehlmann
tests: unify test-rebase*
r12608 |
o 2: 'B'
|
Pierre-Yves David
rebase: preserve working directory parent (BC)...
r19925 @ 1: 'AD'
Adrian Buehlmann
tests: unify test-rebase*
r12608 |
o 0: 'A'
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..
Mads Kiilerich
tests: add test for rebasing merges with ancestors of the rebase destination...
r23406
Test rebasing of merges with ancestors of the rebase destination - a situation
that often happens when trying to recover from repeated merging with a mainline
branch.
The test case creates a dev branch that contains a couple of merges from the
default branch. When rebasing to the default branch, these merges would be
merges with ancestors on the same branch. The merges _could_ contain some
interesting conflict resolutions or additional changes in the merge commit, but
that is mixed up with the actual merge stuff and there is in general no way to
separate them.
Note: The dev branch contains _no_ changes to f-default. It might be unclear
how rebasing of ancestor merges should be handled, but the current behavior
with spurious prompts for conflicts in files that didn't change seems very
wrong.
$ hg init ancestor-merge
$ cd ancestor-merge
$ touch f-default
$ hg ci -Aqm 'default: create f-default'
$ hg branch -q dev
$ hg ci -qm 'dev: create branch'
$ echo stuff > f-dev
$ hg ci -Aqm 'dev: f-dev stuff'
$ hg up -q default
$ echo stuff > f-default
$ hg ci -m 'default: f-default stuff'
$ hg up -q dev
$ hg merge -q default
$ hg ci -m 'dev: merge default'
$ hg up -q default
$ hg rm f-default
$ hg ci -m 'default: remove f-default'
$ hg up -q dev
$ hg merge -q default
$ hg ci -m 'dev: merge default'
$ hg up -q default
$ echo stuff > f-other
$ hg ci -Aqm 'default: f-other stuff'
$ hg tglog
@ 7: 'default: f-other stuff'
|
| o 6: 'dev: merge default' dev
|/|
o | 5: 'default: remove f-default'
| |
| o 4: 'dev: merge default' dev
|/|
o | 3: 'default: f-default stuff'
| |
| o 2: 'dev: f-dev stuff' dev
| |
| o 1: 'dev: create branch' dev
|/
o 0: 'default: create f-default'
$ hg clone -qU . ../ancestor-merge-2
Full rebase all the way back from branching point:
Siddharth Agarwal
tests: explicitly request changed version in test-rebase-newancestor.t...
r27598 $ hg rebase -r 'only(dev,default)' -d default --config ui.interactive=True << EOF
> c
> EOF
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 1:1d1a643d390e "dev: create branch"
Mads Kiilerich
rebase: show warning when rebase creates no changes to commit...
r23518 note: rebase of 1:1d1a643d390e created no changes to commit
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 2:ec2c14fb2984 "dev: f-dev stuff"
rebasing 4:4b019212aaf6 "dev: merge default"
Simon Farnsworth
merge: always use other, not remote, in user prompts...
r29775 other [source] changed f-default which local [dest] deleted
Siddharth Agarwal
filemerge: add a 'leave unresolved' option to change/delete prompts...
r27163 use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 6:9455ee510502 "dev: merge default"
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/ancestor-merge/.hg/strip-backup/1d1a643d390e-43e9e04b-backup.hg (glob)
Mads Kiilerich
tests: add test for rebasing merges with ancestors of the rebase destination...
r23406 $ hg tglog
Matt Mackall
merge with stable
r23426 o 6: 'dev: merge default'
|
Mads Kiilerich
tests: add test for rebasing merges with ancestors of the rebase destination...
r23406 o 5: 'dev: merge default'
|
o 4: 'dev: f-dev stuff'
|
@ 3: 'default: f-other stuff'
|
o 2: 'default: remove f-default'
|
o 1: 'default: f-default stuff'
|
o 0: 'default: create f-default'
Grafty cherry picking rebasing:
$ cd ../ancestor-merge-2
$ hg phase -fdr0:
Siddharth Agarwal
tests: explicitly request changed version in test-rebase-newancestor.t...
r27598 $ hg rebase -r 'children(only(dev,default))' -d default --config ui.interactive=True << EOF
> c
> EOF
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 2:ec2c14fb2984 "dev: f-dev stuff"
rebasing 4:4b019212aaf6 "dev: merge default"
Simon Farnsworth
merge: always use other, not remote, in user prompts...
r29775 other [source] changed f-default which local [dest] deleted
Siddharth Agarwal
filemerge: add a 'leave unresolved' option to change/delete prompts...
r27163 use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 6:9455ee510502 "dev: merge default"
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/ancestor-merge-2/.hg/strip-backup/ec2c14fb2984-62d0b222-backup.hg (glob)
Mads Kiilerich
tests: add test for rebasing merges with ancestors of the rebase destination...
r23406 $ hg tglog
Matt Mackall
merge with stable
r23426 o 7: 'dev: merge default'
|
Mads Kiilerich
tests: add test for rebasing merges with ancestors of the rebase destination...
r23406 o 6: 'dev: merge default'
|
o 5: 'dev: f-dev stuff'
|
o 4: 'default: f-other stuff'
|
o 3: 'default: remove f-default'
|
o 2: 'default: f-default stuff'
|
| o 1: 'dev: create branch' dev
|/
o 0: 'default: create f-default'
Mads Kiilerich
tests: test coverage of parent order with p1 outside rebase set
r23407 $ cd ..
Test order of parents of rebased merged with un-rebased changes as p1.
$ hg init parentorder
$ cd parentorder
$ touch f
$ hg ci -Aqm common
$ touch change
$ hg ci -Aqm change
$ touch target
$ hg ci -Aqm target
$ hg up -qr 0
$ touch outside
$ hg ci -Aqm outside
$ hg merge -qr 1
$ hg ci -m 'merge p1 3=outside p2 1=ancestor'
$ hg par
changeset: 4:6990226659be
tag: tip
parent: 3:f59da8fc0fcf
parent: 1:dd40c13f7a6f
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: merge p1 3=outside p2 1=ancestor
$ hg up -qr 1
$ hg merge -qr 3
$ hg ci -qm 'merge p1 1=ancestor p2 3=outside'
$ hg par
changeset: 5:a57575f79074
tag: tip
parent: 1:dd40c13f7a6f
parent: 3:f59da8fc0fcf
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: merge p1 1=ancestor p2 3=outside
$ hg tglog
@ 5: 'merge p1 1=ancestor p2 3=outside'
|\
+---o 4: 'merge p1 3=outside p2 1=ancestor'
| |/
| o 3: 'outside'
| |
+---o 2: 'target'
| |
o | 1: 'change'
|/
o 0: 'common'
$ hg rebase -r 4 -d 2
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 4:6990226659be "merge p1 3=outside p2 1=ancestor"
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/parentorder/.hg/strip-backup/6990226659be-4d67a0d3-backup.hg (glob)
Mads Kiilerich
tests: test coverage of parent order with p1 outside rebase set
r23407 $ hg tip
changeset: 5:cca50676b1c5
tag: tip
parent: 2:a60552eb93fb
parent: 3:f59da8fc0fcf
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: merge p1 3=outside p2 1=ancestor
$ hg rebase -r 4 -d 2
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 4:a57575f79074 "merge p1 1=ancestor p2 3=outside"
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/parentorder/.hg/strip-backup/a57575f79074-385426e5-backup.hg (glob)
Mads Kiilerich
tests: test coverage of parent order with p1 outside rebase set
r23407 $ hg tip
changeset: 5:f9daf77ffe76
tag: tip
parent: 2:a60552eb93fb
parent: 3:f59da8fc0fcf
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: merge p1 1=ancestor p2 3=outside
$ hg tglog
@ 5: 'merge p1 1=ancestor p2 3=outside'
|\
+---o 4: 'merge p1 3=outside p2 1=ancestor'
| |/
| o 3: 'outside'
| |
o | 2: 'target'
| |
o | 1: 'change'
|/
o 0: 'common'
Mads Kiilerich
tests: test rebase of merge of target ancestors
r23408 rebase of merge of ancestors
$ hg up -qr 2
$ hg merge -qr 3
$ echo 'other change while merging future "rebase ancestors"' > other
$ hg ci -Aqm 'merge rebase ancestors'
$ hg rebase -d 5 -v
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 6:4c5f12f25ebe "merge rebase ancestors" (tip)
Mads Kiilerich
tests: test rebase of merge of target ancestors
r23408 resolving manifests
removing other
note: merging f9daf77ffe76+ and 4c5f12f25ebe using bids from ancestors a60552eb93fb and f59da8fc0fcf
calculating bids for ancestor a60552eb93fb
resolving manifests
calculating bids for ancestor f59da8fc0fcf
resolving manifests
auction for merging merge bids
other: consensus for g
end of auction
getting other
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing files:
Mads Kiilerich
tests: test rebase of merge of target ancestors
r23408 other
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing manifest
committing changelog
Mads Kiilerich
tests: test rebase of merge of target ancestors
r23408 rebase merging completed
1 changesets found
Mads Kiilerich
bundle: when verbose, show what takes up the space in the generated bundle...
r23748 uncompressed size of bundle content:
Pierre-Yves David
changegroup: skip delta when the underlying revlog do not use them...
r30211 199 (changelog)
Pierre-Yves David
test: use generaldelta in 'test-rebase-newancestors.t'...
r26928 216 (manifests)
182 other
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/parentorder/.hg/strip-backup/4c5f12f25ebe-f46990e5-backup.hg (glob)
Mads Kiilerich
tests: test rebase of merge of target ancestors
r23408 1 changesets found
Mads Kiilerich
bundle: when verbose, show what takes up the space in the generated bundle...
r23748 uncompressed size of bundle content:
Pierre-Yves David
changegroup: skip delta when the underlying revlog do not use them...
r30211 254 (changelog)
Pierre-Yves David
test: use generaldelta in 'test-rebase-newancestors.t'...
r26928 167 (manifests)
182 other
Mads Kiilerich
tests: test rebase of merge of target ancestors
r23408 adding branch
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
rebase completed
$ hg tglog
@ 6: 'merge rebase ancestors'
|
o 5: 'merge p1 1=ancestor p2 3=outside'
|\
+---o 4: 'merge p1 3=outside p2 1=ancestor'
| |/
| o 3: 'outside'
| |
o | 2: 'target'
| |
o | 1: 'change'
|/
o 0: 'common'