On Sun, 2011-05-15 at 16:13 +0200, Julien Danjou wrote: > I've continued to build my toy with dulwich. So far, so good. :) > > I'm encountering an error from time to time, and I'm unable to > understand what's wrong. > > What I'm doing is that I'm building a repository using Dulwich on one > side, and fetching a refs (using Client.fetch) on the other side in > another repository. Nothing fancy. > > This is the backtrace I get once in a while: > File "remote.py", line 125, in fetch > return self.client.fetch(self.path, self.storage, determine_wants, > self.FetchProgress) > File "/usr/local/lib/python2.6/dist-packages/dulwich/client.py", line 211, > in fetch > commit() > File "/usr/local/lib/python2.6/dist-packages/dulwich/object_store.py", line > 475, in commit > return self.move_in_pack(path) > File "/usr/local/lib/python2.6/dist-packages/dulwich/object_store.py", line > 431, in move_in_pack > entries = p.sorted_entries() > File "/usr/local/lib/python2.6/dist-packages/dulwich/pack.py", line 888, in > sorted_entries > ret = list(self.iterentries(progress=progress)) > File "/usr/local/lib/python2.6/dist-packages/dulwich/pack.py", line 878, in > iterentries > type, obj = self.resolve_object(offset, type, obj) > File "/usr/local/lib/python2.6/dist-packages/dulwich/pack.py", line 852, in > resolve_object > base_offset, type, base_obj = get_ref(basename) > File "/usr/local/lib/python2.6/dist-packages/dulwich/pack.py", line 824, in > get_ref > raise KeyError(sha) > KeyError: 'C\x9ag&\x1e\x15\x0f\x8e\xd7 \x10a\x9e\x8e\xab\xf5\x80f6\xf0' > > When this happens, it always happens: I mean doing another fetch on the > same ref using Dulwich raises the same exception. > > I noticed there's an objects/pack/tmpXXXX.pack file left in the > repository after this. I can send it if this can help. I can also send > the repositories. > > I'm not sure it's a bug in dulwich. Well, it is probably, because > raising on commit with such an exception looks like a bad idea. :-) > But before reporting it, I'd like to be sure this is not a mistake on my > side that I could easily avoid doing. :) What is the server running?
I think we should be accepting thin packs from remote servers. Can you try changing add_pack() to add_thin_pack() in dulwich/client.py ? Cheers, Jelmer
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Mailing list: https://launchpad.net/~dulwich-users Post to : [email protected] Unsubscribe : https://launchpad.net/~dulwich-users More help : https://help.launchpad.net/ListHelp

