test-merge-no-file-change.t
379 lines
| 9.9 KiB
| text/troff
|
Tads3Lexer
/ tests / test-merge-no-file-change.t
Yuya Nishihara
|
r39146 | $ cat <<'EOF' >> "$HGRCPATH" | ||
> [extensions] | ||||
> convert = | ||||
> [templates] | ||||
> l = '{rev}:{node|short} p={p1rev},{p2rev} m={manifest} f={files|json}' | ||||
> EOF | ||||
$ check_convert_identity () { | ||||
> hg convert -q "$1" "$1.converted" | ||||
> hg outgoing -q -R "$1.converted" "$1" | ||||
> if [ "$?" != 1 ]; then | ||||
> echo '*** BUG: hash changes on convert ***' | ||||
> hg log -R "$1.converted" -GTl | ||||
> fi | ||||
> } | ||||
Files added at both parents: | ||||
$ hg init added-both | ||||
$ cd added-both | ||||
$ touch a b c | ||||
$ hg ci -qAm0 a | ||||
$ hg ci -qAm1 b | ||||
$ hg up -q 0 | ||||
$ hg ci -qAm2 c | ||||
$ hg merge | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg ci --debug -m merge | ||||
committing files: | ||||
b | ||||
Yuya Nishihara
|
r39147 | not reusing manifest (no file change in changelog, but manifest differs) | ||
Yuya Nishihara
|
r39146 | committing manifest | ||
committing changelog | ||||
updating the branch cache | ||||
committed changeset 3:7aa8a293f5d97377037afc21e871e036e718d659 | ||||
$ hg log -GTl | ||||
@ 3:7aa8a293f5d9 p=2,1 m=3:8667461869a1 f=[] | ||||
|\ | ||||
| o 2:e0ea47086fce p=0,-1 m=2:b2e5b07f9374 f=["c"] | ||||
| | | ||||
o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | ||||
|/ | ||||
o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | ||||
$ cd .. | ||||
$ check_convert_identity added-both | ||||
Files added at both parents, but the other removed at the merge: | ||||
(In this case, ctx.files() after the commit contains the removed file "b", but | ||||
its manifest does not differ from p1.) | ||||
$ hg init added-both-removed-at-merge | ||||
$ cd added-both-removed-at-merge | ||||
$ touch a b c | ||||
$ hg ci -qAm0 a | ||||
$ hg ci -qAm1 b | ||||
$ hg up -q 0 | ||||
$ hg ci -qAm2 c | ||||
$ hg merge | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg rm -f b | ||||
$ hg ci --debug -m merge | ||||
committing files: | ||||
committing manifest | ||||
committing changelog | ||||
updating the branch cache | ||||
committed changeset 3:915745f3ca3d9d699925269474c2d0a9526e8dfa | ||||
$ hg log -GTl | ||||
@ 3:915745f3ca3d p=2,1 m=3:8e9cf3456921 f=["b"] | ||||
|\ | ||||
| o 2:e0ea47086fce p=0,-1 m=2:b2e5b07f9374 f=["c"] | ||||
| | | ||||
o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | ||||
|/ | ||||
o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | ||||
$ cd .. | ||||
$ check_convert_identity added-both | ||||
An identical file added at both parents: | ||||
$ hg init added-identical | ||||
$ cd added-identical | ||||
$ touch a b | ||||
$ hg ci -qAm0 a | ||||
$ hg ci -qAm1 b | ||||
$ hg up -q 0 | ||||
$ touch b | ||||
$ hg ci -qAm2 b | ||||
$ hg merge | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg ci --debug -m merge | ||||
reusing manifest from p1 (no file change) | ||||
committing changelog | ||||
updating the branch cache | ||||
committed changeset 3:de26182cd210f0c3fb175ca7616704ab963d3024 | ||||
$ hg log -GTl | ||||
@ 3:de26182cd210 p=2,1 m=1:686dbf0aeca4 f=[] | ||||
|\ | ||||
| o 2:f00991f11eca p=0,-1 m=1:686dbf0aeca4 f=["b"] | ||||
| | | ||||
o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | ||||
|/ | ||||
o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | ||||
$ cd .. | ||||
$ check_convert_identity added-identical | ||||
#if execbit | ||||
An identical file added at both parents, but the flag differs. Take local: | ||||
$ hg init flag-change-take-p1 | ||||
$ cd flag-change-take-p1 | ||||
$ touch a b | ||||
$ hg ci -qAm0 a | ||||
$ hg ci -qAm1 b | ||||
$ hg up -q 0 | ||||
$ touch b | ||||
$ chmod +x b | ||||
$ hg ci -qAm2 b | ||||
$ hg merge | ||||
warning: cannot merge flags for b without common ancestor - keeping local flags | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ chmod +x b | ||||
$ hg ci --debug -m merge | ||||
committing files: | ||||
b | ||||
Yuya Nishihara
|
r39147 | reusing manifest form p1 (listed files actually unchanged) | ||
Yuya Nishihara
|
r39146 | committing changelog | ||
updating the branch cache | ||||
Yuya Nishihara
|
r39147 | committed changeset 3:c8d50407916ef8a5a97cb6e36ca9bc844a6ee13e | ||
Yuya Nishihara
|
r39146 | $ hg log -GTl | ||
Yuya Nishihara
|
r39147 | @ 3:c8d50407916e p=2,1 m=2:36b69ba4b24b f=[] | ||
Yuya Nishihara
|
r39146 | |\ | ||
| o 2:99451f16b3f5 p=0,-1 m=2:36b69ba4b24b f=["b"] | ||||
| | | ||||
o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | ||||
|/ | ||||
o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | ||||
$ hg files -vr3 | ||||
0 a | ||||
0 x b | ||||
$ cd .. | ||||
$ check_convert_identity flag-change-take-p1 | ||||
An identical file added at both parents, but the flag differs. Take other: | ||||
$ hg init flag-change-take-p2 | ||||
$ cd flag-change-take-p2 | ||||
$ touch a b | ||||
$ hg ci -qAm0 a | ||||
$ hg ci -qAm1 b | ||||
$ hg up -q 0 | ||||
$ touch b | ||||
$ chmod +x b | ||||
$ hg ci -qAm2 b | ||||
$ hg merge | ||||
warning: cannot merge flags for b without common ancestor - keeping local flags | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ chmod -x b | ||||
$ hg ci --debug -m merge | ||||
committing files: | ||||
b | ||||
committing manifest | ||||
committing changelog | ||||
updating the branch cache | ||||
committed changeset 3:06a62a687d87c7d8944743dee1ee9d8c66b3f6e3 | ||||
$ hg log -GTl | ||||
@ 3:06a62a687d87 p=2,1 m=3:2a315ba1aa45 f=["b"] | ||||
|\ | ||||
| o 2:99451f16b3f5 p=0,-1 m=2:36b69ba4b24b f=["b"] | ||||
| | | ||||
o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | ||||
|/ | ||||
o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | ||||
$ hg files -vr3 | ||||
0 a | ||||
0 b | ||||
$ cd .. | ||||
$ check_convert_identity flag-change-take-p2 | ||||
#endif | ||||
An identical file added at both parents, one more file added at p2: | ||||
$ hg init added-some-p2 | ||||
$ cd added-some-p2 | ||||
$ touch a b c | ||||
$ hg ci -qAm0 a | ||||
$ hg ci -qAm1 b | ||||
$ hg ci -qAm2 c | ||||
$ hg up -q 0 | ||||
$ touch b | ||||
$ hg ci -qAm3 b | ||||
$ hg merge | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg ci --debug -m merge | ||||
committing files: | ||||
c | ||||
Yuya Nishihara
|
r39147 | not reusing manifest (no file change in changelog, but manifest differs) | ||
Yuya Nishihara
|
r39146 | committing manifest | ||
committing changelog | ||||
updating the branch cache | ||||
committed changeset 4:f7fbc4e4d9a8fde03ba475adad675578c8bf472d | ||||
$ hg log -GTl | ||||
@ 4:f7fbc4e4d9a8 p=3,2 m=3:92acd5bfd716 f=[] | ||||
|\ | ||||
| o 3:e9d9f3cc981f p=0,-1 m=1:686dbf0aeca4 f=["b"] | ||||
| | | ||||
o | 2:93c5529a4ec7 p=1,-1 m=2:ae25a31b30b3 f=["c"] | ||||
| | | ||||
o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | ||||
|/ | ||||
o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | ||||
$ cd .. | ||||
$ check_convert_identity added-some-p2 | ||||
An identical file added at both parents, one more file added at p1: | ||||
(In this case, p1 manifest is reused at the merge commit, which means the | ||||
manifest DAG does not have the same shape as the changelog.) | ||||
$ hg init added-some-p1 | ||||
$ cd added-some-p1 | ||||
$ touch a b | ||||
$ hg ci -qAm0 a | ||||
$ hg ci -qAm1 b | ||||
$ hg up -q 0 | ||||
$ touch b c | ||||
$ hg ci -qAm2 b | ||||
$ hg ci -qAm3 c | ||||
$ hg merge | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg ci --debug -m merge | ||||
reusing manifest from p1 (no file change) | ||||
committing changelog | ||||
updating the branch cache | ||||
committed changeset 4:a9f0f589a913f5a149dc10dfbd5af726977c36c4 | ||||
$ hg log -GTl | ||||
@ 4:a9f0f589a913 p=3,1 m=2:ae25a31b30b3 f=[] | ||||
|\ | ||||
| o 3:b8dc385241b5 p=2,-1 m=2:ae25a31b30b3 f=["c"] | ||||
| | | ||||
| o 2:f00991f11eca p=0,-1 m=1:686dbf0aeca4 f=["b"] | ||||
| | | ||||
o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | ||||
|/ | ||||
o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | ||||
$ cd .. | ||||
$ check_convert_identity added-some-p1 | ||||
A file added at p2, a named branch created at p1: | ||||
$ hg init named-branch-p1 | ||||
$ cd named-branch-p1 | ||||
$ touch a b | ||||
$ hg ci -qAm0 a | ||||
$ hg ci -qAm1 b | ||||
$ hg up -q 0 | ||||
$ hg branch -q foo | ||||
$ hg ci -m2 | ||||
$ hg merge default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg ci --debug -m merge | ||||
committing files: | ||||
b | ||||
Yuya Nishihara
|
r39147 | not reusing manifest (no file change in changelog, but manifest differs) | ||
Yuya Nishihara
|
r39146 | committing manifest | ||
committing changelog | ||||
updating the branch cache | ||||
committed changeset 3:fb97d83b02fd072295cfc2171f21b7d38509bfd7 | ||||
$ hg log -GT'{l} branch={branch}' | ||||
@ 3:fb97d83b02fd p=2,1 m=2:9091c64f4ea1 f=[] branch=foo | ||||
|\ | ||||
| o 2:a3a9fa6587e5 p=0,-1 m=0:8515d4bfda76 f=[] branch=foo | ||||
| | | ||||
o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] branch=default | ||||
|/ | ||||
o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] branch=default | ||||
$ cd .. | ||||
$ check_convert_identity named-branch-p1 | ||||
A file added at p1, a named branch created at p2: | ||||
(In this case, p1 manifest is reused at the merge commit, which means the | ||||
manifest DAG does not have the same shape as the changelog.) | ||||
$ hg init named-branch-p2 | ||||
$ cd named-branch-p2 | ||||
$ touch a b | ||||
$ hg ci -qAm0 a | ||||
$ hg branch -q foo | ||||
$ hg ci -m1 | ||||
$ hg up -q 0 | ||||
$ hg ci -qAm1 b | ||||
$ hg merge foo | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg ci --debug -m merge | ||||
reusing manifest from p1 (no file change) | ||||
committing changelog | ||||
updating the branch cache | ||||
committed changeset 3:036823e24692218324d4af43b07ff89f8a000096 | ||||
$ hg log -GT'{l} branch={branch}' | ||||
@ 3:036823e24692 p=2,1 m=1:686dbf0aeca4 f=[] branch=default | ||||
|\ | ||||
| o 2:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] branch=default | ||||
| | | ||||
o | 1:da38c8e00727 p=0,-1 m=0:8515d4bfda76 f=[] branch=foo | ||||
|/ | ||||
o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] branch=default | ||||
$ cd .. | ||||
$ check_convert_identity named-branch-p2 | ||||
A file changed once at both parents, but amended to have identical content: | ||||
$ hg init amend-p1 | ||||
$ cd amend-p1 | ||||
$ touch a | ||||
$ hg ci -qAm0 a | ||||
$ echo foo > a | ||||
$ hg ci -m1 | ||||
$ hg up -q 0 | ||||
$ echo bar > a | ||||
$ hg ci -qm2 | ||||
$ echo foo > a | ||||
$ hg ci -qm3 --amend | ||||
$ hg merge | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg ci --debug -m merge | ||||
reusing manifest from p1 (no file change) | ||||
committing changelog | ||||
updating the branch cache | ||||
committed changeset 3:314e5bc5adf5c58ea571efabe33eedba20a201aa | ||||
$ hg log -GT'{l} branch={branch}' | ||||
@ 3:314e5bc5adf5 p=2,1 m=1:d33ea248bd73 f=[] branch=default | ||||
|\ | ||||
| o 2:de9c64f226a3 p=0,-1 m=1:d33ea248bd73 f=["a"] branch=default | ||||
| | | ||||
o | 1:6a74aec01b3c p=0,-1 m=1:d33ea248bd73 f=["a"] branch=default | ||||
|/ | ||||
o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] branch=default | ||||
$ cd .. | ||||
$ check_convert_identity amend-p1 | ||||