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