Cannot push?
Summary
hg push
fails with remote: TypeError: Can't mix strings and bytes in path components
.
Steps to reproduce
Encountered in the cffi project:
arigo@catsnake:/tmp$ hg clone ssh://hg@foss.heptapod.net/pypy/cffi
destination directory: cffi
requesting all changes
adding changesets
adding manifests
adding file changes
added 3441 changesets with 6496 changes to 349 files (+19 heads)
new changesets 99e0004b87e9:c792ddaaf8b8
updating to branch default
189 files updated, 0 files merged, 0 files removed, 0 files unresolved
arigo@catsnake:/tmp$ cd cffi
arigo@catsnake:/tmp/cffi$ echo >> README.md
arigo@catsnake:/tmp/cffi$ hg ci -m"small unimportant change"
arigo@catsnake:/tmp/cffi$ hg push
pushing to ssh://hg@foss.heptapod.net/pypy/cffi
searching for changes
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 <module>
remote: dispatch.run()
remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 113, in run
remote: status = dispatch(req)
remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 303, in dispatch
remote: ret = _runcatch(req) or 0
remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 479, in _runcatch
remote: return _callcatch(ui, _runcatchfunc)
remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 488, 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 469, in _runcatchfunc
remote: return _dispatch(req)
remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 1232, in _dispatch
remote: return runcommand(
remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 917, in runcommand
remote: ret = _runcommand(ui, options, cmd, d)
remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 1244, in _runcommand
remote: return cmdfunc()
remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/dispatch.py", line 1230, in <lambda>
remote: d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/util.py", line 1867, in check
remote: return func(*args, **kwargs)
remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/commands.py", line 6516, 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 605, 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 2204, in validate
remote: repo.hook(
remote: File "/home/hg/venv3/lib/python3.8/site-packages/mercurial/localrepo.py", line 1766, 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 260, 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 331, 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 144, 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 733, 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 606, in export_hg_commit
remote: if obj.id not in self.git.object_store:
remote: File "/home/hg/venv3/lib/python3.8/site-packages/dulwich/object_store.py", line 349, in __contains__
remote: for alternate in self.alternates:
remote: File "/home/hg/venv3/lib/python3.8/site-packages/dulwich/object_store.py", line 568, in alternates
remote: for path in self._read_alternate_paths():
remote: File "/home/hg/venv3/lib/python3.8/site-packages/dulwich/object_store.py", line 585, in _read_alternate_paths
remote: yield os.fsdecode(os.path.join(self.path, line))
remote: File "/usr/host/lib/python3.8/posixpath.py", line 90, in join
remote: genericpath._check_arg_types('join', a, *p)
remote: File "/usr/host/lib/python3.8/genericpath.py", line 155, in _check_arg_types
remote: raise TypeError("Can't mix strings and bytes in path components") from None
remote: TypeError: Can't mix strings and bytes in path components
abort: stream ended unexpectedly (got 0 bytes, expected 4)
arigo@catsnake:/tmp/cffi$ hg --version
Mercurial Distributed SCM (version 5.4.1)
(see https://mercurial-scm.org for more information)
Copyright (C) 2005-2020 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
arigo@catsnake:/tmp/cffi$ cat ~/.hgrc
[paths]
tannit = ssh://tannit/pypysrc/
bencher = ssh://bencher4/pypysrc/
[ui]
username = Armin Rigo <arigo@tunes.org>
# verbose = 1
ssh = ssh -C
style = /home/arigo/hg/arigo/hack/hg/svn.style
# merge = meld
# merge = vimdiff
merge = hgdiff3
interface.chunkselector = curses
[phases]
publish = false
[extensions]
# purge =
share =
parentrevspec =
# transplant = ...see "hg graft"
record =
# schemes =
progress =
# hggit =
shelve =
#evolve =
#topic =
[experimental]
obshashrange.warm-cache = off
# [merge-tools]
# vimdiff.executable = vim
# vimdiff.args = -d $base $local $output $other +close +close
# [schemes]
# tannit = ssh://tannit/pypysrc/
arigo@catsnake:/tmp/cffi$