Issue #381 new

'trying to get a popped file' exception while 'hg pull' when EOL extension is enabled

Anton Malakhov
created an issue
** unknown exception encountered, please report by visiting
**  http://mercurial.selenic.com/wiki/BugTracker
** Python 2.7.3 (default, Apr 30 2012, 21:18:11) [GCC 4.7.0 20120416 (Red Hat 4.7.0-2)]
** Mercurial Distributed SCM (version 2.2.2)
** Extensions loaded: hgsubversion, rebase, mq, extdiff, eol, graphlog
Traceback (most recent call last):
  File "/bin/hg", line 38, in <module>
    mercurial.dispatch.run()
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 27, in run
    sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 64, in dispatch
    return _runcatch(req)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 87, in _runcatch
    return _dispatch(req)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 696, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 472, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 786, in _runcommand
    return checkargs()
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 757, in checkargs
    return cmdfunc()
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 693, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
  File "/usr/lib64/python2.7/site-packages/mercurial/util.py", line 463, in check
    return func(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 352, in __call__
    util.checksignature(self.fn)(ui, *args, **opts)
  File "/usr/lib64/python2.7/site-packages/mercurial/util.py", line 463, in check
    return func(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/mercurial/extensions.py", line 139, in wrap
    util.checksignature(origfn), *args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/mercurial/util.py", line 463, in check
    return func(*args, **kwargs)
  File "/users/amalakho/hg/hgsvn/hgsubversion/wrappers.py", line 632, in generic
    return orig(ui, repo, *args, **opts)
  File "/usr/lib64/python2.7/site-packages/mercurial/util.py", line 463, in check
    return func(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/mercurial/extensions.py", line 139, in wrap
    util.checksignature(origfn), *args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/mercurial/util.py", line 463, in check
    return func(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/hgext/mq.py", line 3392, in mqcommand
    return orig(ui, repo, *args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/mercurial/util.py", line 463, in check
    return func(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/mercurial/extensions.py", line 139, in wrap
    util.checksignature(origfn), *args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/mercurial/util.py", line 463, in check
    return func(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/hgext/rebase.py", line 649, in pullrebase
    orig(ui, repo, *args, **opts)
  File "/usr/lib64/python2.7/site-packages/mercurial/util.py", line 463, in check
    return func(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/mercurial/commands.py", line 4458, in pull
    modheads = repo.pull(other, heads=revs, force=opts.get('force'))
  File "/users/amalakho/hg/hgsvn/hgsubversion/svnrepo.py", line 81, in wrapper
    return fn(self, *args, **opts)
  File "/users/amalakho/hg/hgsvn/hgsubversion/svnrepo.py", line 104, in pull
    return wrappers.pull(self, remote, heads, force)
  File "/users/amalakho/hg/hgsvn/hgsubversion/wrappers.py", line 443, in pull
    firstrun)
  File "/users/amalakho/hg/hgsvn/hgsubversion/replay.py", line 66, in convert_rev
    return _convert_rev(ui, meta, svn, r, tbdelta, firstrun)
  File "/users/amalakho/hg/hgsvn/hgsubversion/replay.py", line 191, in _convert_rev
    new_hash = meta.repo.svn_commitctx(current_ctx)
  File "/users/amalakho/hg/hgsvn/hgsubversion/svnrepo.py", line 91, in svn_commitctx
    hash = self.commitctx(ctxctx(ctx))
  File "/usr/lib64/python2.7/site-packages/hgext/eol.py", line 343, in commitctx
    return super(eolrepo, self).commitctx(ctx, error)
  File "/usr/lib64/python2.7/site-packages/mercurial/localrepo.py", line 1248, in commitctx
    fctx = ctx[f]
  File "/users/amalakho/hg/hgsvn/hgsubversion/svnrepo.py", line 60, in __getitem__
    return self._ctx[key]
  File "/usr/lib64/python2.7/site-packages/mercurial/context.py", line 1185, in __getitem__
    return self.filectx(key)
  File "/usr/lib64/python2.7/site-packages/mercurial/context.py", line 1227, in filectx
    return self._filectxfn(self._repo, self, path)
  File "/users/amalakho/hg/hgsvn/hgsubversion/replay.py", line 158, in filectxfn
    data, isexec, islink, copied = current.pop(current_file)
  File "/users/amalakho/hg/hgsvn/hgsubversion/editor.py", line 133, in pop
    ret = self.get(path)
  File "/users/amalakho/hg/hgsvn/hgsubversion/editor.py", line 126, in get
    data = self.store.getfile(path)
  File "/users/amalakho/hg/hgsvn/hgsubversion/editor.py", line 62, in getfile
    raise EditingError('trying to get a popped file %s' % fname)
hgext_hgsubversion.editor.EditingError: trying to get a popped file trunk/tbb/1.0/include/tbb/internal/_concurrent_unordered_impl.h

Comments (14)

  1. Anton Malakhov reporter

    Please fix or workaround it ASAP! It really blocks my normal way to work - I have to move .hgeol forth and back on each 'hg pull' :(

    ** Unknown exception encountered with possibly-broken third-party extension hgsubversion
    ** which supports versions unknown of Mercurial.
    ** Please disable hgsubversion and try your action again.
    ** If that fixes the bug please report it to the extension author.
    ** Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)]
    ** Mercurial Distributed SCM (version 2.4.2)
    ** Extensions loaded: hgsubversion, reviewboard, thgissue2329, rebase, mq, extdiff, eol
    Traceback (most recent call last):
      File "hg", line 42, in <module>
      File "mercurial\dispatch.pyo", line 28, in run
      File "mercurial\dispatch.pyo", line 65, in dispatch
      File "mercurial\dispatch.pyo", line 88, in _runcatch
      File "mercurial\dispatch.pyo", line 741, in _dispatch
      File "mercurial\dispatch.pyo", line 514, in runcommand
      File "mercurial\dispatch.pyo", line 831, in _runcommand
      File "mercurial\dispatch.pyo", line 802, in checkargs
      File "mercurial\dispatch.pyo", line 738, in <lambda>
      File "mercurial\util.pyo", line 472, in check
      File "mercurial\dispatch.pyo", line 394, in __call__
      File "mercurial\util.pyo", line 472, in check
      File "mercurial\extensions.pyo", line 144, in wrap
      File "mercurial\util.pyo", line 472, in check
      File "hgext\mq.pyo", line 3546, in mqcommand
      File "mercurial\util.pyo", line 472, in check
      File "mercurial\extensions.pyo", line 144, in wrap
      File "mercurial\util.pyo", line 472, in check
      File "C:\Progra~1\TortoiseHg\hgsvn\hgsubversion\wrappers.py", line 625, in generic
        return orig(ui, repo, *args, **opts)
      File "mercurial\util.pyo", line 472, in check
      File "mercurial\extensions.pyo", line 144, in wrap
      File "mercurial\util.pyo", line 472, in check
      File "hgext\rebase.pyo", line 704, in pullrebase
      File "mercurial\util.pyo", line 472, in check
      File "mercurial\commands.pyo", line 4656, in pull
      File "C:\Progra~1\TortoiseHg\hgsvn\hgsubversion\svnrepo.py", line 81, in wrapper
        return fn(self, *args, **opts)
      File "C:\Progra~1\TortoiseHg\hgsvn\hgsubversion\svnrepo.py", line 104, in pull
        return wrappers.pull(self, remote, heads, force)
      File "C:\Progra~1\TortoiseHg\hgsvn\hgsubversion\wrappers.py", line 436, in pull
        firstrun)
      File "C:\Progra~1\TortoiseHg\hgsvn\hgsubversion\replay.py", line 66, in convert_rev
        return _convert_rev(ui, meta, svn, r, tbdelta, firstrun)
      File "C:\Progra~1\TortoiseHg\hgsvn\hgsubversion\replay.py", line 191, in _convert_rev
        new_hash = meta.repo.svn_commitctx(current_ctx)
      File "C:\Progra~1\TortoiseHg\hgsvn\hgsubversion\svnrepo.py", line 91, in svn_commitctx
        hash = self.commitctx(ctxctx(ctx))
      File "hgext\eol.pyo", line 347, in commitctx
      File "mercurial\localrepo.pyo", line 1423, in commitctx
      File "C:\Progra~1\TortoiseHg\hgsvn\hgsubversion\svnrepo.py", line 60, in __getitem__
        return self._ctx[key]
      File "mercurial\context.pyo", line 1223, in __getitem__
      File "mercurial\context.pyo", line 1265, in filectx
      File "C:\Progra~1\TortoiseHg\hgsvn\hgsubversion\replay.py", line 158, in filectxfn
        data, isexec, islink, copied = current.pop(current_file)
      File "C:\Progra~1\TortoiseHg\hgsvn\hgsubversion\editor.py", line 133, in pop
        ret = self.get(path)
      File "C:\Progra~1\TortoiseHg\hgsvn\hgsubversion\editor.py", line 126, in get
        data = self.store.getfile(path)
      File "C:\Progra~1\TortoiseHg\hgsvn\hgsubversion\editor.py", line 62, in getfile
        raise EditingError('trying to get a popped file %s' % fname)
    hgext_hgsubversion.editor.EditingError: trying to get a popped file trunk/tbb/1.0/src/tbb/arena.cpp
    
  2. terrakot

    It is really annoying behavior. I hope it will be fixed to allow real hg - svn interaction for Windows users.

    Thank you for the hint, Anton, it solved my case too.

  3. terrakot

    Changeset hash: 09b5e6a76724e0897e930f6fc113c0549290bc45

    It was repository created by hgsubversion extension. Later I enabled EOL to avoid issues with LF endings in SVN repository, but got this exception.

    When I removed .hgeol, this exception disappeared. When I reverted it back, it failed again with the same exception. Then I reverted patch (Anton suggestion) and this exception disappeared

  4. Anton Malakhov reporter

    Update: with the most recent version the bug is still there.

    ** Unknown exception encountered with possibly-broken third-party extension hgsubversion
    ** which supports versions unknown of Mercurial.
    ** Please disable hgsubversion and try your action again.
    ** If that fixes the bug please report it to the extension author.
    ** Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)]
    ** Mercurial Distributed SCM (version 3.1.1)
    ** Extensions loaded: hgsubversion, reviewboard, thgissue2329, rebase, strip, mq, extdiff, eol, fetch, tortoisehg.util.partialcommit, tortoisehg.util.pipeui, tortoisehg.util.win32ill, tortoisehg.util.hgdispatch
    ** Unknown exception encountered with possibly-broken third-party extension hgsubversion
    ** which supports versions unknown of Mercurial.
    ** Please disable hgsubversion and try your action again.
    ** If that fixes the bug please report it to the extension author.
    ** Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)]
    ** Mercurial Distributed SCM (version 3.1.1)
    ** Extensions loaded: hgsubversion, reviewboard, thgissue2329, rebase, strip, mq, extdiff, eol, fetch, tortoisehg.util.partialcommit, tortoisehg.util.pipeui, tortoisehg.util.win32ill, tortoisehg.util.hgdispatch
    Traceback (most recent call last):
      File "hg", line 42, in <module>
      File "mercurial\dispatch.pyo", line 28, in run
      File "mercurial\dispatch.pyo", line 69, in dispatch
      File "mercurial\dispatch.pyo", line 138, in _runcatch
      File "mercurial\dispatch.pyo", line 820, in _dispatch
      File "mercurial\dispatch.pyo", line 600, in runcommand
      File "mercurial\dispatch.pyo", line 911, in _runcommand
      File "mercurial\dispatch.pyo", line 882, in checkargs
      File "mercurial\dispatch.pyo", line 817, in <lambda>
      File "mercurial\util.pyo", line 550, in check
      File "mercurial\extensions.pyo", line 151, in wrap
      File "mercurial\util.pyo", line 550, in check
      File "hgext\mq.pyo", line 3393, in mqcommand
      File "mercurial\util.pyo", line 550, in check
      File "mercurial\commands.pyo", line 5283, in serve
      File "mercurial\commandserver.pyo", line 244, in serve
      File "mercurial\commandserver.pyo", line 224, in serveone
      File "mercurial\commandserver.pyo", line 207, in runcommand
      File "mercurial\dispatch.pyo", line 69, in dispatch
      File "mercurial\dispatch.pyo", line 138, in _runcatch
      File "mercurial\extensions.pyo", line 196, in wrap
      File "tortoisehg\util\hgdispatch.pyo", line 101, in _dispatch
      File "mercurial\dispatch.pyo", line 820, in _dispatch
      File "mercurial\dispatch.pyo", line 600, in runcommand
      File "mercurial\dispatch.pyo", line 911, in _runcommand
      File "mercurial\dispatch.pyo", line 882, in checkargs
      File "mercurial\dispatch.pyo", line 817, in <lambda>
      File "mercurial\util.pyo", line 550, in check
      File "mercurial\dispatch.pyo", line 458, in __call__
      File "mercurial\util.pyo", line 550, in check
      File "mercurial\extensions.pyo", line 151, in wrap
      File "mercurial\util.pyo", line 550, in check
      File "hgext\mq.pyo", line 3393, in mqcommand
      File "mercurial\util.pyo", line 550, in check
      File "mercurial\extensions.pyo", line 151, in wrap
      File "mercurial\util.pyo", line 550, in check
      File "C:/Progra~1/TortoiseHg/hgsvn\hgsubversion\wrappers.py", line 653, in generic
        return orig(ui, repo, *args, **opts)
      File "mercurial\util.pyo", line 550, in check
      File "mercurial\extensions.pyo", line 151, in wrap
      File "mercurial\util.pyo", line 550, in check
      File "hgext\rebase.pyo", line 920, in pullrebase
      File "mercurial\util.pyo", line 550, in check
      File "mercurial\commands.pyo", line 4700, in pull
      File "C:/Progra~1/TortoiseHg/hgsvn\hgsubversion\svnrepo.py", line 77, in wrapper
        return fn(self, *args, **opts)
      File "C:/Progra~1/TortoiseHg/hgsvn\hgsubversion\svnrepo.py", line 105, in pull
        return wrappers.pull(self, remote, heads, force)
      File "C:/Progra~1/TortoiseHg/hgsvn\hgsubversion\wrappers.py", line 461, in pull
        firstrun)
      File "C:/Progra~1/TortoiseHg/hgsvn\hgsubversion\replay.py", line 57, in convert_rev
        return _convert_rev(ui, meta, svn, r, tbdelta, firstrun)
      File "C:/Progra~1/TortoiseHg/hgsvn\hgsubversion\replay.py", line 187, in _convert_rev
        new_hash = meta.repo.svn_commitctx(current_ctx)
      File "C:/Progra~1/TortoiseHg/hgsvn\hgsubversion\svnrepo.py", line 90, in svn_commitctx
        hash = self.commitctx(ctxctx(ctx))
      File "hgext\eol.pyo", line 337, in commitctx
      File "C:/Progra~1/TortoiseHg/hgsvn\hgsubversion\svnrepo.py", line 60, in __getitem__
        return self._ctx[key]
      File "mercurial\context.pyo", line 61, in __getitem__
      File "mercurial\context.pyo", line 1601, in filectx
      File "C:/Progra~1/TortoiseHg/hgsvn\hgsubversion\replay.py", line 151, in filectxfn
        data, isexec, islink, copied = current.pop(current_file)
    AttributeError: 'RevisionData' object has no attribute 'pop'
    
  5. Augie Fackler repo owner

    Moving this back to minor - there's an easy workaround (--config extensions.eol=! or similar on pull), and I have little expectation that any existing contributors will step up to figure out the problem.

    I'd welcome patches that fix this, but I really strongly expect that the issue lies with something EOL is doing.

  6. Anton Malakhov reporter

    the workaround is still the same:

    diff --git a/hgsubversion/replay.py b/hgsubversion/replay.py
    --- a/hgsubversion/replay.py
    +++ b/hgsubversion/replay.py
    @@ -148,7 +148,7 @@
             def filectxfn(repo, memctx, path):
                 current_file = files[path]
                 try:
    -                data, isexec, islink, copied = current.pop(current_file)
    +                data, isexec, islink, copied = current.get(current_file)
                 except IOError:
                     return compathacks.filectxfn_deleted_reraise(memctx)
                 if isexec is None or islink is None:
    
  7. Augie Fackler repo owner

    Yeah, that does seem bad.

    Like I said - this is definitely a bug, but it's very unlikely that anyone is going to look at it other than you. Patches definitely encouraged, and folks in #hgsubversion or #mercurial on freenode can probably offer some guidance/moral support if you want to dig into this.

  8. Log in to comment