diff --git a/mercurial/sparse.py b/mercurial/sparse.py --- a/mercurial/sparse.py +++ b/mercurial/sparse.py @@ -718,7 +718,7 @@ The new config is written out and a working directory refresh is performed. """ - with repo.wlock(), repo.dirstate.parentchange(): + with repo.wlock(), repo.lock(), repo.dirstate.parentchange(): raw = repo.vfs.tryread(b'sparse') oldinclude, oldexclude, oldprofiles = parseconfig( repo.ui, raw, b'sparse' diff --git a/tests/test-sparse-with-safe-share.t b/tests/test-sparse-with-safe-share.t new file mode 100644 --- /dev/null +++ b/tests/test-sparse-with-safe-share.t @@ -0,0 +1,23 @@ +Same with share-safe + + $ echo "[format]" >> $HGRCPATH + $ echo "use-share-safe = True" >> $HGRCPATH + + $ cd $TESTTMP + + $ hg init myrepo + $ cd myrepo + $ cat > .hg/hgrc < [extensions] + > sparse= + > EOF + + $ echo a > show + $ echo x > hide + $ hg ci -Aqm 'initial' + +Regression test: checks that this command correctly locks the store +before updating the store [requirements] config. + + $ hg up -q 0 + $ hg debugsparse --include 'hide'