Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commands.py @ 50060:3c34a224c232
locking: take the `wlock` for the full `hg add` duration
Otherwise, there is a race condition window between the time we resolve the
file to add with the matcher and the time we lock the repo and modify the
dirstate.
For example, the working copy might have been updated away, or purged, and the
matched files would no longer be correct.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 13 Dec 2022 04:21:27 +0100 |
parents | 7a8bfc05b691 |
children | 16b78c0de506 |
comparison
equal
deleted
inserted
replaced
50059:f4eef08575ce | 50060:3c34a224c232 |
---|---|
250 ? foo.c | 250 ? foo.c |
251 | 251 |
252 Returns 0 if all files are successfully added. | 252 Returns 0 if all files are successfully added. |
253 """ | 253 """ |
254 | 254 |
255 m = scmutil.match(repo[None], pats, pycompat.byteskwargs(opts)) | 255 with repo.wlock(): |
256 uipathfn = scmutil.getuipathfn(repo, legacyrelativevalue=True) | 256 m = scmutil.match(repo[None], pats, pycompat.byteskwargs(opts)) |
257 rejected = cmdutil.add(ui, repo, m, b"", uipathfn, False, **opts) | 257 uipathfn = scmutil.getuipathfn(repo, legacyrelativevalue=True) |
258 return rejected and 1 or 0 | 258 rejected = cmdutil.add(ui, repo, m, b"", uipathfn, False, **opts) |
259 return rejected and 1 or 0 | |
259 | 260 |
260 | 261 |
261 @command( | 262 @command( |
262 b'addremove', | 263 b'addremove', |
263 similarityopts + subrepoopts + walkopts + dryrunopts, | 264 similarityopts + subrepoopts + walkopts + dryrunopts, |