diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -159,6 +159,7 @@ # 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 @@ 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 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 @@ 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 ..