Fatal error when pushing an empty hg repo to a bare git repo
Created originally on Bitbucket by maxime_r (Maxime R.)
Steps to reproduce:
#!sh
mkdir -p emptyrepo/{hg,git}
cd emptyrepo/git
git init --bare
cd ../hg
hg init
hg bookmark -f -r default master
hg push --verbose --debug ../git
echo $?
Output:
#!sh
$ ./pushemptyrepo.sh
Initialized empty Git repository in /home/maxime/prog/hg_repos/emptyrepo/git/
abandon : unknown revision 'default' !
pushing to ../git
creating and sending data
fatal: protocol error: expected old/new/ref, got '0000000000000000000000000000000000000000 None refs/heads/master'
** unknown exception encountered, please report by visiting
** http://mercurial.selenic.com/wiki/BugTracker
** Python 2.7.3 (default, Sep 26 2012, 21:51:14) [GCC 4.7.2]
** Mercurial version 2.2.2, système de gestion de sources distribué
** Extensions chargées : extdiff, graphlog, purge, prompt, color, hgshelve, hgsubversion, hggit, rebase, mq
Traceback (most recent call last):
File "/usr/bin/hg", line 38, in <module>
mercurial.dispatch.run()
File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 27, in run
sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 64, in dispatch
return _runcatch(req)
File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 87, in _runcatch
return _dispatch(req)
File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 696, in _dispatch
cmdpats, cmdoptions)
File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 472, in runcommand
ret = _runcommand(ui, options, cmd, d)
File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 184, in wrap
return wrapper(origfn, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/hgext/color.py", line 362, in colorcmd
return orig(ui_, opts, cmd, cmdfunc)
File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 786, in _runcommand
return checkargs()
File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 757, in checkargs
return cmdfunc()
File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 693, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 463, in check
return func(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 139, in wrap
util.checksignature(origfn), *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 463, in check
return func(*args, **kwargs)
File "/home/maxime/prog/hg_repos/hgsubversion/hgsubversion/wrappers.py", line 533, in generic
return orig(ui, repo, *args, **opts)
File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 463, in check
return func(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 139, in wrap
util.checksignature(origfn), *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 463, in check
return func(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/hgext/mq.py", line 3392, in mqcommand
return orig(ui, repo, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 463, in check
return func(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 139, in wrap
util.checksignature(origfn), *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 463, in check
return func(*args, **kwargs)
File "/home/maxime/prog/hg_repos/hg-prompt/prompt.py", line 434, in _push_with_cache
res = orig(ui, repo, *args, **opts)
File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 463, in check
return func(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/mercurial/commands.py", line 4549, in push
newbranch=opts.get('new_branch'))
File "/usr/local/lib/python2.7/dist-packages/hggit/hgrepo.py", line 22, in push
git.push(remote.path, revs, force)
File "/usr/local/lib/python2.7/dist-packages/hggit/git_handler.py", line 244, in push
changed_refs = self.upload_pack(remote, revs, force)
File "/usr/local/lib/python2.7/dist-packages/hggit/git_handler.py", line 775, in upload_pack
changed_refs = client.send_pack(path, changed, genpack)
File "/usr/local/lib/python2.7/dist-packages/dulwich/client.py", line 455, in send_pack
if len(objects) > 0:
File "/usr/local/lib/python2.7/dist-packages/dulwich/object_store.py", line 755, in __len__
return len(list(self.itershas()))
File "/usr/local/lib/python2.7/dist-packages/dulwich/object_store.py", line 729, in itershas
for sha in self.sha_iter:
File "/usr/local/lib/python2.7/dist-packages/dulwich/object_store.py", line 822, in next
o = self.object_store[sha]
File "/usr/local/lib/python2.7/dist-packages/dulwich/object_store.py", line 112, in __getitem__
type_num, uncomp = self.get_raw(sha)
File "/usr/local/lib/python2.7/dist-packages/dulwich/object_store.py", line 299, in get_raw
if len(name) == 40:
TypeError: object of type 'NoneType' has no len()
1