sapling/eden/scm/tests/test-merge-commit.t
Jun Wu a7ba754d88 rebase: remove more uses of revnums
Summary: Replace revnum with commit hashes.

Reviewed By: singhsrb

Differential Revision: D24233229

fbshipit-source-id: 98b4d45b542b65c375cef405b45b66cd2dad22e4
2020-10-20 15:24:28 -07:00

191 lines
5.9 KiB
Perl

#chg-compatible
Check that renames are correctly saved by a commit after a merge
Test with the merge on 3 having the rename on the local parent
$ hg init a
$ cd a
$ echo line1 > foo
$ hg add foo
$ hg ci -m '0: add foo'
$ echo line2 >> foo
$ hg ci -m '1: change foo'
$ hg up -C 2665aaee66e9fc1bb2da7f5779ba24c07a077f9c
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg mv foo bar
$ rm bar
$ echo line0 > bar
$ echo line1 >> bar
$ hg ci -m '2: mv foo bar; change bar'
$ hg merge 5cd961e4045d633bfcbba1c42fc0850c08ea708c
merging bar and foo to bar
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat bar
line0
line1
line2
$ hg ci -m '3: merge with local rename'
#if common-zlib
$ hg debugindex bar
rev offset length ..... linkrev nodeid p1 p2 (re)
0 0 77 ..... 2 d35118874825 000000000000 000000000000 (re)
1 77 80 0 3 5345f5ab8abd 000000000000 d35118874825
#endif
$ hg debugrename bar
bar renamed from foo:9e25c27b87571a1edee5ae4dddee5687746cc8e2
#if common-zlib
$ hg debugindex foo
rev offset length ..... linkrev nodeid p1 p2 (re)
0 0 7 ..... 0 690b295714ae 000000000000 000000000000 (re)
1 7 13 ..... 1 9e25c27b8757 690b295714ae 000000000000 (re)
#endif
Revert the content change from rev 2:
$ hg up -C 0f2ff26688b9cebd8fe05c5f24d4b9fbc623e823
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm bar
$ echo line1 > bar
$ hg ci -m '4: revert content change from rev 2'
$ hg log --template '{node|short} {parents}\n'
2263c1be0967 0f2ff26688b9
0555950ead28 0f2ff26688b9 5cd961e4045d
0f2ff26688b9 2665aaee66e9
5cd961e4045d 2665aaee66e9
2665aaee66e9 000000000000
This should use bar@rev2 as the ancestor:
$ hg --debug merge 0555950ead287c667df4449c8b3e25d20f99d55b
searching for copies back to 5cd961e4045d
resolving manifests
branchmerge: True, force: False, partial: False
ancestor: 0f2ff26688b9, local: 2263c1be0967+, remote: 0555950ead28
preserving bar for resolve of bar
bar: versions differ -> m (premerge)
picked tool ':merge' for bar (binary False symlink False changedelete False)
merging bar
my bar@2263c1be0967+ other bar@0555950ead28 ancestor bar@0f2ff26688b9
premerge successful
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat bar
line1
line2
$ hg ci -m '5: merge'
#if common-zlib
$ hg debugindex bar
rev offset length ..... linkrev nodeid p1 p2 (re)
0 0 77 ..... 2 d35118874825 000000000000 000000000000 (re)
1 77 80 0 3 5345f5ab8abd 000000000000 d35118874825
2 157 7 -1 4 ff4b45017382 d35118874825 000000000000
3 164 13 -1 5 3701b4893544 ff4b45017382 5345f5ab8abd
#endif
Same thing, but with the merge on 3 having the rename
on the remote parent:
$ cd ..
$ hg clone -U -r 1 -r 2 a b
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 2 files
$ cd b
$ hg up -C 5cd961e4045d633bfcbba1c42fc0850c08ea708c
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 0f2ff26688b9cebd8fe05c5f24d4b9fbc623e823
merging foo and bar to bar
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat bar
line0
line1
line2
$ hg ci -m '3: merge with remote rename'
#if common-zlib
$ hg debugindex bar
rev offset length ..... linkrev nodeid p1 p2 (re)
0 0 77 ..... 2 d35118874825 000000000000 000000000000 (re)
1 77 80 0 3 5345f5ab8abd 000000000000 d35118874825
#endif
$ hg debugrename bar
bar renamed from foo:9e25c27b87571a1edee5ae4dddee5687746cc8e2
#if common-zlib
$ hg debugindex foo
rev offset length ..... linkrev nodeid p1 p2 (re)
0 0 7 ..... 0 690b295714ae 000000000000 000000000000 (re)
1 7 13 ..... 1 9e25c27b8757 690b295714ae 000000000000 (re)
#endif
Revert the content change from rev 2:
$ hg up -C 0f2ff26688b9cebd8fe05c5f24d4b9fbc623e823
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm bar
$ echo line1 > bar
$ hg ci -m '4: revert content change from rev 2'
$ hg log --template '{node|short} {parents}\n'
2263c1be0967 0f2ff26688b9
3ffa6b9e35f0 5cd961e4045d 0f2ff26688b9
0f2ff26688b9 2665aaee66e9
5cd961e4045d 2665aaee66e9
2665aaee66e9 000000000000
This should use bar@rev2 as the ancestor:
$ hg --debug merge 3ffa6b9e35f066d97cfa87e58fa169bce5415826
searching for copies back to 5cd961e4045d
resolving manifests
branchmerge: True, force: False, partial: False
ancestor: 0f2ff26688b9, local: 2263c1be0967+, remote: 3ffa6b9e35f0
preserving bar for resolve of bar
bar: versions differ -> m (premerge)
picked tool ':merge' for bar (binary False symlink False changedelete False)
merging bar
my bar@2263c1be0967+ other bar@3ffa6b9e35f0 ancestor bar@0f2ff26688b9
premerge successful
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat bar
line1
line2
$ hg ci -m '5: merge'
#if common-zlib
$ hg debugindex bar
rev offset length ..... linkrev nodeid p1 p2 (re)
0 0 77 ..... 2 d35118874825 000000000000 000000000000 (re)
1 77 80 0 3 5345f5ab8abd 000000000000 d35118874825
2 157 7 -1 4 ff4b45017382 d35118874825 000000000000
3 164 13 -1 5 3701b4893544 ff4b45017382 5345f5ab8abd
#endif
$ cd ..