Skip to content

Push Broken in 0.8.13 -- Bump Version Number

Environment:

  • Linux (Gentoo)
  • hg-git-0.8.13
  • dulwich-0.9.15
  • python-2.7
  • mercurial-5.3.2 (python 2.7)

Repro Steps:

  1. hg clone {some repository}
  2. touch foobar; hg add foobar; hg commit -m "FooBar!"
  3. hg push
  4. Error: TypeError: 'status' object has no attribute '__getitem__'

It looks like this has already been fixed in master with the following:

        status = self._hg.status(self._ctx, newctx)
        modified, added, removed = (
            status.modified,
            status.added,
            status.removed,
        )

However, as far as I can tell the latest release (0.8.13) is broken for some basic push scenarios.

Since the latest release doesn't work... Should there be a version bump to 0.8.13-r1 or 0.8.14?

Full Callstack:

** Unknown exception encountered with possibly-broken third-party extension hggit
** which supports versions 5.2 of Mercurial.
** Please disable hggit and try your action again.
** If that fixes the bug please report it to https://bitbucket.org/durin42/hg-git/issues
** Python 2.7.18 (default, Apr 27 2020, 22:20:07) [GCC 9.3.0]
** Mercurial Distributed SCM (version 5.3.2)
** Extensions loaded: convert, extdiff, hggit, histedit, strip, mq, purge, rebase, uncommit
Traceback (most recent call last):
  File "/usr/lib/python-exec/python2.7/hg", line 43, in <module>
    dispatch.run()
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 111, in run
    status = dispatch(req)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 254, in dispatch
    ret = _runcatch(req) or 0
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 428, in _runcatch
    return _callcatch(ui, _runcatchfunc)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 437, in _callcatch
    return scmutil.callcatch(ui, func)
  File "/usr/lib64/python2.7/site-packages/mercurial/scmutil.py", line 152, in callcatch
    return func()
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 418, in _runcatchfunc
    return _dispatch(req)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 1182, in _dispatch
    lui, repo, cmd, fullargs, ui, options, d, cmdpats, cmdoptions
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 866, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 1193, in _runcommand
    return cmdfunc()
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 1179, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/lib64/python2.7/site-packages/mercurial/util.py", line 1854, in check
    return func(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/mercurial/util.py", line 1854, in check
    return func(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/hgext/mq.py", line 4218, in mqcommand
    return orig(ui, repo, *args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/mercurial/util.py", line 1854, in check
    return func(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/mercurial/commands.py", line 5658, in push
    opargs=opargs,
  File "/usr/lib64/python2.7/site-packages/hggit/util.py", line 60, in inner
    return f(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/hggit/__init__.py", line 384, in exchangepush
    pushop.cgresult = repo.githandler.push(remote.path, revs, force)
  File "/usr/lib64/python2.7/site-packages/hggit/git_handler.py", line 405, in push
    self.export_commits()
  File "/usr/lib64/python2.7/site-packages/hggit/git_handler.py", line 370, in export_commits
    self.export_git_objects()
  File "/usr/lib64/python2.7/site-packages/hggit/git_handler.py", line 528, in export_git_objects
    self.export_hg_commit(ctx.node(), exporter)
  File "/usr/lib64/python2.7/site-packages/hggit/git_handler.py", line 603, in export_hg_commit
    for obj, nodeid in exporter.update_changeset(ctx):
  File "/usr/lib64/python2.7/site-packages/hggit/hg2git.py", line 196, in update_changeset
    modified, added, removed = self._hg.status(self._ctx, newctx)[0:3]
TypeError: 'status' object has no attribute '__getitem__'
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information