D4341: sparse: add local files to temporaryfiles if they exist out of sparse
pulkit (Pulkit Goyal)
phabricator at mercurial-scm.org
Tue Aug 28 10:17:49 EDT 2018
pulkit added a comment.
Maybe the current state is not very helpful in reviewing. The traceback which I am trying to fix is this:
$ hg merge
+ Traceback (most recent call last):
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/scmutil.py", line 161, in callcatch
+ return func()
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/dispatch.py", line 344, in _runcatchfunc
+ return _dispatch(req)
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/dispatch.py", line 982, in _dispatch
+ cmdpats, cmdoptions)
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/dispatch.py", line 728, in runcommand
+ ret = _runcommand(ui, options, cmd, d)
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/dispatch.py", line 990, in _runcommand
+ return cmdfunc()
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/dispatch.py", line 979, in <lambda>
+ d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/util.py", line 1531, in check
+ return func(*args, **kwargs)
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/commands.py", line 3785, in merge
+ labels=labels, abort=abort)
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/hg.py", line 904, in merge
+ labels=labels)
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/merge.py", line 2177, in update
+ stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/merge.py", line 1584, in applyupdates
+ ms.add(fcl, fco, fca, f)
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/merge.py", line 493, in add
+ self._repo.vfs.write('merge/' + hash, fcl.data())
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/context.py", line 1685, in data
+ return self._repo.wread(self._path)
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/localrepo.py", line 1212, in wread
+ data = self.wvfs.read(filename)
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/vfs.py", line 78, in read
+ with self(path, 'rb') as fp:
+ File "/place/vartmp/hgtests.nx0HIy/install/lib/python/mercurial/vfs.py", line 409, in __call__
+ fp = util.posixfile(f, mode)
+ IOError: [Errno 2] $ENOENT$: '$TESTTMP/mvtest/a'
abort: $ENOENT$: $TESTTMP/mvtest/a
[255]
The error comes when we try to read a working-fctx which is not present in working directory. I don't think applyupdates is the right place to add logic about updating sparse checkouts. The best way I could figure out is that explicitly take care that f2 is loaded while merging.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D4341
To: pulkit, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list