##// END OF EJS Templates
diff: add --inverse option...
diff: add --inverse option Most of the time, one can reverse a diff by swapping the revisions passed with -r but it happens that if you use the global -R, and diff against the tip of the current repo, you can't swap the revisions. One use-case for that is reviewing changes from a bundle before unbundling. One could also pipe the output of `hg diff` to a command line filter that reverses the diff, but that would remove the benefit from color diffs. Therefore, having an option in `hg diff` to reverse a diff is a good thing. The option flag selection was tricky. GNU patch uses -R/--reverse but -R is already used as a global option and --reverse would make --rev ambiguous.

File last commit:

r8523:5b7da468 default
r9725:3f522d2f default
Show More
test-merge-commit
74 lines | 1.6 KiB | text/plain | TextLexer
#!/bin/sh
# 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 0
hg mv foo bar
rm bar
echo line0 > bar
echo line1 >> bar
hg ci -m '2: mv foo bar; change bar'
hg merge 1
echo '% contents of bar should be line0 line1 line2'
cat bar
hg ci -m '3: merge with local rename'
hg debugindex .hg/store/data/bar.i
hg debugrename bar
hg debugindex .hg/store/data/foo.i
# revert the content change from rev 2
hg up -C 2
rm bar
echo line1 > bar
hg ci -m '4: revert content change from rev 2'
hg log --template '{rev}:{node|short} {parents}\n'
echo '% this should use bar@rev2 as the ancestor'
hg --debug merge 3
echo '% contents of bar should be line1 line2'
cat bar
hg ci -m '5: merge'
hg debugindex .hg/store/data/bar.i
# same thing, but with the merge on 3 having the rename on the remote parent
echo
echo
cd ..
hg clone -U -r 1 -r 2 a b
cd b
hg up -C 1
hg merge 2
echo '% contents of bar should be line0 line1 line2'
cat bar
hg ci -m '3: merge with remote rename'
hg debugindex .hg/store/data/bar.i
hg debugrename bar
hg debugindex .hg/store/data/foo.i
# revert the content change from rev 2
hg up -C 2
rm bar
echo line1 > bar
hg ci -m '4: revert content change from rev 2'
hg log --template '{rev}:{node|short} {parents}\n'
echo '% this should use bar@rev2 as the ancestor'
hg --debug merge 3
echo '% contents of bar should be line1 line2'
cat bar
hg ci -m '5: merge'
hg debugindex .hg/store/data/bar.i