comparison tests/test-merge-tools.t @ 37077:1e30a26a65d0

filemerge: make the 'local' path match the format that 'base' and 'other' use If we pass a separate '$output' arg to the merge tool, we produce four files: local, base, other, and output. In this situation, 'output' will be the original filename, 'base' and 'other' are temporary files, and previously 'local' would be the backup file (so if 'output' was foo.txt, 'local' would be foo.txt.orig). This change makes it so that 'local' follows the same pattern as 'base' and 'other' - it will be a temporary file either in the `experimental.mergetempdirprefix`-controlled directory with a name like foo~local.txt, or in the normal system-wide temp dir with a name like foo~local.RaNd0m.txt. For the cases where the merge tool does not use an '$output' arg, 'local' is still the destination filename, and 'base' and 'other' are unchanged. The hope is that this is much easier for people to reason about; rather than having a tool like Meld pop up with three panes, one of them with the filename "foo.txt.orig", one with the filename "foo.txt", and one with "foo~other.StuFf2.txt", we can (when the merge temp dir stuff is enabled) make it show up as "foo~local.txt", "foo.txt" and "foo~other.txt", respectively. This also opens the door to future customization, such as getting the operation-provided labels and a hash prefix into the filenames (so we see something like "foo~dest.abc123", "foo.txt", and "foo~src.d4e5f6"). Differential Revision: https://phab.mercurial-scm.org/D2889
author Kyle Lippincott <spectral@google.com>
date Wed, 21 Mar 2018 12:36:29 -0700
parents 6bc2f1b3bc9d
children a4a5c3085ea9
comparison
equal deleted inserted replaced
37076:66d478064d5f 37077:1e30a26a65d0
1583 $ hg mv f f.txt 1583 $ hg mv f f.txt
1584 $ hg ci -qm "f.txt" 1584 $ hg ci -qm "f.txt"
1585 $ hg update -q -C 2 1585 $ hg update -q -C 2
1586 $ hg merge -y -r tip --tool echo --config merge-tools.echo.args='$base $local $other $output' 1586 $ hg merge -y -r tip --tool echo --config merge-tools.echo.args='$base $local $other $output'
1587 merging f and f.txt to f.txt 1587 merging f and f.txt to f.txt
1588 */f~base.* $TESTTMP/f.txt.orig */f~other.*.txt $TESTTMP/f.txt (glob) 1588 */f~base.* */f~local.*.txt */f~other.*.txt $TESTTMP/f.txt (glob)
1589 0 files updated, 1 files merged, 0 files removed, 0 files unresolved 1589 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
1590 (branch merge, don't forget to commit) 1590 (branch merge, don't forget to commit)
1591 1591
1592 Verify naming of temporary files and that extension is preserved 1592 Verify naming of temporary files and that extension is preserved
1593 (experimental.mergetempdirprefix version): 1593 (experimental.mergetempdirprefix version):
1598 $ hg update -q -C 2 1598 $ hg update -q -C 2
1599 $ hg merge -y -r tip --tool echo \ 1599 $ hg merge -y -r tip --tool echo \
1600 > --config merge-tools.echo.args='$base $local $other $output' \ 1600 > --config merge-tools.echo.args='$base $local $other $output' \
1601 > --config experimental.mergetempdirprefix=$TESTTMP/hgmerge. 1601 > --config experimental.mergetempdirprefix=$TESTTMP/hgmerge.
1602 merging f and f.txt to f.txt 1602 merging f and f.txt to f.txt
1603 $TESTTMP/hgmerge.*/f~base $TESTTMP/f.txt.orig $TESTTMP/hgmerge.*/f~other.txt $TESTTMP/f.txt (glob) 1603 $TESTTMP/hgmerge.*/f~base $TESTTMP/hgmerge.*/f~local.txt $TESTTMP/hgmerge.*/f~other.txt $TESTTMP/f.txt (glob)
1604 0 files updated, 1 files merged, 0 files removed, 0 files unresolved 1604 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
1605 (branch merge, don't forget to commit) 1605 (branch merge, don't forget to commit)
1606 1606
1607 Check that debugpicktool examines which merge tool is chosen for 1607 Check that debugpicktool examines which merge tool is chosen for
1608 specified file as expected 1608 specified file as expected