# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 1600392533 25200 # Node ID bddc4f2ef317f14dff9626553ba08d33f3fd6550 # Parent 8ceb5b4b2728181162986c842a4a5ee7983ec285 remotefilelog: acquire lock before writing requirements on clone Performing a shallow clone in remotefilelog does not acquire lock. This leads to following warning when we try to write some requirements in store: ``` --- /home/gps/src/hg-committed/tests/test-remotefilelog-share.t +++ /home/gps/src/hg-committed/tests/test-remotefilelog-share.t#safe.err @@ -28,6 +28,7 @@ $ hgcloneshallow ssh://user@dummy/master source --noupdate -q + devel-warn: write with no lock: "requires" at: /home/gps/src/hg-committed/mercurial/scmutil.py:1505 (writerequires) $ hg share source dest updating working directory 1 files updated, 0 files merged, 0 files removed, 0 files unresolved ``` Let's lock before writing the requirements file. Another solution which I can think of is not warn about missing lock when writing to requires file in store. Differential Revision: https://phab.mercurial-scm.org/D8952 diff -r 8ceb5b4b2728 -r bddc4f2ef317 hgext/remotefilelog/__init__.py --- a/hgext/remotefilelog/__init__.py Thu Sep 10 14:23:12 2020 +0900 +++ b/hgext/remotefilelog/__init__.py Thu Sep 17 18:28:53 2020 -0700 @@ -362,7 +362,10 @@ self.unfiltered().__class__, ) self.requirements.add(constants.SHALLOWREPO_REQUIREMENT) - scmutil.writereporequirements(self) + with self.lock(): + # acquire store lock before writing requirements as some + # requirements might be written to .hg/store/requires + scmutil.writereporequirements(self) # Since setupclient hadn't been called, exchange.pull was not # wrapped. So we need to manually invoke our version of it.