Push fails when a subrepo has been removed
I'm trying to push some changes to a repo on heptapod.host, and getting a large stack trace back. Possibly related to the fact that a subrepo was removed from .hgsub in one of the changesets.
The output sent back is:
remote: adding changesets remote: adding manifests remote: adding file changes remote: Traceback (most recent call last): remote: File "/home/hg/venv/bin/hg", line 43, in remote: dispatch.run() remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 112, in run remote: status = dispatch(req) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 298, in dispatch remote: ret = _runcatch(req) or 0 remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 472, in _runcatch remote: return _callcatch(ui, _runcatchfunc) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 481, in _callcatch remote: return scmutil.callcatch(ui, func) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/scmutil.py", line 152, in callcatch remote: return func() remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 462, in _runcatchfunc remote: return _dispatch(req) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 1225, in _dispatch remote: return runcommand( remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 910, in runcommand remote: ret = _runcommand(ui, options, cmd, d) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 1237, in _runcommand remote: return cmdfunc() remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 1223, in remote: d = lambda: util.checksignature(func)(ui, *args, **strcmdopt) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/util.py", line 1865, in check remote: return func(*args, **kwargs) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/commands.py", line 6512, in serve remote: s.serve_forever() remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/wireprotoserver.py", line 852, in serve_forever remote: self.serveuntil(threading.Event()) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/wireprotoserver.py", line 858, in serveuntil remote: _runsshserver(self._ui, self._repo, self._fin, self._fout, ev) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/wireprotoserver.py", line 700, in _runsshserver remote: rsp = wireprotov1server.dispatch(repo, proto, request) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/wireprotov1server.py", line 82, in dispatch remote: return func(repo, proto, *args) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/wireprotov1server.py", line 663, in unbundle remote: r = exchange.unbundle( remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/exchange.py", line 2824, in unbundle remote: lockandtr[2].close() remote: File "/home/hg/venv3/lib/python3.8/site-packages/hgext3rd/topic/__init__.py", line 568, in close remote: origclose() remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/transaction.py", line 46, in _active remote: return func(self, *args, **kwds) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/transaction.py", line 521, in close remote: self._validatecallback[category](self) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/localrepo.py", line 2194, in validate remote: repo.hook( remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/localrepo.py", line 1756, in hook remote: return hook.hook(self.ui, self, name, throw, **args) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/hook.py", line 256, in hook remote: res = runhooks(ui, repo, htype, hooks, throw=throw, **args) remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/hook.py", line 327, in runhooks remote: r, raised = pythonhook( remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/hook.py", line 116, in pythonhook remote: r = obj(ui=ui, repo=repo, hooktype=htype, **pycompat.strkwargs(args)) remote: File "/home/hg/venv3/lib/python3.8/site-packages/heptapod/hooks/gitlab_mirror.py", line 13, in mirror remote: gitlab_mirror(ui, repo) remote: File "/home/hg/venv3/lib/python3.8/site-packages/hgext3rd/heptapod/__init__.py", line 136, in gitlab_mirror remote: git.HeptapodGitHandler(repo, repo.ui).export_commits() remote: File "/home/hg/venv3/lib/python3.8/site-packages/hgext3rd/heptapod/git.py", line 649, in export_commits remote: self.export_git_objects() remote: File "/home/hg/venv3/lib/python3.8/site-packages/hggit/git_handler.py", line 530, in export_git_objects remote: self.export_hg_commit(ctx.node(), exporter) remote: File "/home/hg/venv3/lib/python3.8/site-packages/hggit/git_handler.py", line 605, in export_hg_commit remote: for obj, nodeid in exporter.update_changeset(ctx): remote: File "/home/hg/venv3/lib/python3.8/site-packages/hggit/hg2git.py", line 223, in update_changeset remote: self._remove_path(path, dirty_trees) remote: File "/home/hg/venv3/lib/python3.8/site-packages/hggit/hg2git.py", line 275, in _remove_path remote: del tree[os.path.basename(path)] remote: File "/home/hg/venv3/lib/python3.8/site-packages/dulwich/objects.py", line 999, in __delitem__ remote: del self._entries[name] remote: KeyError: b'GLHelpers' abort: stream ended unexpectedly (got 0 bytes, expected 4)