Mercurial > hg-stable
changeset 37841:7c05198cd1ca stable
push: continue without locking on lock failure other than EEXIST (issue5882)
This code was added by 3f5e75c22585 "push: make locking of source optional
(issue3684)", but EACCES isn't the only error that could be triggered by
filesystem permission. I think catching LockUnavailable is more appropriate
than testing errno value by caller.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Tue, 15 May 2018 22:12:55 +0900 |
parents | 273ea09f6550 |
children | f9dc1d5b676b |
files | mercurial/exchange.py tests/test-phases-exchange.t |
diffstat | 2 files changed, 13 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/exchange.py Sat May 12 22:29:28 2018 +0200 +++ b/mercurial/exchange.py Tue May 15 22:12:55 2018 +0900 @@ -8,7 +8,6 @@ from __future__ import absolute_import import collections -import errno import hashlib from .i18n import _ @@ -513,9 +512,7 @@ pushop.trmanager = transactionmanager(pushop.repo, 'push-response', pushop.remote.url()) - except IOError as err: - if err.errno != errno.EACCES: - raise + except error.LockUnavailable as err: # source repo cannot be locked. # We do not abort the push, but just disable the local phase # synchronisation.
--- a/tests/test-phases-exchange.t Sat May 12 22:29:28 2018 +0200 +++ b/tests/test-phases-exchange.t Tue May 15 22:12:55 2018 +0900 @@ -1307,6 +1307,18 @@ [1] $ chmod -R +w .hg +3. Test that push is prevented if lock was already acquired (not a permission +error, but EEXIST) + + $ touch .hg/store/lock + $ hg push ../Phi --config ui.timeout=1 + pushing to ../Phi + 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] + $ rm .hg/store/lock + $ cd .. #endif