Mercurial > hg
changeset 45481:bddc4f2ef317
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
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Thu, 17 Sep 2020 18:28:53 -0700 |
parents | 8ceb5b4b2728 |
children | 9a99ab8217bd |
files | hgext/remotefilelog/__init__.py |
diffstat | 1 files changed, 4 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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.