# HG changeset patch # User Phil Cohen # Date 1505269621 25200 # Node ID 24bf823377fcbf49fec9da8adb796924dff91c73 # Parent 9b4d7d4855f5d2abb6c715da680862993de30254 merge: move cwd-missing detection to helper functions This will exist in two places with defered writes, so we want to avoid duplication. Differential Revision: https://phab.mercurial-scm.org/D626 diff -r 9b4d7d4855f5 -r 24bf823377fc mercurial/merge.py --- a/mercurial/merge.py Sun Sep 03 15:09:04 2017 +0900 +++ b/mercurial/merge.py Tue Sep 12 19:27:01 2017 -0700 @@ -1084,18 +1084,21 @@ return prunedactions, diverge, renamedelete +def _getcwd(): + try: + return pycompat.getcwd() + except OSError as err: + if err.errno == errno.ENOENT: + return None + raise + def batchremove(repo, wctx, actions): """apply removes to the working directory yields tuples for progress updates """ verbose = repo.ui.verbose - try: - cwd = pycompat.getcwd() - except OSError as err: - if err.errno != errno.ENOENT: - raise - cwd = None + cwd = _getcwd() i = 0 for f, args, msg in actions: repo.ui.debug(" %s: %s -> r\n" % (f, msg)) @@ -1113,18 +1116,12 @@ i += 1 if i > 0: yield i, f - if cwd: - # cwd was present before we started to remove files - # let's check if it is present after we removed them - try: - pycompat.getcwd() - except OSError as err: - if err.errno != errno.ENOENT: - raise - # Print a warning if cwd was deleted - repo.ui.warn(_("current directory was removed\n" - "(consider changing to repo root: %s)\n") % - repo.root) + + if cwd and not _getcwd(): + # cwd was removed in the course of removing files; print a helpful + # warning. + repo.ui.warn(_("current directory was removed\n" + "(consider changing to repo root: %s)\n") % repo.root) # It's necessary to flush here in case we're inside a worker fork and will # quit after this function.