diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py --- a/hgext/largefiles/overrides.py +++ b/hgext/largefiles/overrides.py @@ -1432,7 +1432,9 @@ lfdirstate.write() oldstandins = lfutil.getstandinsstate(repo) - + # largefiles is not a good candidate for in-memory merge (large files, + # custom dirstate, matcher usage) so always force an on-disk merge. + kwargs["ondisk"] = True result = orig(repo, node, branchmerge, force, *args, **kwargs) newstandins = lfutil.getstandinsstate(repo) diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -1467,7 +1467,7 @@ def update(repo, node, branchmerge, force, ancestor=None, mergeancestor=False, labels=None, matcher=None, mergeforce=False, - updatecheck=None): + updatecheck=None, ondisk=True): """ Perform a merge between the working directory and the given node @@ -1516,6 +1516,8 @@ 3 = abort: uncommitted changes (checked in commands.py) Return the same tuple as applyupdates(). + + This function might run parts of the merge in memory if ``ondisk=False``. """ # Avoid cycle. from . import sparse