##// END OF EJS Templates
branching: merge default into stable...
branching: merge default into stable This mark the start of the 5.9 freeze.

File last commit:

r48098:7587bdf3 default
r48559:d7515d29 merge 5.9rc0 stable
Show More
test-copies-chain-merge.t
3874 lines | 122.2 KiB | text/troff | Tads3Lexer
/ tests / test-copies-chain-merge.t
test-copies: test that copies' sidedata can get computed during push...
r47854 #testcases filelog compatibility changeset sidedata upgraded upgraded-parallel pull push pull-upgrade push-upgrade
copies: fix the changeset based algorithm regarding merge...
r45252
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 =====================================================
Test Copy tracing for chain of copies involving merge
=====================================================
This test files covers copies/rename case for a chains of commit where merges
are involved. It cheks we do not have unwanted update of behavior and that the
different options to retrieve copies behave correctly.
copies: fix the changeset based algorithm regarding merge...
r45252
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 Setup
=====
use git diff to see rename
test-copies: filter out the linkrev part of `debugindex`...
r47299 $ cat << EOF >> ./no-linkrev
> #!$PYTHON
> # filter out linkrev part of the debugindex command
> import sys
> for line in sys.stdin:
> if " linkrev " in line:
> print(line.rstrip())
> else:
> l = "%s *%s" % (line[:6], line[14:].rstrip())
> print(l)
> EOF
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ cat << EOF >> $HGRCPATH
> [diff]
> git=yes
Martin von Zweigbergk
config: add a new [command-templates] section for templates defined by hg...
r46350 > [command-templates]
test-copies: remove revision number from log...
r47297 > log={desc}\n
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 > EOF
copies: fix the changeset based algorithm regarding merge...
r45252 #if compatibility
$ cat >> $HGRCPATH << EOF
> [experimental]
> copies.read-from = compatibility
> EOF
#endif
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #if changeset
$ cat >> $HGRCPATH << EOF
> [experimental]
> copies.read-from = changeset-only
> copies.write-to = changeset-only
> EOF
#endif
copies: fix the changeset based algorithm regarding merge...
r45252 #if sidedata
$ cat >> $HGRCPATH << EOF
> [format]
> exp-use-copies-side-data-changeset = yes
> EOF
#endif
test-copies: test that copies' sidedata does not get corrupted during pull...
r47851 #if pull
$ cat >> $HGRCPATH << EOF
> [format]
> exp-use-copies-side-data-changeset = yes
> EOF
#endif
test-copies: test that copies' sidedata does not get corrupted during push...
r47852 #if push
$ cat >> $HGRCPATH << EOF
> [format]
> exp-use-copies-side-data-changeset = yes
> EOF
#endif
test-copies: test that copies' sidedata can get computed during pull...
r47853 #if pull-upgrade
$ cat >> $HGRCPATH << EOF
> [format]
> exp-use-copies-side-data-changeset = no
> [experimental]
> changegroup4 = yes
> EOF
#endif
test-copies: test that copies' sidedata can get computed during push...
r47854 #if push-upgrade
$ cat >> $HGRCPATH << EOF
> [format]
> exp-use-copies-side-data-changeset = no
> [experimental]
> changegroup4 = yes
> EOF
#endif
copies: fix the changeset based algorithm regarding merge...
r45252
test-copies: don't use empty file for "same content" cases...
r47281 $ cat > same-content.txt << EOF
> Here is some content that will be the same accros multiple file.
>
> This is done on purpose so that we end up in some merge situation, were the
> resulting content is the same as in the parent(s), but a new filenodes still
> need to be created to record some file history information (especially
> about copies).
> EOF
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg init repo-chain
$ cd repo-chain
Add some linear rename initialy
test-copies: don't use empty file for "same content" cases...
r47281 $ cp ../same-content.txt a
$ cp ../same-content.txt b
$ cp ../same-content.txt h
test-copies: add 3 new files with their own content...
r47302 $ echo "original content for P" > p
$ echo "original content for Q" > q
$ echo "original content for R" > r
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 $ hg ci -Am 'i-0 initial commit: a b h p q r'
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 adding a
adding b
copies-tests: add a `h` to the root commit (for chain merge tests)...
r44942 adding h
test-copies: add 3 new files with their own content...
r47302 adding p
adding q
adding r
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg mv a c
test-copies: move the new files in the `i` branch...
r47303 $ hg mv p s
$ hg ci -Am 'i-1: a -move-> c, p -move-> s'
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg mv c d
test-copies: move the new files in the `i` branch...
r47303 $ hg mv s t
$ hg ci -Am 'i-2: c -move-> d, s -move-> t'
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg log -G
test-copies: move the new files in the `i` branch...
r47303 @ i-2: c -move-> d, s -move-> t
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
copies-tests: swap two branch description...
r44938 And having another branch with renames on the other side
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
$ hg mv d e
$ hg ci -Am 'a-1: d -move-> e'
$ hg mv e f
$ hg ci -Am 'a-2: e -move-> f'
$ hg log -G --rev '::.'
test-copies: remove revision number from log...
r47297 @ a-2: e -move-> f
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
test-copies: remove revision number from log...
r47297 o a-1: d -move-> e
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
copies-tests: swap two branch description...
r44938 Have a branching with nothing on one side
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
$ hg up 'desc("i-2")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo foo > b
$ hg ci -m 'b-1: b update'
created new head
$ hg log -G --rev '::.'
test-copies: remove revision number from log...
r47297 @ b-1: b update
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168 Create a branch that delete a file previous renamed
$ hg up 'desc("i-2")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg rm d
$ hg ci -m 'c-1 delete d'
created new head
$ hg log -G --rev '::.'
test-copies: remove revision number from log...
r47297 @ c-1 delete d
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168 |
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168
Create a branch that delete a file previous renamed and recreate it
$ hg up 'desc("i-2")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg rm d
$ hg ci -m 'd-1 delete d'
created new head
$ echo bar > d
$ hg add d
$ hg ci -m 'd-2 re-add d'
$ hg log -G --rev '::.'
test-copies: remove revision number from log...
r47297 @ d-2 re-add d
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168 |
test-copies: remove revision number from log...
r47297 o d-1 delete d
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168 |
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168
Having another branch renaming a different file to the same filename as another
$ hg up 'desc("i-2")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg mv b g
$ hg ci -m 'e-1 b -move-> g'
created new head
$ hg mv g f
$ hg ci -m 'e-2 g -move-> f'
$ hg log -G --rev '::.'
test-copies: remove revision number from log...
r47297 @ e-2 g -move-> f
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168 |
test-copies: remove revision number from log...
r47297 o e-1 b -move-> g
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168 |
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
Martin von Zweigbergk
tests: collect all branch creation in one place in test-copies-chain-merge.t...
r45168
test-copies: add a `p` branch similar to the `a` but on the new files...
r47304 $ hg up -q null
Having a branch similar to the 'a' one, but moving the 'p' file around.
$ hg up 'desc("i-2")'
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg mv t u
$ hg ci -Am 'p-1: t -move-> u'
created new head
$ hg mv u v
$ hg ci -Am 'p-2: u -move-> v'
$ hg log -G --rev '::.'
@ p-2: u -move-> v
|
o p-1: t -move-> u
|
o i-2: c -move-> d, s -move-> t
|
o i-1: a -move-> c, p -move-> s
|
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: add a `p` branch similar to the `a` but on the new files...
r47304
$ hg up -q null
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
test-copies: add a `q` branch similar to the `e` but on the new files...
r47305 Having another branch renaming a different file to the same filename as another
$ hg up 'desc("i-2")'
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg mv r w
$ hg ci -m 'q-1 r -move-> w'
created new head
$ hg mv w v
$ hg ci -m 'q-2 w -move-> v'
$ hg log -G --rev '::.'
@ q-2 w -move-> v
|
o q-1 r -move-> w
|
o i-2: c -move-> d, s -move-> t
|
o i-1: a -move-> c, p -move-> s
|
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: add a `q` branch similar to the `e` but on the new files...
r47305
$ hg up -q null
copies: split creation of the graph and actual checking again...
r46324 Setup all merge
===============
This is done beforehand to validate that the upgrade process creates valid copy
information.
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 merging with unrelated change does not interfere with the renames
---------------------------------------------------------------
- rename on one side
- unrelated change on the other side
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
test-copies: improve description of the A+B case...
r47283 $ case_desc="simple merge - A side: multiple renames, B side: unrelated update"
test-copies: use intermediate variable some commit descriptions...
r47282
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg up 'desc("b-1")'
test-copies: add a `p` branch similar to the `a` but on the new files...
r47304 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg merge 'desc("a-2")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
test-copies: use intermediate variable some commit descriptions...
r47282 $ hg ci -m "mBAm-0 $case_desc - one way"
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg up 'desc("a-2")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("b-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
test-copies: use intermediate variable some commit descriptions...
r47282 $ hg ci -m "mABm-0 $case_desc - the other way"
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 created new head
$ hg log -G --rev '::(desc("mABm")+desc("mBAm"))'
test-copies: remove revision number from log...
r47297 @ mABm-0 simple merge - A side: multiple renames, B side: unrelated update - the other way
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |\
test-copies: remove revision number from log...
r47297 +---o mBAm-0 simple merge - A side: multiple renames, B side: unrelated update - one way
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 | |/
test-copies: remove revision number from log...
r47297 | o b-1: b update
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 | |
test-copies: remove revision number from log...
r47297 o | a-2: e -move-> f
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 | |
test-copies: remove revision number from log...
r47297 o | a-1: d -move-> e
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
copies: split creation of the graph and actual checking again...
r46324
merging with the side having a delete
-------------------------------------
case summary:
- one with change to an unrelated file
- one deleting the change
and recreate an unrelated file after the merge
test-copies: improve description of the B+C case...
r47284 $ case_desc="simple merge - C side: delete a file with copies history , B side: unrelated update"
test-copies: use intermediate variable some commit descriptions...
r47282
copies: split creation of the graph and actual checking again...
r46324 $ hg up 'desc("b-1")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("c-1")'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
test-copies: use intermediate variable some commit descriptions...
r47282 $ hg ci -m "mBCm-0 $case_desc - one way"
copies: split creation of the graph and actual checking again...
r46324 $ echo bar > d
$ hg add d
$ hg ci -m 'mBCm-1 re-add d'
$ hg up 'desc("c-1")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("b-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
test-copies: use intermediate variable some commit descriptions...
r47282 $ hg ci -m "mCBm-0 $case_desc - the other way"
copies: split creation of the graph and actual checking again...
r46324 created new head
$ echo bar > d
$ hg add d
$ hg ci -m 'mCBm-1 re-add d'
$ hg log -G --rev '::(desc("mCBm")+desc("mBCm"))'
test-copies: remove revision number from log...
r47297 @ mCBm-1 re-add d
copies: split creation of the graph and actual checking again...
r46324 |
test-copies: remove revision number from log...
r47297 o mCBm-0 simple merge - C side: delete a file with copies history , B side: unrelated update - the other way
copies: split creation of the graph and actual checking again...
r46324 |\
test-copies: remove revision number from log...
r47297 | | o mBCm-1 re-add d
copies: split creation of the graph and actual checking again...
r46324 | | |
test-copies: remove revision number from log...
r47297 +---o mBCm-0 simple merge - C side: delete a file with copies history , B side: unrelated update - one way
copies: split creation of the graph and actual checking again...
r46324 | |/
test-copies: remove revision number from log...
r47297 | o c-1 delete d
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 o | b-1: b update
copies: split creation of the graph and actual checking again...
r46324 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies: split creation of the graph and actual checking again...
r46324 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies: split creation of the graph and actual checking again...
r46324 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: split creation of the graph and actual checking again...
r46324
Comparing with a merge re-adding the file afterward
---------------------------------------------------
Merge:
- one with change to an unrelated file
- one deleting and recreating the change
test-copies: improve description of the B+D case...
r47285 $ case_desc="simple merge - B side: unrelated update, D side: delete and recreate a file (with different content)"
test-copies: use intermediate variable some commit descriptions...
r47282
copies: split creation of the graph and actual checking again...
r46324 $ hg up 'desc("b-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("d-2")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
test-copies: use intermediate variable some commit descriptions...
r47282 $ hg ci -m "mBDm-0 $case_desc - one way"
copies: split creation of the graph and actual checking again...
r46324 $ hg up 'desc("d-2")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("b-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
test-copies: use intermediate variable some commit descriptions...
r47282 $ hg ci -m "mDBm-0 $case_desc - the other way"
copies: split creation of the graph and actual checking again...
r46324 created new head
$ hg log -G --rev '::(desc("mDBm")+desc("mBDm"))'
test-copies: remove revision number from log...
r47297 @ mDBm-0 simple merge - B side: unrelated update, D side: delete and recreate a file (with different content) - the other way
copies: split creation of the graph and actual checking again...
r46324 |\
test-copies: remove revision number from log...
r47297 +---o mBDm-0 simple merge - B side: unrelated update, D side: delete and recreate a file (with different content) - one way
copies: split creation of the graph and actual checking again...
r46324 | |/
test-copies: remove revision number from log...
r47297 | o d-2 re-add d
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 | o d-1 delete d
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 o | b-1: b update
copies: split creation of the graph and actual checking again...
r46324 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies: split creation of the graph and actual checking again...
r46324 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies: split creation of the graph and actual checking again...
r46324 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: split creation of the graph and actual checking again...
r46324
Comparing with a merge with colliding rename
--------------------------------------------
test-copies: add subcase titles for various "conflicting" information variant...
r47293 Subcase: new copy information on both side
``````````````````````````````````````````
copies: split creation of the graph and actual checking again...
r46324 - the "e-" branch renaming b to f (through 'g')
- the "a-" branch renaming d to f (through e)
test-copies: improve description of the A+E case...
r47286 $ case_desc="merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f)"
test-copies: use intermediate variable some commit descriptions...
r47282
copies: split creation of the graph and actual checking again...
r46324 $ hg up 'desc("a-2")'
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 $ hg merge 'desc("e-2")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved (no-changeset !)
0 files updated, 0 files merged, 1 files removed, 0 files unresolved (changeset !)
copies: split creation of the graph and actual checking again...
r46324 (branch merge, don't forget to commit)
test-copies: use intermediate variable some commit descriptions...
r47282 $ hg ci -m "mAEm-0 $case_desc - one way"
copies: split creation of the graph and actual checking again...
r46324 $ hg up 'desc("e-2")'
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 2 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-changeset !)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved (changeset !)
$ hg merge 'desc("a-2")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved (no-changeset !)
0 files updated, 0 files merged, 1 files removed, 0 files unresolved (changeset !)
copies: split creation of the graph and actual checking again...
r46324 (branch merge, don't forget to commit)
test-copies: use intermediate variable some commit descriptions...
r47282 $ hg ci -m "mEAm-0 $case_desc - the other way"
copies: split creation of the graph and actual checking again...
r46324 created new head
$ hg log -G --rev '::(desc("mAEm")+desc("mEAm"))'
test-copies: remove revision number from log...
r47297 @ mEAm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - the other way
copies: split creation of the graph and actual checking again...
r46324 |\
test-copies: remove revision number from log...
r47297 +---o mAEm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - one way
copies: split creation of the graph and actual checking again...
r46324 | |/
test-copies: remove revision number from log...
r47297 | o e-2 g -move-> f
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 | o e-1 b -move-> g
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 o | a-2: e -move-> f
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 o | a-1: d -move-> e
copies: split creation of the graph and actual checking again...
r46324 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies: split creation of the graph and actual checking again...
r46324 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies: split creation of the graph and actual checking again...
r46324 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: split creation of the graph and actual checking again...
r46324
test-copies: introduce case combining the `p` and `q` branch...
r47306 Subcase: new copy information on both side with an actual merge happening
`````````````````````````````````````````````````````````````````````````
- the "p-" branch renaming 't' to 'v' (through 'u')
- the "q-" branch renaming 'r' to 'v' (through 'w')
$ case_desc="merge with copies info on both side - P side: rename t to v, Q side: r to v, (different content)"
$ hg up 'desc("p-2")'
3 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg merge 'desc("q-2")' --tool ':union'
merging v
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mPQm-0 $case_desc - one way"
$ hg up 'desc("q-2")'
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("p-2")' --tool ':union'
merging v
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mQPm-0 $case_desc - the other way"
created new head
$ hg log -G --rev '::(desc("mAEm")+desc("mEAm"))'
o mEAm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - the other way
|\
+---o mAEm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - one way
| |/
| o e-2 g -move-> f
| |
| o e-1 b -move-> g
| |
o | a-2: e -move-> f
| |
o | a-1: d -move-> e
|/
o i-2: c -move-> d, s -move-> t
|
o i-1: a -move-> c, p -move-> s
|
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: introduce case combining the `p` and `q` branch...
r47306
test-copies: add subcase titles for various "conflicting" information variant...
r47293 Subcase: existing copy information overwritten on one branch
````````````````````````````````````````````````````````````
copies: split creation of the graph and actual checking again...
r46324
Merge:
- one with change to an unrelated file (b)
- one overwriting a file (d) with a rename (from h to i to d)
test-copies: improve description of the B+F case...
r47292 $ case_desc="simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d)"
test-copies: use intermediate variable some commit descriptions...
r47282
copies: split creation of the graph and actual checking again...
r46324 $ hg up 'desc("i-2")'
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg mv h i
$ hg commit -m "f-1: rename h -> i"
created new head
$ hg mv --force i d
$ hg commit -m "f-2: rename i -> d"
Matt Harbison
tests: run python script through quoted interpreter instead of directly...
r47859 $ hg debugindex d | "$PYTHON" ../no-linkrev
copies: split creation of the graph and actual checking again...
r46324 rev linkrev nodeid p1 p2
test-copies: filter out the linkrev part of `debugindex`...
r47299 0 * d8252ab2e760 000000000000 000000000000 (no-changeset !)
0 * ae258f702dfe 000000000000 000000000000 (changeset !)
1 * b004912a8510 000000000000 000000000000
2 * 7b79e2fe0c89 000000000000 000000000000 (no-changeset !)
copies: split creation of the graph and actual checking again...
r46324 $ hg up 'desc("b-1")'
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 3 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-changeset !)
2 files updated, 0 files merged, 0 files removed, 0 files unresolved (changeset !)
copies: split creation of the graph and actual checking again...
r46324 $ hg merge 'desc("f-2")'
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 1 files updated, 0 files merged, 1 files removed, 0 files unresolved (no-changeset !)
0 files updated, 0 files merged, 1 files removed, 0 files unresolved (changeset !)
copies: split creation of the graph and actual checking again...
r46324 (branch merge, don't forget to commit)
test-copies: use intermediate variable some commit descriptions...
r47282 $ hg ci -m "mBFm-0 $case_desc - one way"
copies: split creation of the graph and actual checking again...
r46324 $ hg up 'desc("f-2")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("b-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
test-copies: use intermediate variable some commit descriptions...
r47282 $ hg ci -m "mFBm-0 $case_desc - the other way"
copies: split creation of the graph and actual checking again...
r46324 created new head
test-copies: introduce case combining the `p` and `q` branch...
r47306 $ hg up null --quiet
copies: split creation of the graph and actual checking again...
r46324 $ hg log -G --rev '::(desc("mBFm")+desc("mFBm"))'
test-copies: introduce case combining the `p` and `q` branch...
r47306 o mFBm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way
copies: split creation of the graph and actual checking again...
r46324 |\
test-copies: remove revision number from log...
r47297 +---o mBFm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - one way
copies: split creation of the graph and actual checking again...
r46324 | |/
test-copies: remove revision number from log...
r47297 | o f-2: rename i -> d
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 | o f-1: rename h -> i
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 o | b-1: b update
copies: split creation of the graph and actual checking again...
r46324 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies: split creation of the graph and actual checking again...
r46324 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies: split creation of the graph and actual checking again...
r46324 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: split creation of the graph and actual checking again...
r46324
test-copies: add a case involving the `b` and a new `r` branch...
r47307 Subcase: existing copy information overwritten on one branch, with different content)
`````````````````````````````````````````````````````````````````````````````````````
Merge:
- one with change to an unrelated file (b)
- one overwriting a file (t) with a rename (from r to x to t), v content is not the same as on the other branch
$ case_desc="simple merge - B side: unrelated change, R side: overwrite d with a copy (from r->x->t) different content"
$ hg up 'desc("i-2")'
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg mv r x
$ hg commit -m "r-1: rename r -> x"
created new head
$ hg mv --force x t
$ hg commit -m "r-2: rename t -> x"
Matt Harbison
tests: run python script through quoted interpreter instead of directly...
r47859 $ hg debugindex t | "$PYTHON" ../no-linkrev
test-copies: add a case involving the `b` and a new `r` branch...
r47307 rev linkrev nodeid p1 p2
0 * d74efbf65309 000000000000 000000000000 (no-changeset !)
1 * 02a930b9d7ad 000000000000 000000000000 (no-changeset !)
0 * 5aed6a8dbff0 000000000000 000000000000 (changeset !)
1 * a38b2fa17021 000000000000 000000000000 (changeset !)
$ hg up 'desc("b-1")'
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("r-2")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mBRm-0 $case_desc - one way"
$ hg up 'desc("r-2")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("b-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mRBm-0 $case_desc - the other way"
created new head
$ hg up null --quiet
$ hg log -G --rev '::(desc("mBRm")+desc("mRBm"))'
o mRBm-0 simple merge - B side: unrelated change, R side: overwrite d with a copy (from r->x->t) different content - the other way
|\
+---o mBRm-0 simple merge - B side: unrelated change, R side: overwrite d with a copy (from r->x->t) different content - one way
| |/
| o r-2: rename t -> x
| |
| o r-1: rename r -> x
| |
o | b-1: b update
|/
o i-2: c -move-> d, s -move-> t
|
o i-1: a -move-> c, p -move-> s
|
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: add a case involving the `b` and a new `r` branch...
r47307
copies: split creation of the graph and actual checking again...
r46324
test-copies: add subcase titles for various "conflicting" information variant...
r47293 Subcase: reset of the copy history on one side
``````````````````````````````````````````````
copies: split creation of the graph and actual checking again...
r46324 Merge:
- one with change to a file
- one deleting and recreating the file
Unlike in the 'BD/DB' cases, an actual merge happened here. So we should
consider history and rename on both branch of the merge.
test-copies: improve description of the D+G case...
r47287 $ case_desc="actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content"
test-copies: use intermediate variable some commit descriptions...
r47282
copies: split creation of the graph and actual checking again...
r46324 $ hg up 'desc("i-2")'
test-copies: introduce case combining the `p` and `q` branch...
r47306 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
copies: split creation of the graph and actual checking again...
r46324 $ echo "some update" >> d
$ hg commit -m "g-1: update d"
created new head
$ hg up 'desc("d-2")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("g-1")' --tool :union
merging d
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
test-copies: use intermediate variable some commit descriptions...
r47282 $ hg ci -m "mDGm-0 $case_desc - one way"
copies: split creation of the graph and actual checking again...
r46324 $ hg up 'desc("g-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("d-2")' --tool :union
merging d
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
test-copies: use intermediate variable some commit descriptions...
r47282 $ hg ci -m "mGDm-0 $case_desc - the other way"
copies: split creation of the graph and actual checking again...
r46324 created new head
$ hg log -G --rev '::(desc("mDGm")+desc("mGDm"))'
test-copies: remove revision number from log...
r47297 @ mGDm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - the other way
copies: split creation of the graph and actual checking again...
r46324 |\
test-copies: remove revision number from log...
r47297 +---o mDGm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - one way
copies: split creation of the graph and actual checking again...
r46324 | |/
test-copies: remove revision number from log...
r47297 | o g-1: update d
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 o | d-2 re-add d
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 o | d-1 delete d
copies: split creation of the graph and actual checking again...
r46324 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies: split creation of the graph and actual checking again...
r46324 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies: split creation of the graph and actual checking again...
r46324 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: split creation of the graph and actual checking again...
r46324
test-copies: add subcase titles for various "conflicting" information variant...
r47293 Subcase: merging a change to a file with a "copy overwrite" to that file from another branch
````````````````````````````````````````````````````````````````````````````````````````````
copies: split creation of the graph and actual checking again...
r46324
Merge:
- one with change to a file (d)
- one overwriting that file with a rename (from h to i, to d)
This case is similar to BF/FB, but an actual merge happens, so both side of the
history are relevant.
Note:
| In this case, the merge get conflicting information since on one side we have
| "a -> c -> d". and one the other one we have "h -> i -> d".
|
| The current code arbitrarily pick one side
test-copies: improve description of the G+F case...
r47288 $ case_desc="merge - G side: content change, F side: copy overwrite, no content change"
test-copies: use intermediate variable some commit descriptions...
r47282
copies: split creation of the graph and actual checking again...
r46324 $ hg up 'desc("f-2")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("g-1")' --tool :union
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 merging d (no-changeset !)
0 files updated, 1 files merged, 0 files removed, 0 files unresolved (no-changeset !)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved (changeset !)
copies: split creation of the graph and actual checking again...
r46324 (branch merge, don't forget to commit)
test-copies: use intermediate variable some commit descriptions...
r47282 $ hg ci -m "mFGm-0 $case_desc - one way"
copies: split creation of the graph and actual checking again...
r46324 created new head
$ hg up 'desc("g-1")'
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 2 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-changeset !)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved (changeset !)
copies: split creation of the graph and actual checking again...
r46324 $ hg merge 'desc("f-2")' --tool :union
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 merging d (no-changeset !)
0 files updated, 1 files merged, 1 files removed, 0 files unresolved (no-changeset !)
0 files updated, 0 files merged, 1 files removed, 0 files unresolved (changeset !)
copies: split creation of the graph and actual checking again...
r46324 (branch merge, don't forget to commit)
test-copies: use intermediate variable some commit descriptions...
r47282 $ hg ci -m "mGFm-0 $case_desc - the other way"
copies: split creation of the graph and actual checking again...
r46324 created new head
$ hg log -G --rev '::(desc("mGFm")+desc("mFGm"))'
test-copies: remove revision number from log...
r47297 @ mGFm-0 merge - G side: content change, F side: copy overwrite, no content change - the other way
copies: split creation of the graph and actual checking again...
r46324 |\
test-copies: remove revision number from log...
r47297 +---o mFGm-0 merge - G side: content change, F side: copy overwrite, no content change - one way
copies: split creation of the graph and actual checking again...
r46324 | |/
test-copies: remove revision number from log...
r47297 | o g-1: update d
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 o | f-2: rename i -> d
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 o | f-1: rename h -> i
copies: split creation of the graph and actual checking again...
r46324 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies: split creation of the graph and actual checking again...
r46324 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies: split creation of the graph and actual checking again...
r46324 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: split creation of the graph and actual checking again...
r46324
Comparing with merging with a deletion (and keeping the file)
-------------------------------------------------------------
Merge:
- one removing a file (d)
- one updating that file
- the merge keep the modified version of the file (canceling the delete)
In this case, the file keep on living after the merge. So we should not drop its
copy tracing chain.
test-copies: improve description of the G+C case...
r47289 $ case_desc="merge updated/deleted - revive the file (updated content)"
copies: split creation of the graph and actual checking again...
r46324 $ hg up 'desc("c-1")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("g-1")'
file 'd' was deleted in local [working copy] but was modified in other [merge rev].
You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
What do you want to do? u
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
[1]
$ hg resolve -t :other d
(no more unresolved files)
test-copies: improve description of the G+C case...
r47289 $ hg ci -m "mCGm-0 $case_desc - one way"
copies: split creation of the graph and actual checking again...
r46324 created new head
$ hg up 'desc("g-1")'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("c-1")'
file 'd' was deleted in other [merge rev] but was modified in local [working copy].
You can use (c)hanged version, (d)elete, or leave (u)nresolved.
What do you want to do? u
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
[1]
$ hg resolve -t :local d
(no more unresolved files)
test-copies: improve description of the G+C case...
r47289 $ hg ci -m "mGCm-0 $case_desc - the other way"
copies: split creation of the graph and actual checking again...
r46324 created new head
$ hg log -G --rev '::(desc("mCGm")+desc("mGCm"))'
test-copies: remove revision number from log...
r47297 @ mGCm-0 merge updated/deleted - revive the file (updated content) - the other way
copies: split creation of the graph and actual checking again...
r46324 |\
test-copies: remove revision number from log...
r47297 +---o mCGm-0 merge updated/deleted - revive the file (updated content) - one way
copies: split creation of the graph and actual checking again...
r46324 | |/
test-copies: remove revision number from log...
r47297 | o g-1: update d
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 o | c-1 delete d
copies: split creation of the graph and actual checking again...
r46324 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies: split creation of the graph and actual checking again...
r46324 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies: split creation of the graph and actual checking again...
r46324 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: split creation of the graph and actual checking again...
r46324
Comparing with merge restoring an untouched deleted file
--------------------------------------------------------
Merge:
- one removing a file (d)
- one leaving the file untouched
- the merge actively restore the file to the same content.
In this case, the file keep on living after the merge. So we should not drop its
copy tracing chain.
test-copies: improve description of the B+C "revert/restore" case...
r47290 $ case_desc="merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge)"
copies: split creation of the graph and actual checking again...
r46324 $ hg up 'desc("c-1")'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("b-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg revert --rev 'desc("b-1")' d
test-copies: improve description of the B+C "revert/restore" case...
r47290 $ hg ci -m "mCB-revert-m-0 $case_desc - one way"
copies: split creation of the graph and actual checking again...
r46324 created new head
$ hg up 'desc("b-1")'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("c-1")'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg revert --rev 'desc("b-1")' d
test-copies: improve description of the B+C "revert/restore" case...
r47290 $ hg ci -m "mBC-revert-m-0 $case_desc - the other way"
copies: split creation of the graph and actual checking again...
r46324 created new head
$ hg log -G --rev '::(desc("mCB-revert-m")+desc("mBC-revert-m"))'
test-copies: remove revision number from log...
r47297 @ mBC-revert-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - the other way
copies: split creation of the graph and actual checking again...
r46324 |\
test-copies: remove revision number from log...
r47297 +---o mCB-revert-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - one way
copies: split creation of the graph and actual checking again...
r46324 | |/
test-copies: remove revision number from log...
r47297 | o c-1 delete d
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 o | b-1: b update
copies: split creation of the graph and actual checking again...
r46324 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies: split creation of the graph and actual checking again...
r46324 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies: split creation of the graph and actual checking again...
r46324 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: split creation of the graph and actual checking again...
r46324
$ hg up null --quiet
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 Merging a branch where a rename was deleted with a branch where the same file was renamed
------------------------------------------------------------------------------------------
Create a "conflicting" merge where `d` get removed on one branch before its
rename information actually conflict with the other branch.
(the copy information from the branch that was not deleted should win).
test-copies: improve description of the C+H case...
r47291 $ case_desc="simple merge - C side: d is the results of renames then deleted, H side: d is result of another rename (same content as the other branch)"
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 $ hg up 'desc("i-0")'
test-copies: add 3 new files with their own content...
r47302 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 $ hg mv b d
$ hg ci -m "h-1: b -(move)-> d"
created new head
$ hg up 'desc("c-1")'
test-copies: move the new files in the `i` branch...
r47303 2 files updated, 0 files merged, 3 files removed, 0 files unresolved
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 $ hg merge 'desc("h-1")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
test-copies: improve description of the C+H case...
r47291 $ hg ci -m "mCH-delete-before-conflict-m-0 $case_desc - one way"
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394
$ hg up 'desc("h-1")'
test-copies: move the new files in the `i` branch...
r47303 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 $ hg merge 'desc("c-1")'
test-copies: move the new files in the `i` branch...
r47303 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 (branch merge, don't forget to commit)
test-copies: improve description of the C+H case...
r47291 $ hg ci -m "mHC-delete-before-conflict-m-0 $case_desc - the other way"
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 created new head
$ hg log -G --rev '::(desc("mCH-delete-before-conflict-m")+desc("mHC-delete-before-conflict-m"))'
test-copies: remove revision number from log...
r47297 @ mHC-delete-before-conflict-m-0 simple merge - C side: d is the results of renames then deleted, H side: d is result of another rename (same content as the other branch) - the other way
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 |\
test-copies: remove revision number from log...
r47297 +---o mCH-delete-before-conflict-m-0 simple merge - C side: d is the results of renames then deleted, H side: d is result of another rename (same content as the other branch) - one way
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 | |/
test-copies: remove revision number from log...
r47297 | o h-1: b -(move)-> d
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 | |
test-copies: remove revision number from log...
r47297 o | c-1 delete d
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 | |
test-copies: move the new files in the `i` branch...
r47303 o | i-2: c -move-> d, s -move-> t
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 | |
test-copies: move the new files in the `i` branch...
r47303 o | i-1: a -move-> c, p -move-> s
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 |/
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394
test-copies: add a "change during merge" variant to the A+E test...
r47300 Variant of previous with extra changes introduced by the merge
--------------------------------------------------------------
Multiple cases above explicitely test cases where content are the same on both side during merge. In this section we will introduce variants for theses cases where new change are introduced to these file content during the merges.
Subcase: merge has same initial content on both side, but merge introduced a change
```````````````````````````````````````````````````````````````````````````````````
Same as `mAEm` and `mEAm` but with extra change to the file before commiting
- the "e-" branch renaming b to f (through 'g')
- the "a-" branch renaming d to f (through e)
$ case_desc="merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent)"
$ hg up 'desc("a-2")'
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("e-2")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved (no-changeset !)
0 files updated, 0 files merged, 1 files removed, 0 files unresolved (changeset !)
(branch merge, don't forget to commit)
$ echo "content change for mAE-change-m" > f
$ hg ci -m "mAE-change-m-0 $case_desc - one way"
created new head
$ hg up 'desc("e-2")'
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("a-2")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved (no-changeset !)
0 files updated, 0 files merged, 1 files removed, 0 files unresolved (changeset !)
(branch merge, don't forget to commit)
$ echo "content change for mEA-change-m" > f
$ hg ci -m "mEA-change-m-0 $case_desc - the other way"
created new head
$ hg log -G --rev '::(desc("mAE-change-m")+desc("mEA-change-m"))'
@ mEA-change-m-0 merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent) - the other way
|\
+---o mAE-change-m-0 merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent) - one way
| |/
| o e-2 g -move-> f
| |
| o e-1 b -move-> g
| |
o | a-2: e -move-> f
| |
o | a-1: d -move-> e
|/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
test-copies: add a "change during merge" variant to the A+E test...
r47300 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
test-copies: add a "change during merge" variant to the A+E test...
r47300 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: add a "change during merge" variant to the A+E test...
r47300
test-copies: add a test updating file content while merging a pure overwrite...
r47540 Subcase: merge overwrite common copy information, but with extra change during the merge
````````````````````````````````````````````````````````````````````````````````````````
Merge:
- one with change to an unrelated file (b)
- one overwriting a file (d) with a rename (from h to i to d)
- the merge update f content
$ case_desc="merge with extra change - B side: unrelated change, F side: overwrite d with a copy (from h->i->d)"
$ hg up 'desc("f-2")'
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
#if no-changeset
Matt Harbison
tests: run python script through quoted interpreter instead of directly...
r47859 $ hg debugindex d | "$PYTHON" ../no-linkrev
test-copies: add a test updating file content while merging a pure overwrite...
r47540 rev linkrev nodeid p1 p2
0 * d8252ab2e760 000000000000 000000000000
1 * b004912a8510 000000000000 000000000000
2 * 7b79e2fe0c89 000000000000 000000000000
3 * 17ec97e60577 d8252ab2e760 000000000000
4 * 06dabf50734c b004912a8510 17ec97e60577
5 * 19c0e3924691 17ec97e60577 b004912a8510
6 * 89c873a01d97 7b79e2fe0c89 17ec97e60577
7 * d55cb4e9ef57 000000000000 000000000000
#else
Matt Harbison
tests: run python script through quoted interpreter instead of directly...
r47859 $ hg debugindex d | "$PYTHON" ../no-linkrev
test-copies: add a test updating file content while merging a pure overwrite...
r47540 rev linkrev nodeid p1 p2
0 * ae258f702dfe 000000000000 000000000000
1 * b004912a8510 000000000000 000000000000
2 * 5cce88bf349f ae258f702dfe 000000000000
3 * cc269dd788c8 b004912a8510 5cce88bf349f
4 * 51c91a115080 5cce88bf349f b004912a8510
#endif
$ hg up 'desc("b-1")'
3 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-changeset !)
2 files updated, 0 files merged, 0 files removed, 0 files unresolved (changeset !)
$ hg merge 'desc("f-2")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved (no-changeset !)
0 files updated, 0 files merged, 1 files removed, 0 files unresolved (changeset !)
(branch merge, don't forget to commit)
$ echo "extra-change to (formelly h) during the merge" > d
$ hg ci -m "mBF-change-m-0 $case_desc - one way"
created new head
$ hg manifest --rev . --debug | grep " d"
1c334238bd42ec85c6a0d83fd1b2a898a6a3215d 644 d (no-changeset !)
cea2d99c0fde64672ef61953786fdff34f16e230 644 d (changeset !)
$ hg up 'desc("f-2")'
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("b-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ echo "extra-change to (formelly h) during the merge" > d
$ hg ci -m "mFB-change-m-0 $case_desc - the other way"
created new head
$ hg manifest --rev . --debug | grep " d"
Pulkit Goyal
commit: get info from mergestate whether a file was merged or not...
r47567 1c334238bd42ec85c6a0d83fd1b2a898a6a3215d 644 d (no-changeset !)
test-copies: add a test updating file content while merging a pure overwrite...
r47540 cea2d99c0fde64672ef61953786fdff34f16e230 644 d (changeset !)
#if no-changeset
Matt Harbison
tests: run python script through quoted interpreter instead of directly...
r47859 $ hg debugindex d | "$PYTHON" ../no-linkrev
test-copies: add a test updating file content while merging a pure overwrite...
r47540 rev linkrev nodeid p1 p2
0 * d8252ab2e760 000000000000 000000000000
1 * b004912a8510 000000000000 000000000000
2 * 7b79e2fe0c89 000000000000 000000000000
3 * 17ec97e60577 d8252ab2e760 000000000000
4 * 06dabf50734c b004912a8510 17ec97e60577
5 * 19c0e3924691 17ec97e60577 b004912a8510
6 * 89c873a01d97 7b79e2fe0c89 17ec97e60577
7 * d55cb4e9ef57 000000000000 000000000000
8 * 1c334238bd42 7b79e2fe0c89 000000000000
#else
Matt Harbison
tests: run python script through quoted interpreter instead of directly...
r47859 $ hg debugindex d | "$PYTHON" ../no-linkrev
test-copies: add a test updating file content while merging a pure overwrite...
r47540 rev linkrev nodeid p1 p2
0 * ae258f702dfe 000000000000 000000000000
1 * b004912a8510 000000000000 000000000000
2 * 5cce88bf349f ae258f702dfe 000000000000
3 * cc269dd788c8 b004912a8510 5cce88bf349f
4 * 51c91a115080 5cce88bf349f b004912a8510
5 * cea2d99c0fde ae258f702dfe 000000000000
#endif
$ hg log -G --rev '::(desc("mBF-change-m")+desc("mFB-change-m"))'
@ mFB-change-m-0 merge with extra change - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way
|\
+---o mBF-change-m-0 merge with extra change - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - one way
| |/
| o f-2: rename i -> d
| |
| o f-1: rename h -> i
| |
o | b-1: b update
|/
o i-2: c -move-> d, s -move-> t
|
o i-1: a -move-> c, p -move-> s
|
o i-0 initial commit: a b h p q r
test-copies: add a test updating file content while salvaging it...
r47569 Subcase: restoring and untouched deleted file, while touching it
````````````````````````````````````````````````````````````````
Merge:
- one removing a file (d)
- one leaving the file untouched
- the merge actively restore the file to the same content.
In this case, the file keep on living after the merge. So we should not drop its
copy tracing chain.
$ case_desc="merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge)"
$ hg up 'desc("c-1")'
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("b-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg revert --rev 'desc("b-1")' d
$ echo "new content for d after the revert" > d
$ hg ci -m "mCB-change-m-0 $case_desc - one way"
created new head
$ hg manifest --rev . --debug | grep " d"
e333780c17752a3b0dd15e3ad48aa4e5c745f621 644 d (no-changeset !)
4b540a18ad699234b2b2aa18cb69555ac9c4b1df 644 d (changeset !)
$ hg up 'desc("b-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("c-1")'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg revert --rev 'desc("b-1")' d
$ echo "new content for d after the revert" > d
$ hg ci -m "mBC-change-m-0 $case_desc - the other way"
created new head
$ hg manifest --rev . --debug | grep " d"
e333780c17752a3b0dd15e3ad48aa4e5c745f621 644 d (no-changeset !)
4b540a18ad699234b2b2aa18cb69555ac9c4b1df 644 d (changeset !)
$ hg up null --quiet
$ hg log -G --rev '::(desc("mCB-change-m")+desc("mBC-change-m"))'
o mBC-change-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - the other way
|\
+---o mCB-change-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - one way
| |/
| o c-1 delete d
| |
o | b-1: b update
|/
o i-2: c -move-> d, s -move-> t
|
o i-1: a -move-> c, p -move-> s
|
o i-0 initial commit: a b h p q r
test-copies: add test chaining multiple merges...
r47294 Decision from previous merge are properly chained with later merge
------------------------------------------------------------------
Subcase: chaining conflicting rename resolution
```````````````````````````````````````````````
The "mAEm" and "mEAm" case create a rename tracking conflict on file 'f'. We
add more change on the respective branch and merge again. These second merge
does not involve the file 'f' and the arbitration done within "mAEm" and "mEA"
about that file should stay unchanged.
test-copies: show some wrong ChangedFiles upgrade...
r47568 We also touch J during some of the merge to check for unrelated change to new file during merge.
test-copies: add test chaining multiple merges...
r47294 $ case_desc="chained merges (conflict -> simple) - same content everywhere"
(extra unrelated changes)
$ hg up 'desc("a-2")'
test-copies: add a test updating file content while salvaging it...
r47569 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
test-copies: add test chaining multiple merges...
r47294 $ echo j > unrelated-j
$ hg add unrelated-j
$ hg ci -m 'j-1: unrelated changes (based on the "a" series of changes)'
created new head
$ hg up 'desc("e-2")'
2 files updated, 0 files merged, 2 files removed, 0 files unresolved (no-changeset !)
1 files updated, 0 files merged, 2 files removed, 0 files unresolved (changeset !)
$ echo k > unrelated-k
$ hg add unrelated-k
$ hg ci -m 'k-1: unrelated changes (based on "e" changes)'
created new head
(merge variant 1)
$ hg up 'desc("mAEm")'
1 files updated, 0 files merged, 2 files removed, 0 files unresolved (no-changeset !)
0 files updated, 0 files merged, 2 files removed, 0 files unresolved (changeset !)
$ hg merge 'desc("k-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mAE,Km: $case_desc"
(merge variant 2)
$ hg up 'desc("k-1")'
2 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-changeset !)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved (changeset !)
$ hg merge 'desc("mAEm")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved (no-changeset !)
0 files updated, 0 files merged, 1 files removed, 0 files unresolved (changeset !)
(branch merge, don't forget to commit)
$ hg ci -m "mK,AEm: $case_desc"
created new head
(merge variant 3)
$ hg up 'desc("mEAm")'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("j-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
test-copies: show some wrong ChangedFiles upgrade...
r47568 $ echo jj > unrelated-j
test-copies: add test chaining multiple merges...
r47294 $ hg ci -m "mEA,Jm: $case_desc"
(merge variant 4)
$ hg up 'desc("j-1")'
test-copies: show some wrong ChangedFiles upgrade...
r47568 3 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-changeset !)
2 files updated, 0 files merged, 0 files removed, 0 files unresolved (changeset !)
test-copies: add test chaining multiple merges...
r47294 $ hg merge 'desc("mEAm")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved (no-changeset !)
0 files updated, 0 files merged, 1 files removed, 0 files unresolved (changeset !)
(branch merge, don't forget to commit)
test-copies: show some wrong ChangedFiles upgrade...
r47568 $ echo jj > unrelated-j
test-copies: add test chaining multiple merges...
r47294 $ hg ci -m "mJ,EAm: $case_desc"
created new head
$ hg log -G --rev '::(desc("mAE,Km") + desc("mK,AEm") + desc("mEA,Jm") + desc("mJ,EAm"))'
test-copies: remove revision number from log...
r47297 @ mJ,EAm: chained merges (conflict -> simple) - same content everywhere
test-copies: add test chaining multiple merges...
r47294 |\
test-copies: remove revision number from log...
r47297 +---o mEA,Jm: chained merges (conflict -> simple) - same content everywhere
test-copies: add test chaining multiple merges...
r47294 | |/
test-copies: remove revision number from log...
r47297 | | o mK,AEm: chained merges (conflict -> simple) - same content everywhere
test-copies: add test chaining multiple merges...
r47294 | | |\
test-copies: remove revision number from log...
r47297 | | +---o mAE,Km: chained merges (conflict -> simple) - same content everywhere
test-copies: add test chaining multiple merges...
r47294 | | | |/
test-copies: remove revision number from log...
r47297 | | | o k-1: unrelated changes (based on "e" changes)
test-copies: add test chaining multiple merges...
r47294 | | | |
test-copies: remove revision number from log...
r47297 | o | | j-1: unrelated changes (based on the "a" series of changes)
test-copies: add test chaining multiple merges...
r47294 | | | |
test-copies: remove revision number from log...
r47297 o-----+ mEAm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - the other way
test-copies: add test chaining multiple merges...
r47294 |/ / /
test-copies: remove revision number from log...
r47297 | o / mAEm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - one way
test-copies: add test chaining multiple merges...
r47294 |/|/
test-copies: remove revision number from log...
r47297 | o e-2 g -move-> f
test-copies: add test chaining multiple merges...
r47294 | |
test-copies: remove revision number from log...
r47297 | o e-1 b -move-> g
test-copies: add test chaining multiple merges...
r47294 | |
test-copies: remove revision number from log...
r47297 o | a-2: e -move-> f
test-copies: add test chaining multiple merges...
r47294 | |
test-copies: remove revision number from log...
r47297 o | a-1: d -move-> e
test-copies: add test chaining multiple merges...
r47294 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
test-copies: add test chaining multiple merges...
r47294 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
test-copies: add test chaining multiple merges...
r47294 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: add test chaining multiple merges...
r47294
test-copies: introduce merge chains test for the P/Q merges...
r47308 Subcase: chaining conflicting rename resolution, with actual merging happening
``````````````````````````````````````````````````````````````````````````````
The "mPQm" and "mQPm" case create a rename tracking conflict on file 't'. We
add more change on the respective branch and merge again. These second merge
does not involve the file 't' and the arbitration done within "mPQm" and "mQP"
about that file should stay unchanged.
$ case_desc="chained merges (conflict -> simple) - different content"
(extra unrelated changes)
$ hg up 'desc("p-2")'
3 files updated, 0 files merged, 3 files removed, 0 files unresolved
$ echo s > unrelated-s
$ hg add unrelated-s
$ hg ci -m 's-1: unrelated changes (based on the "p" series of changes)'
created new head
$ hg up 'desc("q-2")'
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ echo t > unrelated-t
$ hg add unrelated-t
$ hg ci -m 't-1: unrelated changes (based on "q" changes)'
created new head
(merge variant 1)
$ hg up 'desc("mPQm")'
1 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg merge 'desc("t-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mPQ,Tm: $case_desc"
(merge variant 2)
$ hg up 'desc("t-1")'
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("mPQm")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mT,PQm: $case_desc"
created new head
(merge variant 3)
$ hg up 'desc("mQPm")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("s-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mQP,Sm: $case_desc"
(merge variant 4)
$ hg up 'desc("s-1")'
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("mQPm")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mS,QPm: $case_desc"
created new head
$ hg up null --quiet
$ hg log -G --rev '::(desc("mPQ,Tm") + desc("mT,PQm") + desc("mQP,Sm") + desc("mS,QPm"))'
o mS,QPm: chained merges (conflict -> simple) - different content
|\
+---o mQP,Sm: chained merges (conflict -> simple) - different content
| |/
| | o mT,PQm: chained merges (conflict -> simple) - different content
| | |\
| | +---o mPQ,Tm: chained merges (conflict -> simple) - different content
| | | |/
| | | o t-1: unrelated changes (based on "q" changes)
| | | |
| o | | s-1: unrelated changes (based on the "p" series of changes)
| | | |
o-----+ mQPm-0 merge with copies info on both side - P side: rename t to v, Q side: r to v, (different content) - the other way
|/ / /
| o / mPQm-0 merge with copies info on both side - P side: rename t to v, Q side: r to v, (different content) - one way
|/|/
| o q-2 w -move-> v
| |
| o q-1 r -move-> w
| |
o | p-2: u -move-> v
| |
o | p-1: t -move-> u
|/
o i-2: c -move-> d, s -move-> t
|
o i-1: a -move-> c, p -move-> s
|
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: introduce merge chains test for the P/Q merges...
r47308
test-copies: add test chaining multiple merges...
r47295 Subcase: chaining salvage information during a merge
````````````````````````````````````````````````````
We add more change on the branch were the file was deleted. merging again
should preserve the fact eh file was salvaged.
$ case_desc="chained merges (salvaged -> simple) - same content (when the file exists)"
(creating the change)
$ hg up 'desc("c-1")'
test-copies: introduce merge chains test for the P/Q merges...
r47308 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
test-copies: add test chaining multiple merges...
r47295 $ echo l > unrelated-l
$ hg add unrelated-l
$ hg ci -m 'l-1: unrelated changes (based on "c" changes)'
created new head
(Merge variant 1)
$ hg up 'desc("mBC-revert-m")'
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("l-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mBC+revert,Lm: $case_desc"
(Merge variant 2)
$ hg up 'desc("mCB-revert-m")'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("l-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mCB+revert,Lm: $case_desc"
(Merge variant 3)
$ hg up 'desc("l-1")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("mBC-revert-m")'
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mL,BC+revertm: $case_desc"
created new head
(Merge variant 4)
$ hg up 'desc("l-1")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("mCB-revert-m")'
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mL,CB+revertm: $case_desc"
created new head
$ hg log -G --rev '::(desc("mBC+revert,Lm") + desc("mCB+revert,Lm") + desc("mL,BC+revertm") + desc("mL,CB+revertm"))'
test-copies: remove revision number from log...
r47297 @ mL,CB+revertm: chained merges (salvaged -> simple) - same content (when the file exists)
test-copies: add test chaining multiple merges...
r47295 |\
test-copies: remove revision number from log...
r47297 | | o mL,BC+revertm: chained merges (salvaged -> simple) - same content (when the file exists)
test-copies: add test chaining multiple merges...
r47295 | |/|
test-copies: remove revision number from log...
r47297 +-+---o mCB+revert,Lm: chained merges (salvaged -> simple) - same content (when the file exists)
test-copies: add test chaining multiple merges...
r47295 | | |
test-copies: remove revision number from log...
r47297 | +---o mBC+revert,Lm: chained merges (salvaged -> simple) - same content (when the file exists)
test-copies: add test chaining multiple merges...
r47295 | | |/
test-copies: remove revision number from log...
r47297 | o | l-1: unrelated changes (based on "c" changes)
test-copies: add test chaining multiple merges...
r47295 | | |
test-copies: remove revision number from log...
r47297 | | o mBC-revert-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - the other way
test-copies: add test chaining multiple merges...
r47295 | |/|
test-copies: remove revision number from log...
r47297 o---+ mCB-revert-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - one way
test-copies: add test chaining multiple merges...
r47295 |/ /
test-copies: remove revision number from log...
r47297 o | c-1 delete d
test-copies: add test chaining multiple merges...
r47295 | |
test-copies: remove revision number from log...
r47297 | o b-1: b update
test-copies: add test chaining multiple merges...
r47295 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
test-copies: add test chaining multiple merges...
r47295 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
test-copies: add test chaining multiple merges...
r47295 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: add test chaining multiple merges...
r47295
test-copies: add test chaining multiple merge...
r47296 Subcase: chaining "merged" information during a merge
``````````````````````````````````````````````````````
test-copies: add test chaining multiple merges...
r47295
test-copies: add test chaining multiple merge...
r47296 When a non-rename change are merged with a copy overwrite, the merge pick the copy source from (p1) as the reference. We should preserve this information in subsequent merges.
$ case_desc="chained merges (copy-overwrite -> simple) - same content"
(extra unrelated changes)
$ hg up 'desc("f-2")'
2 files updated, 0 files merged, 2 files removed, 0 files unresolved (no-changeset !)
1 files updated, 0 files merged, 2 files removed, 0 files unresolved (changeset !)
$ echo n > unrelated-n
$ hg add unrelated-n
$ hg ci -m 'n-1: unrelated changes (based on the "f" series of changes)'
created new head
$ hg up 'desc("g-1")'
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo o > unrelated-o
$ hg add unrelated-o
$ hg ci -m 'o-1: unrelated changes (based on "g" changes)'
created new head
(merge variant 1)
$ hg up 'desc("mFGm")'
1 files updated, 0 files merged, 2 files removed, 0 files unresolved (no-changeset !)
0 files updated, 0 files merged, 2 files removed, 0 files unresolved (changeset !)
$ hg merge 'desc("o-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mFG,Om: $case_desc"
(merge variant 2)
$ hg up 'desc("o-1")'
2 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-changeset !)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved (changeset !)
$ hg merge 'desc("FGm")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved (no-changeset !)
0 files updated, 0 files merged, 1 files removed, 0 files unresolved (changeset !)
(branch merge, don't forget to commit)
$ hg ci -m "mO,FGm: $case_desc"
created new head
(merge variant 3)
$ hg up 'desc("mGFm")'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("n-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mGF,Nm: $case_desc"
(merge variant 4)
$ hg up 'desc("n-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("mGFm")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mN,GFm: $case_desc"
created new head
$ hg log -G --rev '::(desc("mFG,Om") + desc("mO,FGm") + desc("mGF,Nm") + desc("mN,GFm"))'
test-copies: remove revision number from log...
r47297 @ mN,GFm: chained merges (copy-overwrite -> simple) - same content
test-copies: add test chaining multiple merge...
r47296 |\
test-copies: remove revision number from log...
r47297 +---o mGF,Nm: chained merges (copy-overwrite -> simple) - same content
test-copies: add test chaining multiple merge...
r47296 | |/
test-copies: remove revision number from log...
r47297 | | o mO,FGm: chained merges (copy-overwrite -> simple) - same content
test-copies: add test chaining multiple merge...
r47296 | | |\
test-copies: remove revision number from log...
r47297 | | +---o mFG,Om: chained merges (copy-overwrite -> simple) - same content
test-copies: add test chaining multiple merge...
r47296 | | | |/
test-copies: remove revision number from log...
r47297 | | | o o-1: unrelated changes (based on "g" changes)
test-copies: add test chaining multiple merge...
r47296 | | | |
test-copies: remove revision number from log...
r47297 | o | | n-1: unrelated changes (based on the "f" series of changes)
test-copies: add test chaining multiple merge...
r47296 | | | |
test-copies: remove revision number from log...
r47297 o-----+ mGFm-0 merge - G side: content change, F side: copy overwrite, no content change - the other way
test-copies: add test chaining multiple merge...
r47296 |/ / /
test-copies: remove revision number from log...
r47297 | o / mFGm-0 merge - G side: content change, F side: copy overwrite, no content change - one way
test-copies: add test chaining multiple merge...
r47296 |/|/
test-copies: remove revision number from log...
r47297 | o g-1: update d
test-copies: add test chaining multiple merge...
r47296 | |
test-copies: remove revision number from log...
r47297 o | f-2: rename i -> d
test-copies: add test chaining multiple merge...
r47296 | |
test-copies: remove revision number from log...
r47297 o | f-1: rename h -> i
test-copies: add test chaining multiple merge...
r47296 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
test-copies: add test chaining multiple merge...
r47296 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
test-copies: add test chaining multiple merge...
r47296 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: add test chaining multiple merge...
r47296
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325
test-copies: introduce merge chaing test for the A/E + change tests...
r47301 Subcase: chaining conflicting rename resolution, with extra change during the merge
```````````````````````````````````````````````````````````````````````````````````
The "mEA-change-m-0" and "mAE-change-m-0" case create a rename tracking conflict on file 'f'. We
add more change on the respective branch and merge again. These second merge
does not involve the file 'f' and the arbitration done within "mAEm" and "mEA"
about that file should stay unchanged.
$ case_desc="chained merges (conflict+change -> simple) - same content on both branch in the initial merge"
(merge variant 1)
$ hg up 'desc("mAE-change-m")'
2 files updated, 0 files merged, 3 files removed, 0 files unresolved
$ hg merge 'desc("k-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mAE-change,Km: $case_desc"
(merge variant 2)
$ hg up 'desc("k-1")'
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("mAE-change-m")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mK,AE-change-m: $case_desc"
created new head
(merge variant 3)
$ hg up 'desc("mEA-change-m")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc("j-1")'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mEA-change,Jm: $case_desc"
(merge variant 4)
$ hg up 'desc("j-1")'
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 'desc("mEA-change-m")'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "mJ,EA-change-m: $case_desc"
created new head
$ hg log -G --rev '::(desc("mAE-change,Km") + desc("mK,AE-change-m") + desc("mEA-change,Jm") + desc("mJ,EA-change-m"))'
@ mJ,EA-change-m: chained merges (conflict+change -> simple) - same content on both branch in the initial merge
|\
+---o mEA-change,Jm: chained merges (conflict+change -> simple) - same content on both branch in the initial merge
| |/
| | o mK,AE-change-m: chained merges (conflict+change -> simple) - same content on both branch in the initial merge
| | |\
| | +---o mAE-change,Km: chained merges (conflict+change -> simple) - same content on both branch in the initial merge
| | | |/
| | | o k-1: unrelated changes (based on "e" changes)
| | | |
| o | | j-1: unrelated changes (based on the "a" series of changes)
| | | |
o-----+ mEA-change-m-0 merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent) - the other way
|/ / /
| o / mAE-change-m-0 merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent) - one way
|/|/
| o e-2 g -move-> f
| |
| o e-1 b -move-> g
| |
o | a-2: e -move-> f
| |
o | a-1: d -move-> e
|/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
test-copies: introduce merge chaing test for the A/E + change tests...
r47301 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
test-copies: introduce merge chaing test for the A/E + change tests...
r47301 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: introduce merge chaing test for the A/E + change tests...
r47301
copies-tests: add a summary of all cases created in test-copies-chain-merge.t...
r46801 Summary of all created cases
----------------------------
copies-tests: update to null in test-copies-chain-merge.t...
r46802 $ hg up --quiet null
copies-tests: add a summary of all cases created in test-copies-chain-merge.t...
r46801 (This exists to help keeping a compact list of the various cases we have built)
$ hg log -T '{desc|firstline}\n'| sort
a-1: d -move-> e
a-2: e -move-> f
b-1: b update
c-1 delete d
d-1 delete d
d-2 re-add d
e-1 b -move-> g
e-2 g -move-> f
f-1: rename h -> i
f-2: rename i -> d
g-1: update d
h-1: b -(move)-> d
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 i-0 initial commit: a b h p q r
test-copies: move the new files in the `i` branch...
r47303 i-1: a -move-> c, p -move-> s
i-2: c -move-> d, s -move-> t
test-copies: add test chaining multiple merges...
r47294 j-1: unrelated changes (based on the "a" series of changes)
k-1: unrelated changes (based on "e" changes)
test-copies: add test chaining multiple merges...
r47295 l-1: unrelated changes (based on "c" changes)
test-copies: improve description of the A+B case...
r47283 mABm-0 simple merge - A side: multiple renames, B side: unrelated update - the other way
test-copies: add test chaining multiple merges...
r47294 mAE,Km: chained merges (conflict -> simple) - same content everywhere
test-copies: introduce merge chaing test for the A/E + change tests...
r47301 mAE-change,Km: chained merges (conflict+change -> simple) - same content on both branch in the initial merge
test-copies: add a "change during merge" variant to the A+E test...
r47300 mAE-change-m-0 merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent) - one way
test-copies: improve description of the A+E case...
r47286 mAEm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - one way
test-copies: improve description of the A+B case...
r47283 mBAm-0 simple merge - A side: multiple renames, B side: unrelated update - one way
test-copies: add test chaining multiple merges...
r47295 mBC+revert,Lm: chained merges (salvaged -> simple) - same content (when the file exists)
test-copies: add a test updating file content while salvaging it...
r47569 mBC-change-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - the other way
test-copies: improve description of the B+C "revert/restore" case...
r47290 mBC-revert-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - the other way
test-copies: improve description of the B+C case...
r47284 mBCm-0 simple merge - C side: delete a file with copies history , B side: unrelated update - one way
copies-tests: add a summary of all cases created in test-copies-chain-merge.t...
r46801 mBCm-1 re-add d
test-copies: improve description of the B+D case...
r47285 mBDm-0 simple merge - B side: unrelated update, D side: delete and recreate a file (with different content) - one way
test-copies: add a test updating file content while merging a pure overwrite...
r47540 mBF-change-m-0 merge with extra change - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - one way
test-copies: improve description of the B+F case...
r47292 mBFm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - one way
test-copies: add a case involving the `b` and a new `r` branch...
r47307 mBRm-0 simple merge - B side: unrelated change, R side: overwrite d with a copy (from r->x->t) different content - one way
test-copies: add test chaining multiple merges...
r47295 mCB+revert,Lm: chained merges (salvaged -> simple) - same content (when the file exists)
test-copies: add a test updating file content while salvaging it...
r47569 mCB-change-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - one way
test-copies: improve description of the B+C "revert/restore" case...
r47290 mCB-revert-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - one way
test-copies: improve description of the B+C case...
r47284 mCBm-0 simple merge - C side: delete a file with copies history , B side: unrelated update - the other way
copies-tests: add a summary of all cases created in test-copies-chain-merge.t...
r46801 mCBm-1 re-add d
test-copies: improve description of the G+C case...
r47289 mCGm-0 merge updated/deleted - revive the file (updated content) - one way
test-copies: improve description of the C+H case...
r47291 mCH-delete-before-conflict-m-0 simple merge - C side: d is the results of renames then deleted, H side: d is result of another rename (same content as the other branch) - one way
test-copies: improve description of the B+D case...
r47285 mDBm-0 simple merge - B side: unrelated update, D side: delete and recreate a file (with different content) - the other way
test-copies: improve description of the D+G case...
r47287 mDGm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - one way
test-copies: add test chaining multiple merges...
r47294 mEA,Jm: chained merges (conflict -> simple) - same content everywhere
test-copies: introduce merge chaing test for the A/E + change tests...
r47301 mEA-change,Jm: chained merges (conflict+change -> simple) - same content on both branch in the initial merge
test-copies: add a "change during merge" variant to the A+E test...
r47300 mEA-change-m-0 merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent) - the other way
test-copies: improve description of the A+E case...
r47286 mEAm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - the other way
test-copies: add a test updating file content while merging a pure overwrite...
r47540 mFB-change-m-0 merge with extra change - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way
test-copies: improve description of the B+F case...
r47292 mFBm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way
test-copies: add test chaining multiple merge...
r47296 mFG,Om: chained merges (copy-overwrite -> simple) - same content
test-copies: improve description of the G+F case...
r47288 mFGm-0 merge - G side: content change, F side: copy overwrite, no content change - one way
test-copies: improve description of the G+C case...
r47289 mGCm-0 merge updated/deleted - revive the file (updated content) - the other way
test-copies: improve description of the D+G case...
r47287 mGDm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - the other way
test-copies: add test chaining multiple merge...
r47296 mGF,Nm: chained merges (copy-overwrite -> simple) - same content
test-copies: improve description of the G+F case...
r47288 mGFm-0 merge - G side: content change, F side: copy overwrite, no content change - the other way
test-copies: improve description of the C+H case...
r47291 mHC-delete-before-conflict-m-0 simple merge - C side: d is the results of renames then deleted, H side: d is result of another rename (same content as the other branch) - the other way
test-copies: introduce merge chaing test for the A/E + change tests...
r47301 mJ,EA-change-m: chained merges (conflict+change -> simple) - same content on both branch in the initial merge
test-copies: add test chaining multiple merges...
r47294 mJ,EAm: chained merges (conflict -> simple) - same content everywhere
test-copies: introduce merge chaing test for the A/E + change tests...
r47301 mK,AE-change-m: chained merges (conflict+change -> simple) - same content on both branch in the initial merge
test-copies: add test chaining multiple merges...
r47294 mK,AEm: chained merges (conflict -> simple) - same content everywhere
test-copies: add test chaining multiple merges...
r47295 mL,BC+revertm: chained merges (salvaged -> simple) - same content (when the file exists)
mL,CB+revertm: chained merges (salvaged -> simple) - same content (when the file exists)
test-copies: add test chaining multiple merge...
r47296 mN,GFm: chained merges (copy-overwrite -> simple) - same content
mO,FGm: chained merges (copy-overwrite -> simple) - same content
test-copies: introduce merge chains test for the P/Q merges...
r47308 mPQ,Tm: chained merges (conflict -> simple) - different content
test-copies: introduce case combining the `p` and `q` branch...
r47306 mPQm-0 merge with copies info on both side - P side: rename t to v, Q side: r to v, (different content) - one way
test-copies: introduce merge chains test for the P/Q merges...
r47308 mQP,Sm: chained merges (conflict -> simple) - different content
test-copies: introduce case combining the `p` and `q` branch...
r47306 mQPm-0 merge with copies info on both side - P side: rename t to v, Q side: r to v, (different content) - the other way
test-copies: add a case involving the `b` and a new `r` branch...
r47307 mRBm-0 simple merge - B side: unrelated change, R side: overwrite d with a copy (from r->x->t) different content - the other way
test-copies: introduce merge chains test for the P/Q merges...
r47308 mS,QPm: chained merges (conflict -> simple) - different content
mT,PQm: chained merges (conflict -> simple) - different content
test-copies: add test chaining multiple merge...
r47296 n-1: unrelated changes (based on the "f" series of changes)
o-1: unrelated changes (based on "g" changes)
test-copies: add a `p` branch similar to the `a` but on the new files...
r47304 p-1: t -move-> u
p-2: u -move-> v
test-copies: add a `q` branch similar to the `e` but on the new files...
r47305 q-1 r -move-> w
q-2 w -move-> v
test-copies: add a case involving the `b` and a new `r` branch...
r47307 r-1: rename r -> x
r-2: rename t -> x
test-copies: introduce merge chains test for the P/Q merges...
r47308 s-1: unrelated changes (based on the "p" series of changes)
t-1: unrelated changes (based on "q" changes)
copies-tests: add a summary of all cases created in test-copies-chain-merge.t...
r46801
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 Test that sidedata computations during upgrades are correct
===========================================================
We upgrade a repository that is not using sidedata (the filelog case) and
check that the same side data have been generated as if they were computed at
commit time.
upgrade: allow sidedata upgrade to modify revision flag...
r46327 #if upgraded
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 $ cat >> $HGRCPATH << EOF
> [format]
> exp-use-copies-side-data-changeset = yes
> EOF
$ hg debugformat -v
format-variant repo config default
fncache: yes yes yes
Simon Sapin
dirstate-v2: Add `hg debugupgraderepo` command support...
r48111 dirstate-v2: no no no
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 dotencode: yes yes yes
generaldelta: yes yes yes
Pulkit Goyal
share: move share safe functionality out of experimental...
r47052 share-safe: no no no
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 sparserevlog: yes yes yes
persistent-nodemap: enable the feature by default when using Rust...
r47646 persistent-nodemap: no no no (no-rust !)
persistent-nodemap: yes yes no (rust !)
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 copies-sdc: no yes no
changelogv2: `copies-side-data` now implies `changelogv2`...
r48039 revlog-v2: no no no
changelog-v2: no yes no
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 plain-cl-delta: yes yes yes
compression: * (glob)
compression-level: default default default
$ hg debugupgraderepo --run --quiet
upgrade will perform the following actions:
requirements
preserved: * (glob)
changelogv2: `copies-side-data` now implies `changelogv2`...
r48039 added: exp-changelog-v2, exp-copies-sidedata-changeset
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325
upgrade: display the list of processed revlog before proceeding...
r46649 processed revlogs:
- all-filelogs
- changelog
- manifest
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 #endif
copies: tests and fix parallel computation of changed file information...
r47362 #if upgraded-parallel
$ cat >> $HGRCPATH << EOF
> [format]
> exp-use-copies-side-data-changeset = yes
> [experimental]
> worker.repository-upgrade=yes
> [worker]
> enabled=yes
> numcpus=8
> EOF
$ hg debugformat -v
format-variant repo config default
fncache: yes yes yes
Simon Sapin
dirstate-v2: Add `hg debugupgraderepo` command support...
r48111 dirstate-v2: no no no
copies: tests and fix parallel computation of changed file information...
r47362 dotencode: yes yes yes
generaldelta: yes yes yes
share-safe: no no no
sparserevlog: yes yes yes
persistent-nodemap: enable the feature by default when using Rust...
r47646 persistent-nodemap: no no no (no-rust !)
persistent-nodemap: yes yes no (rust !)
copies: tests and fix parallel computation of changed file information...
r47362 copies-sdc: no yes no
changelogv2: `copies-side-data` now implies `changelogv2`...
r48039 revlog-v2: no no no
changelog-v2: no yes no
copies: tests and fix parallel computation of changed file information...
r47362 plain-cl-delta: yes yes yes
compression: * (glob)
compression-level: default default default
$ hg debugupgraderepo --run --quiet
upgrade will perform the following actions:
requirements
preserved: * (glob)
changelogv2: `copies-side-data` now implies `changelogv2`...
r48039 added: exp-changelog-v2, exp-copies-sidedata-changeset
copies: tests and fix parallel computation of changed file information...
r47362
processed revlogs:
- all-filelogs
- changelog
- manifest
#endif
test-copies: test that copies' sidedata does not get corrupted during pull...
r47851 #if pull
$ cd ..
$ mv repo-chain repo-source
$ hg init repo-chain
$ cd repo-chain
$ hg pull ../repo-source
pulling from ../repo-source
requesting all changes
adding changesets
adding manifests
adding file changes
added 80 changesets with 44 changes to 25 files (+39 heads)
new changesets a3a31bbefea6:908ce9259ffa
(run 'hg heads' to see heads, 'hg merge' to merge)
#endif
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325
test-copies: test that copies' sidedata can get computed during pull...
r47853 #if pull-upgrade
$ cat >> $HGRCPATH << EOF
> [format]
> exp-use-copies-side-data-changeset = yes
> [experimental]
> changegroup4 = yes
> EOF
$ cd ..
$ mv repo-chain repo-source
$ hg init repo-chain
$ cd repo-chain
$ hg pull ../repo-source
pulling from ../repo-source
requesting all changes
adding changesets
adding manifests
adding file changes
added 80 changesets with 44 changes to 25 files (+39 heads)
new changesets a3a31bbefea6:908ce9259ffa
(run 'hg heads' to see heads, 'hg merge' to merge)
#endif
test-copies: test that copies' sidedata does not get corrupted during push...
r47852 #if push
$ cd ..
$ mv repo-chain repo-source
$ hg init repo-chain
$ cd repo-source
$ hg push ../repo-chain
pushing to ../repo-chain
searching for changes
adding changesets
adding manifests
adding file changes
added 80 changesets with 44 changes to 25 files (+39 heads)
$ cd ../repo-chain
#endif
test-copies: test that copies' sidedata can get computed during push...
r47854 #if push-upgrade
$ cat >> $HGRCPATH << EOF
> [format]
> exp-use-copies-side-data-changeset = yes
> [experimental]
> changegroup4 = yes
> EOF
$ cd ..
$ mv repo-chain repo-source
$ hg init repo-chain
$ cd repo-source
$ hg push ../repo-chain
pushing to ../repo-chain
searching for changes
adding changesets
adding manifests
adding file changes
added 80 changesets with 44 changes to 25 files (+39 heads)
$ cd ../repo-chain
#endif
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325
upgrade: allow sidedata upgrade to modify revision flag...
r46327 #if no-compatibility no-filelog no-changeset
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325
copy-tracing: add a --compute flag to debugchangedfiles...
r47208 $ hg debugchangedfiles --compute 0
added : a, ;
added : b, ;
added : h, ;
test-copies: add 3 new files with their own content...
r47302 added : p, ;
added : q, ;
added : r, ;
copy-tracing: add a --compute flag to debugchangedfiles...
r47208
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 $ for rev in `hg log --rev 'all()' -T '{rev}\n'`; do
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 > case_id=`hg log -r $rev -T '{word(0, desc, ":")}\n'`
> echo "##### revision \"$case_id\" #####"
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 > hg debugsidedata -c -v -- $rev
> hg debugchangedfiles $rev
> done
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "i-0 initial commit" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
test-copies: add 3 new files with their own content...
r47302 entry-0014 size 64
'\x00\x00\x00\x06\x04\x00\x00\x00\x01\x00\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x04\x00\x00\x00\x06\x00\x00\x00\x00abhpqr'
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 added : a, ;
added : b, ;
added : h, ;
test-copies: add 3 new files with their own content...
r47302 added : p, ;
added : q, ;
added : r, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "i-1" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
test-copies: move the new files in the `i` branch...
r47303 entry-0014 size 44
'\x00\x00\x00\x04\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00\x0c\x00\x00\x00\x03\x00\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x02acps'
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 removed : a, ;
added p1: c, a;
test-copies: move the new files in the `i` branch...
r47303 removed : p, ;
added p1: s, p;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "i-2" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
test-copies: move the new files in the `i` branch...
r47303 entry-0014 size 44
'\x00\x00\x00\x04\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00\x0c\x00\x00\x00\x03\x00\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x02cdst'
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 removed : c, ;
added p1: d, c;
test-copies: move the new files in the `i` branch...
r47303 removed : s, ;
added p1: t, s;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "a-1" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00de'
removed : d, ;
added p1: e, d;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "a-2" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00ef'
removed : e, ;
added p1: f, e;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "b-1" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x14\x00\x00\x00\x01\x00\x00\x00\x00b'
touched : b, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "c-1 delete d" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x0c\x00\x00\x00\x01\x00\x00\x00\x00d'
removed : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "d-1 delete d" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x0c\x00\x00\x00\x01\x00\x00\x00\x00d'
removed : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "d-2 re-add d" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x04\x00\x00\x00\x01\x00\x00\x00\x00d'
added : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "e-1 b -move-> g" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00bg'
removed : b, ;
added p1: g, b;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "e-2 g -move-> f" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x02\x06\x00\x00\x00\x01\x00\x00\x00\x01\x0c\x00\x00\x00\x02\x00\x00\x00\x00fg'
added p1: f, g;
removed : g, ;
test-copies: add a `p` branch similar to the `a` but on the new files...
r47304 ##### revision "p-1" #####
1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00tu'
removed : t, ;
added p1: u, t;
##### revision "p-2" #####
1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00uv'
removed : u, ;
added p1: v, u;
test-copies: add a `q` branch similar to the `e` but on the new files...
r47305 ##### revision "q-1 r -move-> w" #####
1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00rw'
removed : r, ;
added p1: w, r;
##### revision "q-2 w -move-> v" #####
1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x02\x06\x00\x00\x00\x01\x00\x00\x00\x01\x0c\x00\x00\x00\x02\x00\x00\x00\x00vw'
added p1: v, w;
removed : w, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mBAm-0 simple merge - A side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mABm-0 simple merge - A side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mBCm-0 simple merge - C side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mBCm-1 re-add d" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x04\x00\x00\x00\x01\x00\x00\x00\x00d'
added : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mCBm-0 simple merge - C side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mCBm-1 re-add d" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x04\x00\x00\x00\x01\x00\x00\x00\x00d'
added : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mBDm-0 simple merge - B side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mDBm-0 simple merge - B side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mAEm-0 merge with copies info on both side - A side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00f'
merged : f, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mEAm-0 merge with copies info on both side - A side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00f'
merged : f, ;
test-copies: introduce case combining the `p` and `q` branch...
r47306 ##### revision "mPQm-0 merge with copies info on both side - P side" #####
1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00v'
merged : v, ;
##### revision "mQPm-0 merge with copies info on both side - P side" #####
1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00v'
merged : v, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "f-1" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00hi'
removed : h, ;
added p1: i, h;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "f-2" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x02\x16\x00\x00\x00\x01\x00\x00\x00\x01\x0c\x00\x00\x00\x02\x00\x00\x00\x00di'
touched p1: d, i;
removed : i, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mBFm-0 simple merge - B side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mFBm-0 simple merge - B side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: add a case involving the `b` and a new `r` branch...
r47307 ##### revision "r-1" #####
1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00rx'
removed : r, ;
added p1: x, r;
##### revision "r-2" #####
1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x02\x16\x00\x00\x00\x01\x00\x00\x00\x01\x0c\x00\x00\x00\x02\x00\x00\x00\x00tx'
touched p1: t, x;
removed : x, ;
##### revision "mBRm-0 simple merge - B side" #####
1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
##### revision "mRBm-0 simple merge - B side" #####
1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "g-1" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x14\x00\x00\x00\x01\x00\x00\x00\x00d'
touched : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mDGm-0 actual content merge, copies on one side - D side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d'
merged : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mGDm-0 actual content merge, copies on one side - D side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d'
merged : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mFGm-0 merge - G side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d'
merged : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mGFm-0 merge - G side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d'
merged : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mCGm-0 merge updated/deleted - revive the file (updated content) - one way" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x10\x00\x00\x00\x01\x00\x00\x00\x00d'
salvaged : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mGCm-0 merge updated/deleted - revive the file (updated content) - the other way" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x10\x00\x00\x00\x01\x00\x00\x00\x00d'
salvaged : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mCB-revert-m-0 merge explicitely revive deleted file - B side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x10\x00\x00\x00\x01\x00\x00\x00\x00d'
salvaged : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mBC-revert-m-0 merge explicitely revive deleted file - B side" #####
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325 1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x10\x00\x00\x00\x01\x00\x00\x00\x00d'
salvaged : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "h-1" #####
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00bd'
removed : b, ;
added p1: d, b;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mCH-delete-before-conflict-m-0 simple merge - C side" #####
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mHC-delete-before-conflict-m-0 simple merge - C side" #####
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: add a "change during merge" variant to the A+E test...
r47300 ##### revision "mAE-change-m-0 merge with file update and copies info on both side - A side" #####
1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00f'
merged : f, ;
##### revision "mEA-change-m-0 merge with file update and copies info on both side - A side" #####
1 sidedata entries
entry-0014 size 14
'\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00f'
merged : f, ;
test-copies: add a test updating file content while merging a pure overwrite...
r47540 ##### revision "mBF-change-m-0 merge with extra change - B side" #####
1 sidedata entries
entry-0014 size 14
copies: distinguish between merged and touched files during upgrade...
r47571 '\x00\x00\x00\x01\x14\x00\x00\x00\x01\x00\x00\x00\x00d'
touched : d, ;
test-copies: add a test updating file content while merging a pure overwrite...
r47540 ##### revision "mFB-change-m-0 merge with extra change - B side" #####
1 sidedata entries
entry-0014 size 14
copies: distinguish between merged and touched files during upgrade...
r47571 '\x00\x00\x00\x01\x14\x00\x00\x00\x01\x00\x00\x00\x00d'
touched : d, ;
test-copies: add a test updating file content while salvaging it...
r47569 ##### revision "mCB-change-m-0 merge explicitely revive deleted file - B side" #####
1 sidedata entries
entry-0014 size 14
copies: detect files as `touched/salvaged` if they only existed on one side...
r47570 '\x00\x00\x00\x01\x10\x00\x00\x00\x01\x00\x00\x00\x00d'
salvaged : d, ;
test-copies: add a test updating file content while salvaging it...
r47569 ##### revision "mBC-change-m-0 merge explicitely revive deleted file - B side" #####
1 sidedata entries
entry-0014 size 14
copies: detect files as `touched/salvaged` if they only existed on one side...
r47570 '\x00\x00\x00\x01\x10\x00\x00\x00\x01\x00\x00\x00\x00d'
salvaged : d, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "j-1" #####
test-copies: add test chaining multiple merges...
r47294 1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x01\x04\x00\x00\x00\x0b\x00\x00\x00\x00unrelated-j'
added : unrelated-j, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "k-1" #####
test-copies: add test chaining multiple merges...
r47294 1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x01\x04\x00\x00\x00\x0b\x00\x00\x00\x00unrelated-k'
added : unrelated-k, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mAE,Km" #####
test-copies: add test chaining multiple merges...
r47294 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mK,AEm" #####
test-copies: add test chaining multiple merges...
r47294 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mEA,Jm" #####
test-copies: add test chaining multiple merges...
r47294 1 sidedata entries
test-copies: show some wrong ChangedFiles upgrade...
r47568 entry-0014 size 24
copies: detect files as `touched/salvaged` if they only existed on one side...
r47570 '\x00\x00\x00\x01\x14\x00\x00\x00\x0b\x00\x00\x00\x00unrelated-j'
touched : unrelated-j, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mJ,EAm" #####
test-copies: add test chaining multiple merges...
r47294 1 sidedata entries
test-copies: show some wrong ChangedFiles upgrade...
r47568 entry-0014 size 24
copies: detect files as `touched/salvaged` if they only existed on one side...
r47570 '\x00\x00\x00\x01\x14\x00\x00\x00\x0b\x00\x00\x00\x00unrelated-j'
touched : unrelated-j, ;
test-copies: introduce merge chains test for the P/Q merges...
r47308 ##### revision "s-1" #####
1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x01\x04\x00\x00\x00\x0b\x00\x00\x00\x00unrelated-s'
added : unrelated-s, ;
##### revision "t-1" #####
1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x01\x04\x00\x00\x00\x0b\x00\x00\x00\x00unrelated-t'
added : unrelated-t, ;
##### revision "mPQ,Tm" #####
1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
##### revision "mT,PQm" #####
1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
##### revision "mQP,Sm" #####
1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
##### revision "mS,QPm" #####
1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "l-1" #####
test-copies: add test chaining multiple merges...
r47295 1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x01\x04\x00\x00\x00\x0b\x00\x00\x00\x00unrelated-l'
added : unrelated-l, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mBC+revert,Lm" #####
test-copies: add test chaining multiple merges...
r47295 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mCB+revert,Lm" #####
test-copies: add test chaining multiple merges...
r47295 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mL,BC+revertm" #####
test-copies: add test chaining multiple merges...
r47295 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mL,CB+revertm" #####
test-copies: add test chaining multiple merges...
r47295 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "n-1" #####
test-copies: add test chaining multiple merge...
r47296 1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x01\x04\x00\x00\x00\x0b\x00\x00\x00\x00unrelated-n'
added : unrelated-n, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "o-1" #####
test-copies: add test chaining multiple merge...
r47296 1 sidedata entries
entry-0014 size 24
'\x00\x00\x00\x01\x04\x00\x00\x00\x0b\x00\x00\x00\x00unrelated-o'
added : unrelated-o, ;
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mFG,Om" #####
test-copies: add test chaining multiple merge...
r47296 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mO,FGm" #####
test-copies: add test chaining multiple merge...
r47296 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mGF,Nm" #####
test-copies: add test chaining multiple merge...
r47296 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: use "case-id" instead of revision number when listing sidedata...
r47298 ##### revision "mN,GFm" #####
test-copies: add test chaining multiple merge...
r47296 1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test-copies: introduce merge chaing test for the A/E + change tests...
r47301 ##### revision "mAE-change,Km" #####
1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
##### revision "mK,AE-change-m" #####
1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
##### revision "mEA-change,Jm" #####
1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
##### revision "mJ,EA-change-m" #####
1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
test: move upgrade run and check earlier in test-copies-chain-merge...
r46325
#endif
copies: split creation of the graph and actual checking again...
r46324 Test copy information chaining
==============================
copies: properly match result during changeset centric copy tracing...
r46774 Check that matching only affect the destination and not intermediate path
-------------------------------------------------------------------------
The two status call should give the same value for f
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("a-2")'
A f
a
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies: properly match result during changeset centric copy tracing...
r46774 R a
test-copies: move the new files in the `i` branch...
r47303 R p
copies: properly match result during changeset centric copy tracing...
r46774 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("a-2")' f
A f
a (no-changeset no-compatibility !)
copies: split creation of the graph and actual checking again...
r46324 merging with unrelated change does not interfere with the renames
---------------------------------------------------------------
- rename on one side
- unrelated change on the other side
$ hg log -G --rev '::(desc("mABm")+desc("mBAm"))'
test-copies: remove revision number from log...
r47297 o mABm-0 simple merge - A side: multiple renames, B side: unrelated update - the other way
copies: split creation of the graph and actual checking again...
r46324 |\
test-copies: remove revision number from log...
r47297 +---o mBAm-0 simple merge - A side: multiple renames, B side: unrelated update - one way
copies: split creation of the graph and actual checking again...
r46324 | |/
test-copies: remove revision number from log...
r47297 | o b-1: b update
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 o | a-2: e -move-> f
copies: split creation of the graph and actual checking again...
r46324 | |
test-copies: remove revision number from log...
r47297 o | a-1: d -move-> e
copies: split creation of the graph and actual checking again...
r46324 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies: split creation of the graph and actual checking again...
r46324 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies: split creation of the graph and actual checking again...
r46324 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: split creation of the graph and actual checking again...
r46324
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mABm")'
A f
d
R d
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBAm")'
A f
d
R d
$ hg status --copies --rev 'desc("a-2")' --rev 'desc("mABm")'
M b
$ hg status --copies --rev 'desc("a-2")' --rev 'desc("mBAm")'
M b
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("mABm")'
M b
A f
d
R d
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBAm")'
M b
A f
d
R d
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mABm")'
M b
A f
a
test-copies: move the new files in the `i` branch...
r47303 A t
p
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 R a
test-copies: move the new files in the `i` branch...
r47303 R p
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBAm")'
M b
A f
a
test-copies: move the new files in the `i` branch...
r47303 A t
p
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 R a
test-copies: move the new files in the `i` branch...
r47303 R p
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169
merging with the side having a delete
-------------------------------------
case summary:
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 - one with change to an unrelated file
- one deleting the change
and recreate an unrelated file after the merge
$ hg log -G --rev '::(desc("mCBm")+desc("mBCm"))'
test-copies: remove revision number from log...
r47297 o mCBm-1 re-add d
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
test-copies: remove revision number from log...
r47297 o mCBm-0 simple merge - C side: delete a file with copies history , B side: unrelated update - the other way
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |\
test-copies: remove revision number from log...
r47297 | | o mBCm-1 re-add d
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 | | |
test-copies: remove revision number from log...
r47297 +---o mBCm-0 simple merge - C side: delete a file with copies history , B side: unrelated update - one way
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 | |/
test-copies: remove revision number from log...
r47297 | o c-1 delete d
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 | |
test-copies: remove revision number from log...
r47297 o | b-1: b update
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
- comparing from the merge
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBCm-0")'
R d
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCBm-0")'
R d
$ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBCm-0")'
M b
$ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCBm-0")'
M b
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBCm-0")'
M b
R d
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("mCBm-0")'
M b
R d
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBCm-0")'
M b
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 R a
test-copies: move the new files in the `i` branch...
r47303 R p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCBm-0")'
M b
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 R a
test-copies: move the new files in the `i` branch...
r47303 R p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
- comparing with the merge children re-adding the file
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBCm-1")'
M d
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCBm-1")'
M d
$ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBCm-1")'
M b
A d
$ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCBm-1")'
M b
A d
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBCm-1")'
M b
M d
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("mCBm-1")'
M b
M d
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBCm-1")'
M b
A d
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 R a
test-copies: move the new files in the `i` branch...
r47303 R p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCBm-1")'
M b
A d
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 R a
test-copies: move the new files in the `i` branch...
r47303 R p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
Comparing with a merge re-adding the file afterward
---------------------------------------------------
Merge:
- one with change to an unrelated file
- one deleting and recreating the change
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 $ hg log -G --rev '::(desc("mDBm")+desc("mBDm"))'
test-copies: remove revision number from log...
r47297 o mDBm-0 simple merge - B side: unrelated update, D side: delete and recreate a file (with different content) - the other way
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |\
test-copies: remove revision number from log...
r47297 +---o mBDm-0 simple merge - B side: unrelated update, D side: delete and recreate a file (with different content) - one way
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |/
test-copies: remove revision number from log...
r47297 | o d-2 re-add d
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |
test-copies: remove revision number from log...
r47297 | o d-1 delete d
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |
test-copies: remove revision number from log...
r47297 o | b-1: b update
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBDm-0")'
M d
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mDBm-0")'
M d
$ hg status --copies --rev 'desc("d-2")' --rev 'desc("mBDm-0")'
M b
$ hg status --copies --rev 'desc("d-2")' --rev 'desc("mDBm-0")'
M b
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBDm-0")'
M b
M d
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("mDBm-0")'
M b
M d
copies-tests: update the analysis of the BD/DB cases...
r44939 The bugs makes recorded copy is different depending of where we started the merge from since
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
$ hg manifest --debug --rev 'desc("mBDm-0")' | grep '644 d'
Pulkit Goyal
mergestate: store about files resolved in favour of other...
r45178 b004912a8510032a0350a74daa2803dadfb00e12 644 d
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg manifest --debug --rev 'desc("mDBm-0")' | grep '644 d'
b004912a8510032a0350a74daa2803dadfb00e12 644 d
$ hg manifest --debug --rev 'desc("d-2")' | grep '644 d'
b004912a8510032a0350a74daa2803dadfb00e12 644 d
$ hg manifest --debug --rev 'desc("b-1")' | grep '644 d'
test-copies: don't use empty file for "same content" cases...
r47281 d8252ab2e760b0d4e5288fd44cbd15a0fa567e16 644 d (no-changeset !)
ae258f702dfeca05bf9b6a22a97a4b5645570f11 644 d (changeset !)
Matt Harbison
tests: run python script through quoted interpreter instead of directly...
r47859 $ hg debugindex d | head -n 4 | "$PYTHON" ../no-linkrev
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 rev linkrev nodeid p1 p2
test-copies: filter out the linkrev part of `debugindex`...
r47299 0 * d8252ab2e760 000000000000 000000000000 (no-changeset !)
0 * ae258f702dfe 000000000000 000000000000 (changeset !)
1 * b004912a8510 000000000000 000000000000
2 * 7b79e2fe0c89 000000000000 000000000000 (no-changeset !)
2 * 5cce88bf349f ae258f702dfe 000000000000 (changeset !)
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
Pulkit Goyal
tests: update/remove outdated comments in test-copies-chain-merge.t...
r46230 Log output should not include a merge commit as it did not happen
copies-tests: update the analysis of the BD/DB cases...
r44939
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg log -Gfr 'desc("mBDm-0")' d
test-copies: remove revision number from log...
r47297 o d-2 re-add d
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
Pulkit Goyal
mergestate: store about files resolved in favour of other...
r45178 ~
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
$ hg log -Gfr 'desc("mDBm-0")' d
test-copies: remove revision number from log...
r47297 o d-2 re-add d
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 |
~
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBDm-0")'
M b
A d
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 R a
test-copies: move the new files in the `i` branch...
r47303 R p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mDBm-0")'
M b
A d
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 R a
test-copies: move the new files in the `i` branch...
r47303 R p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169
copies-tests: clarify the description of the EA/AE cases...
r44940 Comparing with a merge with colliding rename
--------------------------------------------
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
test-copies: add subcase titles for various "conflicting" information variant...
r47293 Subcase: new copy information on both side
``````````````````````````````````````````
copies-tests: clarify the description of the EA/AE cases...
r44940 - the "e-" branch renaming b to f (through 'g')
- the "a-" branch renaming d to f (through e)
copies: add a new test dedicated to testing chain of changeset with merge...
r44762
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 $ hg log -G --rev '::(desc("mAEm")+desc("mEAm"))'
test-copies: remove revision number from log...
r47297 o mEAm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - the other way
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |\
test-copies: remove revision number from log...
r47297 +---o mAEm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - one way
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |/
test-copies: remove revision number from log...
r47297 | o e-2 g -move-> f
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |
test-copies: remove revision number from log...
r47297 | o e-1 b -move-> g
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |
test-copies: remove revision number from log...
r47297 o | a-2: e -move-> f
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |
test-copies: remove revision number from log...
r47297 o | a-1: d -move-> e
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #if no-changeset
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg manifest --debug --rev 'desc("mAEm-0")' | grep '644 f'
test-copies: don't use empty file for "same content" cases...
r47281 2ff93c643948464ee1f871867910ae43a45b0bea 644 f
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg manifest --debug --rev 'desc("mEAm-0")' | grep '644 f'
test-copies: don't use empty file for "same content" cases...
r47281 2ff93c643948464ee1f871867910ae43a45b0bea 644 f
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg manifest --debug --rev 'desc("a-2")' | grep '644 f'
test-copies: don't use empty file for "same content" cases...
r47281 b76eb76580df486c3d51d63c5c210d4dd43a8ac7 644 f
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg manifest --debug --rev 'desc("e-2")' | grep '644 f'
test-copies: don't use empty file for "same content" cases...
r47281 e8825b386367b29fec957283a80bb47b47483fe1 644 f
Matt Harbison
tests: run python script through quoted interpreter instead of directly...
r47859 $ hg debugindex f | "$PYTHON" ../no-linkrev
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 rev linkrev nodeid p1 p2
test-copies: filter out the linkrev part of `debugindex`...
r47299 0 * b76eb76580df 000000000000 000000000000
1 * e8825b386367 000000000000 000000000000
2 * 2ff93c643948 b76eb76580df e8825b386367
test-copies: add a "change during merge" variant to the A+E test...
r47300 3 * 2f649fba7eb2 b76eb76580df e8825b386367
4 * 774e7c1637d5 e8825b386367 b76eb76580df
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #else
$ hg manifest --debug --rev 'desc("mAEm-0")' | grep '644 f'
test-copies: don't use empty file for "same content" cases...
r47281 ae258f702dfeca05bf9b6a22a97a4b5645570f11 644 f
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 $ hg manifest --debug --rev 'desc("mEAm-0")' | grep '644 f'
test-copies: don't use empty file for "same content" cases...
r47281 ae258f702dfeca05bf9b6a22a97a4b5645570f11 644 f
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 $ hg manifest --debug --rev 'desc("a-2")' | grep '644 f'
test-copies: don't use empty file for "same content" cases...
r47281 ae258f702dfeca05bf9b6a22a97a4b5645570f11 644 f
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 $ hg manifest --debug --rev 'desc("e-2")' | grep '644 f'
test-copies: don't use empty file for "same content" cases...
r47281 ae258f702dfeca05bf9b6a22a97a4b5645570f11 644 f
Matt Harbison
tests: run python script through quoted interpreter instead of directly...
r47859 $ hg debugindex f | "$PYTHON" ../no-linkrev
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 rev linkrev nodeid p1 p2
test-copies: filter out the linkrev part of `debugindex`...
r47299 0 * ae258f702dfe 000000000000 000000000000
test-copies: add a "change during merge" variant to the A+E test...
r47300 1 * d3613c1ec831 ae258f702dfe 000000000000
2 * 05e03c868bbc ae258f702dfe 000000000000
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #endif
copies: fix the changeset based algorithm regarding merge...
r45252
# Here the filelog based implementation is not looking at the rename
# information (because the file exist on both side). However the changelog
# based on works fine. We have different output.
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mAEm-0")'
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 M f (no-changeset !)
b (no-filelog no-changeset !)
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 R b
$ hg status --copies --rev 'desc("a-2")' --rev 'desc("mEAm-0")'
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 M f (no-changeset !)
b (no-filelog no-changeset !)
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 R b
$ hg status --copies --rev 'desc("e-2")' --rev 'desc("mAEm-0")'
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 M f (no-changeset !)
d (no-filelog no-changeset !)
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 R d
$ hg status --copies --rev 'desc("e-2")' --rev 'desc("mEAm-0")'
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 M f (no-changeset !)
d (no-filelog no-changeset !)
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 R d
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("a-2")'
A f
d
R d
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("e-2")'
A f
b
R b
copies: fix the changeset based algorithm regarding merge...
r45252
# From here, we run status against revision where both source file exists.
#
# The filelog based implementation picks an arbitrary side based on revision
# numbers. So the same side "wins" whatever the parents order is. This is
# sub-optimal because depending on revision numbers means the result can be
# different from one repository to the next.
#
# The changeset based algorithm use the parent order to break tie on conflicting
# information and will have a different order depending on who is p1 and p2.
# That order is stable accross repositories. (data from p1 prevails)
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mAEm-0")'
A f
d
R b
R d
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("mEAm-0")'
A f
copies: fix the changeset based algorithm regarding merge...
r45252 d (filelog !)
b (no-filelog !)
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 R b
R d
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAEm-0")'
A f
a
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 R a
R b
test-copies: move the new files in the `i` branch...
r47303 R p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEAm-0")'
A f
copies: fix the changeset based algorithm regarding merge...
r45252 a (filelog !)
b (no-filelog !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies: add a new test dedicated to testing chain of changeset with merge...
r44762 R a
R b
test-copies: move the new files in the `i` branch...
r47303 R p
copies-tests: add a test with a rename overwriting another file...
r44943
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169
test-copies: add subcase titles for various "conflicting" information variant...
r47293 Subcase: existing copy information overwritten on one branch
````````````````````````````````````````````````````````````
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 Note:
| In this case, one of the merge wrongly record a merge while there is none.
| This lead to bad copy tracing information to be dug up.
copies-tests: add a test with a rename overwriting another file...
r44943 Merge:
- one with change to an unrelated file (b)
- one overwriting a file (d) with a rename (from h to i to d)
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 $ hg log -G --rev '::(desc("mBFm")+desc("mFBm"))'
test-copies: remove revision number from log...
r47297 o mFBm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |\
test-copies: remove revision number from log...
r47297 +---o mBFm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - one way
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |/
test-copies: remove revision number from log...
r47297 | o f-2: rename i -> d
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |
test-copies: remove revision number from log...
r47297 | o f-1: rename h -> i
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |
test-copies: remove revision number from log...
r47297 o | b-1: b update
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169
copies-tests: add a test with a rename overwriting another file...
r44943 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBFm-0")'
M b
A d
Pulkit Goyal
mergestate: store about files resolved in favour of other...
r45178 h
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies-tests: add a test with a rename overwriting another file...
r44943 R a
R h
test-copies: move the new files in the `i` branch...
r47303 R p
copies-tests: add a test with a rename overwriting another file...
r44943 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFBm-0")'
M b
A d
h
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies-tests: add a test with a rename overwriting another file...
r44943 R a
R h
test-copies: move the new files in the `i` branch...
r47303 R p
copies-tests: add a test with a rename overwriting another file...
r44943 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBFm-0")'
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 M d (no-changeset !)
h (no-filelog no-changeset !)
copies-tests: add a test with a rename overwriting another file...
r44943 R h
$ hg status --copies --rev 'desc("f-2")' --rev 'desc("mBFm-0")'
M b
$ hg status --copies --rev 'desc("f-1")' --rev 'desc("mBFm-0")'
M b
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 M d (no-changeset !)
i (no-filelog no-changeset !)
copies-tests: add a test with a rename overwriting another file...
r44943 R i
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mFBm-0")'
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 M d (no-changeset !)
h (no-filelog no-changeset !)
copies-tests: add a test with a rename overwriting another file...
r44943 R h
$ hg status --copies --rev 'desc("f-2")' --rev 'desc("mFBm-0")'
M b
$ hg status --copies --rev 'desc("f-1")' --rev 'desc("mFBm-0")'
M b
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 M d (no-changeset !)
i (no-filelog no-changeset !)
copies-tests: add a test with a rename overwriting another file...
r44943 R i
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #if no-changeset
copies-tests: add a test with a rename overwriting another file...
r44943 $ hg log -Gfr 'desc("mBFm-0")' d
test-copies: remove revision number from log...
r47297 o f-2: rename i -> d
copies-tests: add a test with a rename overwriting another file...
r44943 |
test-copies: remove revision number from log...
r47297 o f-1: rename h -> i
Pulkit Goyal
mergestate: store about files resolved in favour of other...
r45178 :
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies-tests: add a test with a rename overwriting another file...
r44943
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #else
Martin von Zweigbergk
tests: add notes about broken `hg log --follow <file>` with copies in extras...
r46363 BROKEN: `hg log --follow <file>` relies on filelog metadata to work
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 $ hg log -Gfr 'desc("mBFm-0")' d
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 |
~
#endif
copies-tests: add a test with a rename overwriting another file...
r44943
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #if no-changeset
copies-tests: add a test with a rename overwriting another file...
r44943 $ hg log -Gfr 'desc("mFBm-0")' d
test-copies: remove revision number from log...
r47297 o f-2: rename i -> d
copies-tests: add a test with a rename overwriting another file...
r44943 |
test-copies: remove revision number from log...
r47297 o f-1: rename h -> i
copies-tests: add a test with a rename overwriting another file...
r44943 :
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies-tests: add a test with a rename overwriting another file...
r44943
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #else
Martin von Zweigbergk
tests: add notes about broken `hg log --follow <file>` with copies in extras...
r46363 BROKEN: `hg log --follow <file>` relies on filelog metadata to work
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 $ hg log -Gfr 'desc("mFBm-0")' d
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 |
~
#endif
copies-tests: add a case where a file is deleted/added but with a merge...
r44944
test-copies: add a case involving the `b` and a new `r` branch...
r47307
Subcase: existing copy information overwritten on one branch, with different content)
`````````````````````````````````````````````````````````````````````````````````````
Merge:
- one with change to an unrelated file (b)
- one overwriting a file (t) with a rename (from r to x to t), v content is not the same as on the other branch
$ hg log -G --rev '::(desc("mBRm")+desc("mRBm"))'
o mRBm-0 simple merge - B side: unrelated change, R side: overwrite d with a copy (from r->x->t) different content - the other way
|\
+---o mBRm-0 simple merge - B side: unrelated change, R side: overwrite d with a copy (from r->x->t) different content - one way
| |/
| o r-2: rename t -> x
| |
| o r-1: rename r -> x
| |
o | b-1: b update
|/
o i-2: c -move-> d, s -move-> t
|
o i-1: a -move-> c, p -move-> s
|
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: add a case involving the `b` and a new `r` branch...
r47307
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBRm-0")'
M b
A d
a
A t
r
R a
R p
R r
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mRBm-0")'
M b
A d
a
A t
r
R a
R p
R r
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBRm-0")'
M t
r (no-filelog !)
R r
$ hg status --copies --rev 'desc("r-2")' --rev 'desc("mBRm-0")'
M b
$ hg status --copies --rev 'desc("r-1")' --rev 'desc("mBRm-0")'
M b
M t
x (no-filelog !)
R x
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mRBm-0")'
M t
r (no-filelog !)
R r
$ hg status --copies --rev 'desc("r-2")' --rev 'desc("mRBm-0")'
M b
$ hg status --copies --rev 'desc("r-1")' --rev 'desc("mRBm-0")'
M b
M t
x (no-filelog !)
R x
#if no-changeset
$ hg log -Gfr 'desc("mBRm-0")' d
o i-2: c -move-> d, s -move-> t
|
o i-1: a -move-> c, p -move-> s
|
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: add a case involving the `b` and a new `r` branch...
r47307
#else
BROKEN: `hg log --follow <file>` relies on filelog metadata to work
$ hg log -Gfr 'desc("mBRm-0")' d
o i-2: c -move-> d, s -move-> t
|
~
#endif
#if no-changeset
$ hg log -Gfr 'desc("mRBm-0")' d
o i-2: c -move-> d, s -move-> t
|
o i-1: a -move-> c, p -move-> s
|
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: add a case involving the `b` and a new `r` branch...
r47307
#else
BROKEN: `hg log --follow <file>` relies on filelog metadata to work
$ hg log -Gfr 'desc("mRBm-0")' d
o i-2: c -move-> d, s -move-> t
|
~
#endif
test-copies: add subcase titles for various "conflicting" information variant...
r47293 Subcase: reset of the copy history on one side
``````````````````````````````````````````````
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 Merge:
- one with change to a file
- one deleting and recreating the file
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 Unlike in the 'BD/DB' cases, an actual merge happened here. So we should
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 consider history and rename on both branch of the merge.
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 $ hg log -G --rev '::(desc("mDGm")+desc("mGDm"))'
test-copies: remove revision number from log...
r47297 o mGDm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - the other way
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |\
test-copies: remove revision number from log...
r47297 +---o mDGm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - one way
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |/
test-copies: remove revision number from log...
r47297 | o g-1: update d
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |
test-copies: remove revision number from log...
r47297 o | d-2 re-add d
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |
test-copies: remove revision number from log...
r47297 o | d-1 delete d
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169
copies: fix the changeset based algorithm regarding merge...
r45252 One side of the merge have a long history with rename. The other side of the
merge point to a new file with a smaller history. Each side is "valid".
(and again the filelog based algorithm only explore one, with a pick based on
revision numbers)
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mDGm-0")'
A d
copies: fix the changeset based algorithm regarding merge...
r45252 a (filelog !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 R a
test-copies: move the new files in the `i` branch...
r47303 R p
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGDm-0")'
A d
a
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 R a
test-copies: move the new files in the `i` branch...
r47303 R p
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mDGm-0")'
M d
$ hg status --copies --rev 'desc("d-2")' --rev 'desc("mGDm-0")'
M d
$ hg status --copies --rev 'desc("g-1")' --rev 'desc("mDGm-0")'
M d
$ hg status --copies --rev 'desc("g-1")' --rev 'desc("mGDm-0")'
M d
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #if no-changeset
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 $ hg log -Gfr 'desc("mDGm-0")' d
test-copies: remove revision number from log...
r47297 o mDGm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - one way
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 |\
test-copies: remove revision number from log...
r47297 | o g-1: update d
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 | |
test-copies: remove revision number from log...
r47297 o | d-2 re-add d
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies-tests: add a case where a file is deleted/added but with a merge...
r44944
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #else
Martin von Zweigbergk
tests: add notes about broken `hg log --follow <file>` with copies in extras...
r46363 BROKEN: `hg log --follow <file>` relies on filelog metadata to work
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 $ hg log -Gfr 'desc("mDGm-0")' d
test-copies: remove revision number from log...
r47297 o mDGm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - one way
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 |\
test-copies: remove revision number from log...
r47297 | o g-1: update d
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 | |
test-copies: remove revision number from log...
r47297 o | d-2 re-add d
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 |
~
#endif
copies-tests: add a case where a file is deleted/added but with a merge...
r44944
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #if no-changeset
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 $ hg log -Gfr 'desc("mDGm-0")' d
test-copies: remove revision number from log...
r47297 o mDGm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - one way
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 |\
test-copies: remove revision number from log...
r47297 | o g-1: update d
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 | |
test-copies: remove revision number from log...
r47297 o | d-2 re-add d
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies-tests: add a case where a file is deleted/added but with a merge...
r44944 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies-tests: add a case where a file is deleted/added but with a merge...
r44944
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #else
Martin von Zweigbergk
tests: add notes about broken `hg log --follow <file>` with copies in extras...
r46363 BROKEN: `hg log --follow <file>` relies on filelog metadata to work
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 $ hg log -Gfr 'desc("mDGm-0")' d
test-copies: remove revision number from log...
r47297 o mDGm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - one way
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 |\
test-copies: remove revision number from log...
r47297 | o g-1: update d
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 | |
test-copies: remove revision number from log...
r47297 o | d-2 re-add d
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 |
~
#endif
copies-tests: add a case where with merge with an overwritten files...
r44945
test-copies: add subcase titles for various "conflicting" information variant...
r47293 Subcase: merging a change to a file with a "copy overwrite" to that file from another branch
````````````````````````````````````````````````````````````````````````````````````````````
copies-tests: add a case where with merge with an overwritten files...
r44945
Merge:
- one with change to a file (d)
- one overwriting that file with a rename (from h to i, to d)
This case is similar to BF/FB, but an actual merge happens, so both side of the
history are relevant.
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 $ hg log -G --rev '::(desc("mGFm")+desc("mFGm"))'
test-copies: remove revision number from log...
r47297 o mGFm-0 merge - G side: content change, F side: copy overwrite, no content change - the other way
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |\
test-copies: remove revision number from log...
r47297 +---o mFGm-0 merge - G side: content change, F side: copy overwrite, no content change - one way
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |/
test-copies: remove revision number from log...
r47297 | o g-1: update d
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |
test-copies: remove revision number from log...
r47297 o | f-2: rename i -> d
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 | |
test-copies: remove revision number from log...
r47297 o | f-1: rename h -> i
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
Martin von Zweigbergk
tests: move verification closer to setup in test-copies-chain-merge.t...
r45169
copies: explain the "arbitrary" copy source pick in case of conflict...
r46775
Note:
| In this case, the merge get conflicting information since on one side we have
| "a -> c -> d". and one the other one we have "h -> i -> d".
|
| The current code arbitrarily pick one side depending the ordering of the merged hash:
In this case, the file hash from "f-2" is lower, so it will be `p1` of the resulting filenode its copy tracing information will win (and trace back to "h"):
Details on this hash ordering pick:
$ hg manifest --debug 'desc("g-1")' | egrep 'd$'
test-copies: don't use empty file for "same content" cases...
r47281 17ec97e605773eb44a117d1136b3849bcdc1924f 644 d (no-changeset !)
5cce88bf349f7c742bb440f2c53f81db9c294279 644 d (changeset !)
copies: explain the "arbitrary" copy source pick in case of conflict...
r46775 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("g-1")' d
A d
a (no-changeset no-compatibility !)
$ hg manifest --debug 'desc("f-2")' | egrep 'd$'
test-copies: don't use empty file for "same content" cases...
r47281 7b79e2fe0c8924e0e598a82f048a7b024afa4d96 644 d (no-changeset !)
ae258f702dfeca05bf9b6a22a97a4b5645570f11 644 d (changeset !)
copies: explain the "arbitrary" copy source pick in case of conflict...
r46775 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("f-2")' d
A d
h (no-changeset no-compatibility !)
Copy tracing data on the resulting merge:
copies-tests: add a case where with merge with an overwritten files...
r44945 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFGm-0")'
A d
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 h (no-filelog !)
a (filelog !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies-tests: add a case where with merge with an overwritten files...
r44945 R a
R h
test-copies: move the new files in the `i` branch...
r47303 R p
copies-tests: add a case where with merge with an overwritten files...
r44945 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGFm-0")'
A d
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 a (no-changeset !)
h (changeset !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies-tests: add a case where with merge with an overwritten files...
r44945 R a
R h
test-copies: move the new files in the `i` branch...
r47303 R p
copies-tests: add a case where with merge with an overwritten files...
r44945 $ hg status --copies --rev 'desc("f-2")' --rev 'desc("mFGm-0")'
M d
$ hg status --copies --rev 'desc("f-2")' --rev 'desc("mGFm-0")'
M d
$ hg status --copies --rev 'desc("f-1")' --rev 'desc("mFGm-0")'
M d
copies: fix the changeset based algorithm regarding merge...
r45252 i (no-filelog !)
copies-tests: add a case where with merge with an overwritten files...
r44945 R i
$ hg status --copies --rev 'desc("f-1")' --rev 'desc("mGFm-0")'
M d
copies: fix the changeset based algorithm regarding merge...
r45252 i (no-filelog !)
copies-tests: add a case where with merge with an overwritten files...
r44945 R i
$ hg status --copies --rev 'desc("g-1")' --rev 'desc("mFGm-0")'
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 M d (no-changeset !)
h (no-filelog no-changeset !)
copies-tests: add a case where with merge with an overwritten files...
r44945 R h
$ hg status --copies --rev 'desc("g-1")' --rev 'desc("mGFm-0")'
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 M d (no-changeset !)
h (no-filelog no-changeset !)
copies-tests: add a case where with merge with an overwritten files...
r44945 R h
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #if no-changeset
copies-tests: add a case where with merge with an overwritten files...
r44945 $ hg log -Gfr 'desc("mFGm-0")' d
test-copies: remove revision number from log...
r47297 o mFGm-0 merge - G side: content change, F side: copy overwrite, no content change - one way
copies-tests: add a case where with merge with an overwritten files...
r44945 |\
test-copies: remove revision number from log...
r47297 | o g-1: update d
copies-tests: add a case where with merge with an overwritten files...
r44945 | |
test-copies: remove revision number from log...
r47297 o | f-2: rename i -> d
copies-tests: add a case where with merge with an overwritten files...
r44945 | |
test-copies: remove revision number from log...
r47297 o | f-1: rename h -> i
copies-tests: add a case where with merge with an overwritten files...
r44945 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies-tests: add a case where with merge with an overwritten files...
r44945 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies-tests: add a case where with merge with an overwritten files...
r44945 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies-tests: add a case where with merge with an overwritten files...
r44945
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #else
Martin von Zweigbergk
tests: add notes about broken `hg log --follow <file>` with copies in extras...
r46363 BROKEN: `hg log --follow <file>` relies on filelog metadata to work
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 $ hg log -Gfr 'desc("mFGm-0")' d
test-copies: remove revision number from log...
r47297 o g-1: update d
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 |
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 |
~
#endif
copies-tests: add a case where with merge with an overwritten files...
r44945
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #if no-changeset
copies-tests: add a case where with merge with an overwritten files...
r44945 $ hg log -Gfr 'desc("mGFm-0")' d
test-copies: remove revision number from log...
r47297 o mGFm-0 merge - G side: content change, F side: copy overwrite, no content change - the other way
copies-tests: add a case where with merge with an overwritten files...
r44945 |\
test-copies: remove revision number from log...
r47297 | o g-1: update d
copies-tests: add a case where with merge with an overwritten files...
r44945 | |
test-copies: remove revision number from log...
r47297 o | f-2: rename i -> d
copies-tests: add a case where with merge with an overwritten files...
r44945 | |
test-copies: remove revision number from log...
r47297 o | f-1: rename h -> i
copies-tests: add a case where with merge with an overwritten files...
r44945 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copies-tests: add a case where with merge with an overwritten files...
r44945 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copies-tests: add a case where with merge with an overwritten files...
r44945 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies-tests: add a case where with merge with an overwritten files...
r44945
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 #else
Martin von Zweigbergk
tests: add notes about broken `hg log --follow <file>` with copies in extras...
r46363 BROKEN: `hg log --follow <file>` relies on filelog metadata to work
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 $ hg log -Gfr 'desc("mGFm-0")' d
test-copies: remove revision number from log...
r47297 o g-1: update d
test-copies: reinstall initial identical (empty) files for chained copied...
r47277 |
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 |
~
#endif
copy-tracing: test case where we go across a changed/deleted merge...
r46032
test-copies: introduce case combining the `p` and `q` branch...
r47306 Subcase: new copy information on both side with an actual merge happening
`````````````````````````````````````````````````````````````````````````
- the "p-" branch renaming 't' to 'v' (through 'u')
- the "q-" branch renaming 'r' to 'v' (through 'w')
$ hg log -G --rev '::(desc("mPQm")+desc("mQPm"))'
o mQPm-0 merge with copies info on both side - P side: rename t to v, Q side: r to v, (different content) - the other way
|\
+---o mPQm-0 merge with copies info on both side - P side: rename t to v, Q side: r to v, (different content) - one way
| |/
| o q-2 w -move-> v
| |
| o q-1 r -move-> w
| |
o | p-2: u -move-> v
| |
o | p-1: t -move-> u
|/
o i-2: c -move-> d, s -move-> t
|
o i-1: a -move-> c, p -move-> s
|
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: introduce case combining the `p` and `q` branch...
r47306
#if no-changeset
$ hg manifest --debug --rev 'desc("mPQm-0")' | grep '644 v'
0946c662ef16e4e67397fd717389eb6693d41749 644 v
$ hg manifest --debug --rev 'desc("mQPm-0")' | grep '644 v'
0db3aad7fcc1ec27fab57060e327b9e864ea0cc9 644 v
$ hg manifest --debug --rev 'desc("p-2")' | grep '644 v'
3f91841cd75cadc9a1f1b4e7c1aa6d411f76032e 644 v
$ hg manifest --debug --rev 'desc("q-2")' | grep '644 v'
c43c088b811fd27983c0a9aadf44f3343cd4cd7e 644 v
Matt Harbison
tests: run python script through quoted interpreter instead of directly...
r47859 $ hg debugindex v | "$PYTHON" ../no-linkrev
test-copies: introduce case combining the `p` and `q` branch...
r47306 rev linkrev nodeid p1 p2
0 * 3f91841cd75c 000000000000 000000000000
1 * c43c088b811f 000000000000 000000000000
2 * 0946c662ef16 3f91841cd75c c43c088b811f
3 * 0db3aad7fcc1 c43c088b811f 3f91841cd75c
#else
$ hg manifest --debug --rev 'desc("mPQm-0")' | grep '644 v'
65fde9f6e4d4da23b3f610e07b53673ea9541d75 644 v
$ hg manifest --debug --rev 'desc("mQPm-0")' | grep '644 v'
a098dda6413aecf154eefc976afc38b295acb7e5 644 v
$ hg manifest --debug --rev 'desc("p-2")' | grep '644 v'
5aed6a8dbff0301328c08360d24354d3d064cf0d 644 v
$ hg manifest --debug --rev 'desc("q-2")' | grep '644 v'
a38b2fa170219750dac9bc7d19df831f213ba708 644 v
Matt Harbison
tests: run python script through quoted interpreter instead of directly...
r47859 $ hg debugindex v | "$PYTHON" ../no-linkrev
test-copies: introduce case combining the `p` and `q` branch...
r47306 rev linkrev nodeid p1 p2
0 * 5aed6a8dbff0 000000000000 000000000000
1 * a38b2fa17021 000000000000 000000000000
2 * 65fde9f6e4d4 5aed6a8dbff0 a38b2fa17021
3 * a098dda6413a a38b2fa17021 5aed6a8dbff0
#endif
# Here the filelog based implementation is not looking at the rename
# information (because the file exist on both side). However the changelog
# based on works fine. We have different output.
$ hg status --copies --rev 'desc("p-2")' --rev 'desc("mPQm-0")'
M v
r (no-filelog !)
R r
$ hg status --copies --rev 'desc("p-2")' --rev 'desc("mQPm-0")'
M v
r (no-filelog !)
R r
$ hg status --copies --rev 'desc("q-2")' --rev 'desc("mPQm-0")'
M v
t (no-filelog !)
R t
$ hg status --copies --rev 'desc("q-2")' --rev 'desc("mQPm-0")'
M v
t (no-filelog !)
R t
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("p-2")'
A v
t
R t
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("q-2")'
A v
r
R r
# From here, we run status against revision where both source file exists.
#
# The filelog based implementation picks an arbitrary side based on revision
# numbers. So the same side "wins" whatever the parents order is. This is
# sub-optimal because depending on revision numbers means the result can be
# different from one repository to the next.
#
# The changeset based algorithm use the parent order to break tie on conflicting
# information and will have a different order depending on who is p1 and p2.
# That order is stable accross repositories. (data from p1 prevails)
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("mPQm-0")'
A v
t
R r
R t
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("mQPm-0")'
A v
t (filelog !)
r (no-filelog !)
R r
R t
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mPQm-0")'
A d
a
A v
r (filelog !)
p (no-filelog !)
R a
R p
R r
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mQPm-0")'
A d
a
A v
r
R a
R p
R r
copy-tracing: test case where we go across a changed/deleted merge...
r46032
Comparing with merging with a deletion (and keeping the file)
-------------------------------------------------------------
Merge:
- one removing a file (d)
- one updating that file
- the merge keep the modified version of the file (canceling the delete)
In this case, the file keep on living after the merge. So we should not drop its
copy tracing chain.
$ hg log -G --rev '::(desc("mCGm")+desc("mGCm"))'
test-copies: remove revision number from log...
r47297 o mGCm-0 merge updated/deleted - revive the file (updated content) - the other way
copy-tracing: test case where we go across a changed/deleted merge...
r46032 |\
test-copies: remove revision number from log...
r47297 +---o mCGm-0 merge updated/deleted - revive the file (updated content) - one way
copy-tracing: test case where we go across a changed/deleted merge...
r46032 | |/
test-copies: remove revision number from log...
r47297 | o g-1: update d
copy-tracing: test case where we go across a changed/deleted merge...
r46032 | |
test-copies: remove revision number from log...
r47297 o | c-1 delete d
copy-tracing: test case where we go across a changed/deleted merge...
r46032 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copy-tracing: test case where we go across a changed/deleted merge...
r46032 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copy-tracing: test case where we go across a changed/deleted merge...
r46032 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copy-tracing: test case where we go across a changed/deleted merge...
r46032
salvaged: properly deal with salvaged file during copy tracing...
r46262 'a' is the copy source of 'd'
copy-tracing: test case where we go across a changed/deleted merge...
r46032
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCGm-0")'
A d
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 a (no-compatibility no-changeset !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
copy-tracing: test case where we go across a changed/deleted merge...
r46032 R a
test-copies: move the new files in the `i` branch...
r47303 R p
copy-tracing: test case where we go across a changed/deleted merge...
r46032 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGCm-0")'
A d
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 a (no-compatibility no-changeset !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
copy-tracing: test case where we go across a changed/deleted merge...
r46032 R a
test-copies: move the new files in the `i` branch...
r47303 R p
copy-tracing: test case where we go across a changed/deleted merge...
r46032 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCGm-0")'
A d
$ hg status --copies --rev 'desc("c-1")' --rev 'desc("mGCm-0")'
A d
$ hg status --copies --rev 'desc("g-1")' --rev 'desc("mCGm-0")'
$ hg status --copies --rev 'desc("g-1")' --rev 'desc("mGCm-0")'
copy-tracing: test case where a merge reverted a file deletion...
r46033
Comparing with merge restoring an untouched deleted file
--------------------------------------------------------
Merge:
- one removing a file (d)
- one leaving the file untouched
- the merge actively restore the file to the same content.
In this case, the file keep on living after the merge. So we should not drop its
copy tracing chain.
$ hg log -G --rev '::(desc("mCB-revert-m")+desc("mBC-revert-m"))'
test-copies: remove revision number from log...
r47297 o mBC-revert-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - the other way
copy-tracing: test case where a merge reverted a file deletion...
r46033 |\
test-copies: remove revision number from log...
r47297 +---o mCB-revert-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - one way
copy-tracing: test case where a merge reverted a file deletion...
r46033 | |/
test-copies: remove revision number from log...
r47297 | o c-1 delete d
copy-tracing: test case where a merge reverted a file deletion...
r46033 | |
test-copies: remove revision number from log...
r47297 o | b-1: b update
copy-tracing: test case where a merge reverted a file deletion...
r46033 |/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
copy-tracing: test case where a merge reverted a file deletion...
r46033 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
copy-tracing: test case where a merge reverted a file deletion...
r46033 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copy-tracing: test case where a merge reverted a file deletion...
r46033
salvaged: properly deal with salvaged file during copy tracing...
r46262 'a' is the the copy source of 'd'
copy-tracing: test case where a merge reverted a file deletion...
r46033
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCB-revert-m-0")'
M b
A d
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 a (no-compatibility no-changeset !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
copy-tracing: test case where a merge reverted a file deletion...
r46033 R a
test-copies: move the new files in the `i` branch...
r47303 R p
copy-tracing: test case where a merge reverted a file deletion...
r46033 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBC-revert-m-0")'
M b
A d
Martin von Zweigbergk
tests: run test-copies-chain-merge.t also with copies in changesets...
r46296 a (no-compatibility no-changeset !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
copy-tracing: test case where a merge reverted a file deletion...
r46033 R a
test-copies: move the new files in the `i` branch...
r47303 R p
copy-tracing: test case where a merge reverted a file deletion...
r46033 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCB-revert-m-0")'
M b
A d
$ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBC-revert-m-0")'
M b
A d
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCB-revert-m-0")'
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBC-revert-m-0")'
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394
Merging a branch where a rename was deleted with a branch where the same file was renamed
------------------------------------------------------------------------------------------
Create a "conflicting" merge where `d` get removed on one branch before its
rename information actually conflict with the other branch.
(the copy information from the branch that was not deleted should win).
$ hg log -G --rev '::(desc("mCH-delete-before-conflict-m")+desc("mHC-delete-before-conflict-m"))'
test-copies: remove revision number from log...
r47297 o mHC-delete-before-conflict-m-0 simple merge - C side: d is the results of renames then deleted, H side: d is result of another rename (same content as the other branch) - the other way
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 |\
test-copies: remove revision number from log...
r47297 +---o mCH-delete-before-conflict-m-0 simple merge - C side: d is the results of renames then deleted, H side: d is result of another rename (same content as the other branch) - one way
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 | |/
test-copies: remove revision number from log...
r47297 | o h-1: b -(move)-> d
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 | |
test-copies: remove revision number from log...
r47297 o | c-1 delete d
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 | |
test-copies: move the new files in the `i` branch...
r47303 o | i-2: c -move-> d, s -move-> t
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 | |
test-copies: move the new files in the `i` branch...
r47303 o | i-1: a -move-> c, p -move-> s
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 |/
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCH-delete-before-conflict-m")'
A d
b (no-compatibility no-changeset !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 R a
R b
test-copies: move the new files in the `i` branch...
r47303 R p
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mHC-delete-before-conflict-m")'
A d
b
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 R a
R b
test-copies: move the new files in the `i` branch...
r47303 R p
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCH-delete-before-conflict-m")'
A d
b
R b
$ hg status --copies --rev 'desc("c-1")' --rev 'desc("mHC-delete-before-conflict-m")'
A d
b
R b
$ hg status --copies --rev 'desc("h-1")' --rev 'desc("mCH-delete-before-conflict-m")'
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 R a
test-copies: move the new files in the `i` branch...
r47303 R p
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 $ hg status --copies --rev 'desc("h-1")' --rev 'desc("mHC-delete-before-conflict-m")'
test-copies: move the new files in the `i` branch...
r47303 A t
p
copies: make sure deleted copy info do not overwriting unrelated ones...
r46394 R a
test-copies: move the new files in the `i` branch...
r47303 R p
test-copies: add test chaining multiple merges...
r47294
test-copies: add a "change during merge" variant to the A+E test...
r47300 Variant of previous with extra changes introduced by the merge
--------------------------------------------------------------
(see case declaration for details)
Subcase: merge has same initial content on both side, but merge introduced a change
```````````````````````````````````````````````````````````````````````````````````
- the "e-" branch renaming b to f (through 'g')
- the "a-" branch renaming d to f (through e)
- the merge add new change to b
$ hg log -G --rev '::(desc("mAE-change-m")+desc("mEA-change-m"))'
o mEA-change-m-0 merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent) - the other way
|\
+---o mAE-change-m-0 merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent) - one way
| |/
| o e-2 g -move-> f
| |
| o e-1 b -move-> g
| |
o | a-2: e -move-> f
| |
o | a-1: d -move-> e
|/
test-copies: move the new files in the `i` branch...
r47303 o i-2: c -move-> d, s -move-> t
test-copies: add a "change during merge" variant to the A+E test...
r47300 |
test-copies: move the new files in the `i` branch...
r47303 o i-1: a -move-> c, p -move-> s
test-copies: add a "change during merge" variant to the A+E test...
r47300 |
Martin von Zweigbergk
tests: correct a commit description in test-copies-chain-merge.t...
r47354 o i-0 initial commit: a b h p q r
test-copies: add a "change during merge" variant to the A+E test...
r47300
#if no-changeset
$ hg manifest --debug --rev 'desc("mAE-change-m-0")' | grep '644 f'
2f649fba7eb284e720d02b61f0546fcef694c045 644 f
$ hg manifest --debug --rev 'desc("mEA-change-m-0")' | grep '644 f'
774e7c1637d536b99e2d8ef16fd731f87a82bd09 644 f
$ hg manifest --debug --rev 'desc("a-2")' | grep '644 f'
b76eb76580df486c3d51d63c5c210d4dd43a8ac7 644 f
$ hg manifest --debug --rev 'desc("e-2")' | grep '644 f'
e8825b386367b29fec957283a80bb47b47483fe1 644 f
Matt Harbison
tests: run python script through quoted interpreter instead of directly...
r47859 $ hg debugindex f | "$PYTHON" ../no-linkrev
test-copies: add a "change during merge" variant to the A+E test...
r47300 rev linkrev nodeid p1 p2
0 * b76eb76580df 000000000000 000000000000
1 * e8825b386367 000000000000 000000000000
2 * 2ff93c643948 b76eb76580df e8825b386367
3 * 2f649fba7eb2 b76eb76580df e8825b386367
4 * 774e7c1637d5 e8825b386367 b76eb76580df
#else
$ hg manifest --debug --rev 'desc("mAE-change-m-0")' | grep '644 f'
d3613c1ec8310a812ac4268fd853ac576b6caea5 644 f
$ hg manifest --debug --rev 'desc("mEA-change-m-0")' | grep '644 f'
05e03c868bbcab4a649cb33a238d7aa07398a469 644 f
$ hg manifest --debug --rev 'desc("a-2")' | grep '644 f'
ae258f702dfeca05bf9b6a22a97a4b5645570f11 644 f
$ hg manifest --debug --rev 'desc("e-2")' | grep '644 f'
ae258f702dfeca05bf9b6a22a97a4b5645570f11 644 f
Matt Harbison
tests: run python script through quoted interpreter instead of directly...
r47859 $ hg debugindex f | "$PYTHON" ../no-linkrev
test-copies: add a "change during merge" variant to the A+E test...
r47300 rev linkrev nodeid p1 p2
0 * ae258f702dfe 000000000000 000000000000
1 * d3613c1ec831 ae258f702dfe 000000000000
2 * 05e03c868bbc ae258f702dfe 000000000000
#endif
# Here the filelog based implementation is not looking at the rename
# information (because the file exist on both side). However the changelog
# based on works fine. We have different output.
$ hg status --copies --rev 'desc("a-2")' --rev 'desc("mAE-change-m-0")'
M f
b (no-filelog !)
R b
$ hg status --copies --rev 'desc("a-2")' --rev 'desc("mEA-change-m-0")'
M f
b (no-filelog !)
R b
$ hg status --copies --rev 'desc("e-2")' --rev 'desc("mAE-change-m-0")'
M f
d (no-filelog !)
R d
$ hg status --copies --rev 'desc("e-2")' --rev 'desc("mEA-change-m-0")'
M f
d (no-filelog !)
R d
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("a-2")'
A f
d
R d
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("e-2")'
A f
b
R b
# From here, we run status against revision where both source file exists.
#
# The filelog based implementation picks an arbitrary side based on revision
# numbers. So the same side "wins" whatever the parents order is. This is
# sub-optimal because depending on revision numbers means the result can be
# different from one repository to the next.
#
# The changeset based algorithm use the parent order to break tie on conflicting
# information and will have a different order depending on who is p1 and p2.
# That order is stable accross repositories. (data from p1 prevails)
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("mAE-change-m-0")'
A f
d
R b
R d
$ hg status --copies --rev 'desc("i-2")' --rev 'desc("mEA-change-m-0")'
A f
d (filelog !)
b (no-filelog !)
R b
R d
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAE-change-m-0")'
A f
a
test-copies: move the new files in the `i` branch...
r47303 A t
p
test-copies: add a "change during merge" variant to the A+E test...
r47300 R a
R b
test-copies: move the new files in the `i` branch...
r47303 R p
test-copies: add a "change during merge" variant to the A+E test...
r47300 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEA-change-m-0")'
A f
a (filelog !)
b (no-filelog !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
test-copies: add a "change during merge" variant to the A+E test...
r47300 R a
R b
test-copies: move the new files in the `i` branch...
r47303 R p
test-copies: add a "change during merge" variant to the A+E test...
r47300
test-copies: add a test updating file content while merging a pure overwrite...
r47540 Subcase: merge overwrite common copy information, but with extra change during the merge
```````````````````````````````````````````````````````````````````````````````````
Merge:
- one with change to an unrelated file (b)
- one overwriting a file (d) with a rename (from h to i to d)
$ hg log -G --rev '::(desc("mBF-change-m")+desc("mFB-change-m"))'
o mFB-change-m-0 merge with extra change - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way
|\
+---o mBF-change-m-0 merge with extra change - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - one way
| |/
| o f-2: rename i -> d
| |
| o f-1: rename h -> i
| |
o | b-1: b update
|/
o i-2: c -move-> d, s -move-> t
|
o i-1: a -move-> c, p -move-> s
|
o i-0 initial commit: a b h p q r
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBF-change-m-0")'
M b
A d
test-copies: simplify some conditional output...
r47850 h
test-copies: add a test updating file content while merging a pure overwrite...
r47540 A t
p
R a
R h
R p
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFB-change-m-0")'
M b
A d
Pulkit Goyal
commit: get info from mergestate whether a file was merged or not...
r47567 h
test-copies: add a test updating file content while merging a pure overwrite...
r47540 A t
p
R a
R h
R p
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBF-change-m-0")'
M d
h (no-filelog !)
R h
$ hg status --copies --rev 'desc("f-2")' --rev 'desc("mBF-change-m-0")'
M b
M d
$ hg status --copies --rev 'desc("f-1")' --rev 'desc("mBF-change-m-0")'
M b
M d
i (no-filelog !)
R i
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mFB-change-m-0")'
M d
h (no-filelog !)
R h
$ hg status --copies --rev 'desc("f-2")' --rev 'desc("mFB-change-m-0")'
M b
M d
$ hg status --copies --rev 'desc("f-1")' --rev 'desc("mFB-change-m-0")'
M b
M d
i (no-filelog !)
R i
#if no-changeset
$ hg log -Gfr 'desc("mBF-change-m-0")' d
o mBF-change-m-0 merge with extra change - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - one way
|\
o : f-2: rename i -> d
| :
o : f-1: rename h -> i
:/
o i-0 initial commit: a b h p q r
#else
BROKEN: `hg log --follow <file>` relies on filelog metadata to work
$ hg log -Gfr 'desc("mBF-change-m-0")' d
o mBF-change-m-0 merge with extra change - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - one way
:
o i-2: c -move-> d, s -move-> t
|
~
#endif
#if no-changeset
$ hg log -Gfr 'desc("mFB-change-m-0")' d
o mFB-change-m-0 merge with extra change - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way
|\
o : f-2: rename i -> d
| :
o : f-1: rename h -> i
:/
o i-0 initial commit: a b h p q r
#else
BROKEN: `hg log --follow <file>` relies on filelog metadata to work
$ hg log -Gfr 'desc("mFB-change-m-0")' d
o mFB-change-m-0 merge with extra change - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way
:
o i-2: c -move-> d, s -move-> t
|
~
#endif
test-copies: add a test updating file content while salvaging it...
r47569 Subcase: restoring and untouched deleted file, while touching it
````````````````````````````````````````````````````````````````
Merge:
- one removing a file (d)
- one leaving the file untouched
- the merge actively restore the file to the same content.
In this case, the file keep on living after the merge. So we should not drop its
copy tracing chain.
$ hg log -G --rev '::(desc("mCB-change-m")+desc("mBC-change-m"))'
o mBC-change-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - the other way
|\
+---o mCB-change-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - one way
| |/
| o c-1 delete d
| |
o | b-1: b update
|/
o i-2: c -move-> d, s -move-> t
|
o i-1: a -move-> c, p -move-> s
|
o i-0 initial commit: a b h p q r
'a' is the the copy source of 'd'
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCB-change-m-0")'
M b
A d
copies: detect files as `touched/salvaged` if they only existed on one side...
r47570 a (no-compatibility no-changeset !)
test-copies: add a test updating file content while salvaging it...
r47569 A t
p
R a
R p
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBC-change-m-0")'
M b
A d
a (no-compatibility no-changeset !)
A t
p
R a
R p
$ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCB-change-m-0")'
M b
A d
$ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBC-change-m-0")'
M b
A d
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCB-change-m-0")'
M d
$ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBC-change-m-0")'
M d
test-copies: add test chaining multiple merges...
r47294 Decision from previous merge are properly chained with later merge
------------------------------------------------------------------
Subcase: chaining conflicting rename resolution
```````````````````````````````````````````````
The "mAEm" and "mEAm" case create a rename tracking conflict on file 'f'. We
add more change on the respective branch and merge again. These second merge
does not involve the file 'f' and the arbitration done within "mAEm" and "mEA"
about that file should stay unchanged.
The result from mAEm is the same for the subsequent merge:
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAEm")' f
A f
test-copies: simplify some conditional output...
r47850 a (no-changeset no-compatibility !)
test-copies: add test chaining multiple merges...
r47294
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAE,Km")' f
A f
test-copies: simplify some conditional output...
r47850 a (no-changeset no-compatibility !)
test-copies: add test chaining multiple merges...
r47294
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mK,AEm")' f
A f
test-copies: simplify some conditional output...
r47850 a (no-changeset no-compatibility !)
test-copies: add test chaining multiple merges...
r47294
The result from mEAm is the same for the subsequent merge:
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEAm")' f
A f
a (filelog !)
test-copies: simplify some conditional output...
r47850 b (no-changeset no-compatibility no-filelog !)
test-copies: add test chaining multiple merges...
r47294
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEA,Jm")' f
A f
a (filelog !)
test-copies: simplify some conditional output...
r47850 b (no-changeset no-compatibility no-filelog !)
test-copies: add test chaining multiple merges...
r47294
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mJ,EAm")' f
A f
a (filelog !)
test-copies: simplify some conditional output...
r47850 b (no-changeset no-compatibility no-filelog !)
test-copies: add test chaining multiple merges...
r47294
test-copies: introduce merge chains test for the P/Q merges...
r47308 Subcase: chaining conflicting rename resolution
```````````````````````````````````````````````
The "mPQm" and "mQPm" case create a rename tracking conflict on file 'v'. We
add more change on the respective branch and merge again. These second merge
does not involve the file 'v' and the arbitration done within "mPQm" and "mQP"
about that file should stay unchanged.
The result from mPQm is the same for the subsequent merge:
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mPQm")' v
A v
r (filelog !)
test-copies: simplify some conditional output...
r47850 p (no-changeset no-compatibility no-filelog !)
test-copies: introduce merge chains test for the P/Q merges...
r47308
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mPQ,Tm")' v
A v
r (filelog !)
test-copies: simplify some conditional output...
r47850 p (no-changeset no-compatibility no-filelog !)
test-copies: introduce merge chains test for the P/Q merges...
r47308
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mT,PQm")' v
A v
r (filelog !)
test-copies: simplify some conditional output...
r47850 p (no-changeset no-compatibility no-filelog !)
test-copies: introduce merge chains test for the P/Q merges...
r47308
The result from mQPm is the same for the subsequent merge:
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mQPm")' v
A v
r (no-changeset no-compatibility !)
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mQP,Sm")' v
A v
r (no-changeset no-compatibility !)
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mS,QPm")' v
A v
r (filelog !)
test-copies: simplify some conditional output...
r47850 r (no-changeset no-compatibility no-filelog !)
test-copies: introduce merge chains test for the P/Q merges...
r47308
test-copies: add test chaining multiple merges...
r47294
test-copies: add test chaining multiple merges...
r47295 Subcase: chaining salvage information during a merge
````````````````````````````````````````````````````
We add more change on the branch were the file was deleted. merging again
should preserve the fact eh file was salvaged.
reference output:
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCB-revert-m-0")'
M b
A d
copies: detect case when a merge decision overwrite previous data...
r47310 a (no-changeset no-compatibility !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
test-copies: add test chaining multiple merges...
r47295 R a
test-copies: move the new files in the `i` branch...
r47303 R p
test-copies: add test chaining multiple merges...
r47295 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBC-revert-m-0")'
M b
A d
copies: detect case when a merge decision overwrite previous data...
r47310 a (no-changeset no-compatibility !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
test-copies: add test chaining multiple merges...
r47295 R a
test-copies: move the new files in the `i` branch...
r47303 R p
test-copies: add test chaining multiple merges...
r47295
chained output
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBC+revert,Lm")'
M b
A d
copies: detect case when a merge decision overwrite previous data...
r47310 a (no-changeset no-compatibility !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
test-copies: add test chaining multiple merges...
r47295 A unrelated-l
R a
test-copies: move the new files in the `i` branch...
r47303 R p
test-copies: add test chaining multiple merges...
r47295 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCB+revert,Lm")'
M b
A d
copies: detect case when a merge decision overwrite previous data...
r47310 a (no-changeset no-compatibility !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
test-copies: add test chaining multiple merges...
r47295 A unrelated-l
R a
test-copies: move the new files in the `i` branch...
r47303 R p
test-copies: add test chaining multiple merges...
r47295 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mL,BC+revertm")'
M b
A d
copies: detect case when a merge decision overwrite previous data...
r47310 a (no-changeset no-compatibility !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
test-copies: add test chaining multiple merges...
r47295 A unrelated-l
R a
test-copies: move the new files in the `i` branch...
r47303 R p
test-copies: add test chaining multiple merges...
r47295 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mL,CB+revertm")'
M b
A d
copies: detect case when a merge decision overwrite previous data...
r47310 a (no-changeset no-compatibility !)
test-copies: move the new files in the `i` branch...
r47303 A t
p
test-copies: add test chaining multiple merges...
r47295 A unrelated-l
R a
test-copies: move the new files in the `i` branch...
r47303 R p
test-copies: add test chaining multiple merges...
r47295
test-copies: add test chaining multiple merge...
r47296 Subcase: chaining "merged" information during a merge
``````````````````````````````````````````````````````
When a non-rename change are merged with a copy overwrite, the merge pick the copy source from (p1) as the reference. We should preserve this information in subsequent merges.
reference output:
(for details about the filelog pick, check the mFGm/mGFm case)
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFGm")' d
A d
a (filelog !)
test-copies: simplify some conditional output...
r47850 h (no-changeset no-compatibility no-filelog !)
test-copies: add test chaining multiple merge...
r47296 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGFm")' d
A d
a (filelog !)
test-copies: simplify some conditional output...
r47850 a (no-changeset no-compatibility no-filelog !)
test-copies: add test chaining multiple merge...
r47296
Chained output
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mO,FGm")' d
A d
a (filelog !)
test-copies: simplify some conditional output...
r47850 h (no-changeset no-compatibility no-filelog !)
test-copies: add test chaining multiple merge...
r47296 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFG,Om")' d
A d
a (filelog !)
test-copies: simplify some conditional output...
r47850 h (no-changeset no-compatibility no-filelog !)
test-copies: add test chaining multiple merge...
r47296
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGF,Nm")' d
A d
copies: detect case when a merge decision overwrite previous data...
r47310 a (no-changeset no-compatibility !)
test-copies: add test chaining multiple merge...
r47296 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mN,GFm")' d
A d
copies: detect case when a merge decision overwrite previous data...
r47310 a (no-changeset no-compatibility !)
test-copies: introduce merge chaing test for the A/E + change tests...
r47301
Subcase: chaining conflicting rename resolution, with extra change during the merge
```````````````````````````````````````````````````````````````````````````````````
The "mAEm" and "mEAm" case create a rename tracking conflict on file 'f'. We
add more change on the respective branch and merge again. These second merge
does not involve the file 'f' and the arbitration done within "mAEm" and "mEA"
about that file should stay unchanged.
The result from mAEm is the same for the subsequent merge:
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAE-change-m")' f
A f
test-copies: simplify some conditional output...
r47850 a (no-changeset no-compatibility !)
test-copies: introduce merge chaing test for the A/E + change tests...
r47301
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAE-change,Km")' f
A f
test-copies: simplify some conditional output...
r47850 a (no-changeset no-compatibility !)
test-copies: introduce merge chaing test for the A/E + change tests...
r47301
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mK,AE-change-m")' f
A f
copies: detect case when a merge decision overwrite previous data...
r47310 a (no-changeset no-compatibility !)
test-copies: introduce merge chaing test for the A/E + change tests...
r47301
The result from mEAm is the same for the subsequent merge:
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEA-change-m")' f
A f
a (filelog !)
test-copies: simplify some conditional output...
r47850 b (no-changeset no-compatibility no-filelog !)
test-copies: introduce merge chaing test for the A/E + change tests...
r47301
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEA-change,Jm")' f
A f
a (filelog !)
test-copies: simplify some conditional output...
r47850 b (no-changeset no-compatibility no-filelog !)
test-copies: introduce merge chaing test for the A/E + change tests...
r47301
$ hg status --copies --rev 'desc("i-0")' --rev 'desc("mJ,EA-change-m")' f
A f
a (filelog !)
test-copies: simplify some conditional output...
r47850 b (no-changeset no-compatibility no-filelog !)