D8666: locks: expect repo lock, not wlock, when writing to .hg/strip-backup/
martinvonz created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
There should be no need for a working copy lock when creating (or
reading) bundles in `.hg/strip-backup/` since they don't affect the
I noticed this because we have an extension that tries to strip some
revisions while holding only a repo lock. I guess we have no such
cases in core, which seems a bit surprising. Maybe we always take a
wlock at a higher level so the working copy is not updated while the
target commit is being stripped.
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
@@ -1235,8 +1235,9 @@
msg = b'accessing cache with vfs instead of cachevfs: "%s"'
repo.ui.develwarn(msg % path, stacklevel=3, config=b"cache-vfs")
- if path.startswith(b'journal.') or path.startswith(b'undo.'):
- # journal is covered by 'lock'
+ # path prefixes covered by 'lock'
+ vfs_path_prefixes = (b'journal.', b'undo.', b'strip-backup/')
+ if any(path.startswith(prefix) for prefix in vfs_path_prefixes):
if repo._currentlock(repo._lockref) is None:
b'write with no lock: "%s"' % path,