D628: merge: flush any deferred writes before, and after, running any workers
phillco (Phil Cohen)
phabricator at mercurial-scm.org
Mon Sep 11 03:55:29 UTC 2017
phillco updated this revision to Diff 1701.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D628?vs=1672&id=1701
REVISION DETAIL
https://phab.mercurial-scm.org/D628
AFFECTED FILES
mercurial/merge.py
CHANGE DETAILS
diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -1111,6 +1111,10 @@
_warnifmissingcwd(repo, cwd)
+ # It's necessary to flush here in case we're inside a worker fork and will
+ # quit after this function.
+ wctx.flushall()
+
def batchget(repo, mctx, wctx, actions):
"""apply gets to the working directory
@@ -1146,6 +1150,10 @@
if i > 0:
yield i, f
+ # It's necessary to flush here in case we're inside a worker fork and will
+ # quit after this function.
+ wctx.flushall()
+
def applyupdates(repo, actions, wctx, mctx, overwrite, labels=None):
"""apply the merge action list to the working directory
@@ -1214,6 +1222,10 @@
progress(_updating, z, item=item, total=numupdates, unit=_files)
removed = len(actions['r'])
+ # We should flush before forking into worker processes, since those workers
+ # flush when they complete, and we don't want to duplicate work.
+ wctx.flushall()
+
# get in parallel
prog = worker.worker(repo.ui, 0.001, batchget, (repo, mctx, wctx),
actions['g'])
To: phillco, #hg-reviewers
Cc: quark, mercurial-devel
More information about the Mercurial-devel
mailing list