hg.clone(ui, repo) always crashes

Mads Kiilerich mads at kiilerich.com
Tue Jul 6 13:32:54 CDT 2010


  Greg Ward wrote, On 07/06/2010 05:17 PM:
> OK, I know I can't expect a stable API, that I have to port my
> extensions and stuff for every major release.  That's OK.  But this
> simple script:
>
> """
> from mercurial import ui, hg
>
> ui = ui.ui()
> repo = hg.repository(ui, '.')
> hg.clone(repo.ui, repo, dest='/tmp/foo')
> """
>
> is guaranteed to crash under 1.6.  In particular, if you pass a
> non-string to hg.clone as 'source', a crash is inevitable.  Proof: if
> source is not a string, we set branch = None.  Then we pass None to
> addbranchrevs() as branches.  addbranchrevs() assumes that branches is
> an iterable of length 2 so it crashes:
>
> Traceback (most recent call last):
>    File "testclone", line 5, in<module>
>      hg.clone(repo.ui, repo, dest='/tmp/foo')
>    File "/home/gward/src/hg-crew-stable/mercurial/hg.py", line 226, in clone
>      rev, checkout = addbranchrevs(src_repo, src_repo, branch, rev)
>    File "/home/gward/src/hg-crew-stable/mercurial/hg.py", line 22, in
> addbranchrevs
>      hashbranch, branches = branches
> TypeError: 'NoneType' object is not iterable
>
> I bisected and found:
>
> changeset:   11322:3d6915f5a2bb
> user:        Sune Foldager<cryo at cyanite.org>
> date:        2010-06-10 12:46:09 +0200
> summary:     improve --branch processing (and differentiate from # syntax)
>
> Looks like an easy fix to restore the old behaviour.

See http://mercurial.selenic.com/bts/issue2267 and thus 
http://thread.gmane.org/gmane.comp.version-control.mercurial.devel/32445

/Mads


More information about the Mercurial-devel mailing list