# HG changeset patch # User Martin von Zweigbergk # Date 1672781936 28800 # Node ID 59466b13a3ae0e29a5d4f485393e516cfbb057d0 # Parent 3d7bf111f01e73ec8de27f6fe3e0f5f08b4c39b6 filemerge: fix crash when using filesets in [partial-merge-tools] Without this patch, you'd get `mercurial.error.ProgrammingError: fileset expression with no context`. diff -r 3d7bf111f01e -r 59466b13a3ae mercurial/filemerge.py --- a/mercurial/filemerge.py Tue Dec 06 17:12:59 2022 -0500 +++ b/mercurial/filemerge.py Tue Jan 03 13:38:56 2023 -0800 @@ -1132,7 +1132,9 @@ patterns = ui.configlist(section, b'%s.patterns' % name, []) is_match = True if patterns: - m = match.match(repo.root, b'', patterns) + m = match.match( + repo.root, b'', patterns, ctx=local.fctx.changectx() + ) is_match = m(local.fctx.path()) if is_match: if ui.configbool(section, b'%s.disable' % name): diff -r 3d7bf111f01e -r 59466b13a3ae tests/test-merge-partial-tool.t --- a/tests/test-merge-partial-tool.t Tue Dec 06 17:12:59 2022 -0500 +++ b/tests/test-merge-partial-tool.t Tue Jan 03 13:38:56 2023 -0800 @@ -196,6 +196,30 @@ >>>>>>> merge rev: 8c217da987be - test: a b c d e f2 +Filesets can be used to select which files to run partial merge tools on. + + $ hg up -C 4 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg merge 3 -t :merge3 --config partial-merge-tools.head.patterns=set:other + merging file + warning: conflicts while merging file! (edit, then use 'hg resolve --mark') + 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] + $ cat file + b + c + d + e + <<<<<<< working copy: d57edaa6e21a - test: a b c d e f3 + f3 + ||||||| common ancestor: 8ae8bb9cc43a - test: a b c d e f + f + ======= + f2 + >>>>>>> merge rev: 8c217da987be - test: a b c d e f2 + + If there are several matching tools, they are run in requested order. We move `head` after `tail` in order here so it has no effect (the conflict in "f" thus remains).