From 8a4473f1d04ea3272267d2c599a01136881abf47 Mon Sep 17 00:00:00 2001 From: Phil Cohen Date: Tue, 16 Jan 2018 17:23:15 -0800 Subject: [PATCH] merge: log which files were driver-resolved to scuba Summary: Log whichever paths were driver-resolved but not in experimental.inmemorydisallowedpaths, so we can update experimental.inmemorydisallowedpaths and keep the experience of rebasing with IMM and mergedriver a pleasant one. Test Plan: . Reviewers: #sourcecontrol Differential Revision: https://phabricator.intern.facebook.com/D6656159 --- mercurial/merge.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/mercurial/merge.py b/mercurial/merge.py index dda34277cb..a612c67850 100644 --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -1561,6 +1561,20 @@ def applyupdates(repo, actions, wctx, mctx, overwrite, labels=None): "support mergedriver") ms.commit() proceed = driverpreprocess(repo, ms, wctx, labels=labels) + + # Note which files were marked as driver-resolved but not matched by + # experimental.inmemorydisallowedpaths. This will allow us to keep + # inmemorydisallowedpaths up to date so in-memory rebases are not + # restarted late in the merge. + # (Make sure the the default value (.^) doesn't match anything, since an + # empty string matches everything -- not what we want.) + pathsconfig = repo.ui.config("rebase", + "experimental.inmemorydisallowedpaths", ".^") + regex = util.re.compile(pathsconfig) + unmatched = [f for f in ms.driverresolved() if not regex.match(f)] + repo.ui.log('imm_mergedriver', '', + driver_resolved_missed="|".join(sorted(unmatched))) + # the driver might leave some files unresolved unresolvedf = set(ms.unresolved()) if not proceed: