# HG changeset patch # User Martin von Zweigbergk # Date 2020-10-22 20:38:14 # Node ID e0dbfbd4062c72fa60958397d19fe350d6a0ebce # Parent 8d72e29ad1e093cbe71ce271ea18e40c30a47b8b errors: set detailed exit code to 20 for locking errors This is per https://www.mercurial-scm.org/wiki/ErrorCategoriesPlan. Differential Revision: https://phab.mercurial-scm.org/D9242 diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -159,6 +159,7 @@ def callcatch(ui, func): # Global exception handling, alphabetically # Mercurial-specific first, followed by built-in and library exceptions except error.LockHeld as inst: + detailed_exit_code = 20 if inst.errno == errno.ETIMEDOUT: reason = _(b'timed out waiting for lock held by %r') % ( pycompat.bytestr(inst.locker) @@ -172,6 +173,7 @@ def callcatch(ui, func): if not inst.locker: ui.error(_(b"(lock might be very busy)\n")) except error.LockUnavailable as inst: + detailed_exit_code = 20 ui.error( _(b"abort: could not lock %s: %s\n") % ( diff --git a/tests/test-lock-badness.t b/tests/test-lock-badness.t --- a/tests/test-lock-badness.t +++ b/tests/test-lock-badness.t @@ -136,6 +136,6 @@ Pushing to a local read-only repo that c pushing to a searching for changes abort: could not lock repository a: Permission denied - [255] + [20] $ chmod 700 a/.hg/store diff --git a/tests/test-phases-exchange.t b/tests/test-phases-exchange.t --- a/tests/test-phases-exchange.t +++ b/tests/test-phases-exchange.t @@ -1327,7 +1327,7 @@ error, but EEXIST) waiting for lock on repository $TESTTMP/Upsilon held by '' abort: repository $TESTTMP/Upsilon: timed out waiting for lock held by '' (lock might be very busy) - [255] + [20] $ rm .hg/store/lock $ cd ..