hg clone problem

Matt Mackall mpm at selenic.com
Tue Aug 30 15:32:52 CDT 2005


On Tue, Aug 30, 2005 at 04:18:22PM -0400, Michal Ostrowski wrote:
> I've been seeing errors in trying to http-clone a repository I have:
> 
> mostrows at heater:/tmp$ hg clone http://heater.watson.ibm.com/hg/linux
> requesting all changes
> adding changesets
> adding manifests
> adding file changes
> added 5900 changesets with 45984 changes to 18414 files
> Traceback (most recent call last):
>   File "/home/mostrows/bin/hg", line 13, in ?
>     commands.run()
>   File "/home/mostrows/lib/python/mercurial/commands.py", line 1711, in run
>     sys.exit(dispatch(sys.argv[1:]))
>   File "/home/mostrows/lib/python/mercurial/commands.py", line 1847, in dispatch
>     return d()
>   File "/home/mostrows/lib/python/mercurial/commands.py", line 1834, in <lambda>
>     d = lambda: func(u, *args, **cmdoptions)
>   File "/home/mostrows/lib/python/mercurial/commands.py", line 602, in clone
>     update(ui, repo)
>   File "/home/mostrows/lib/python/mercurial/commands.py", line 1483, in update
>     return repo.update(node, allow=merge, force=clean)
>   File "/home/mostrows/lib/python/mercurial/localrepo.py", line 1188, in update
>     t = self.file(f).read(get[f])
>   File "/home/mostrows/lib/python/mercurial/filelog.py", line 34, in read
>     t = self.revision(node)
>   File "/home/mostrows/lib/python/mercurial/revlog.py", line 323, in revision
>     rev = self.rev(node)
>   File "/home/mostrows/lib/python/mercurial/revlog.py", line 209, in rev
>     def rev(self, node): return self.nodemap[node]
> KeyError: '5\x1f\xea\xca\x1c\xdf\x15^\xbf+H!\xcc\x96(5\x8e\xe7\x91$'
> 
> 
> I'm using index.py to export this repository via apache.
> If I switch to using "hg serve" it works.
> Cloning via the fs works.
> hg verify shows no errors.
> 
> I've seen others post similar exception-backtraces before to this list,
> but I haven't seen a good explanation of what these errors mean or a
> solution.  Suggestions?

(haven't quite gotten out the door on my trip yet)

The backtrace is unfortunately too generic to be of any use. In
particular, it doesn't complain about which file it failed to find.
I'll fix that up first thing when I get back.

Does your repository contain directories with names like "foo.d" or
"foo.i"?

If so, you probably have a different copy of Mercurial installed (pre
0.6c) that your CGI script is finding. And the old version doesn't
know about the new directory-escaping scheme.[1]

Otherwise, the behavior of hg serve and the CGI script should be
identical.

[1] Yes, I've learned my lesson about wishful thinking and backward
compatibility.
-- 
Mathematics is the supreme nostalgia of our time.


More information about the Mercurial mailing list