Subject: Re: git http-push and MKCOL error (22/409)

From: Thomas Schlichter <[email-masked]>
Date: Mon, 17 Aug 2009 07:25:09 +0200

Hi,

Am Montag 17 August 2009 06:58:25 schrieb Tay Ray Chuan:
> Hi,
>
> On Mon, Aug 17, 2009 at 3:34 AM, Junio C Hamano<[email-masked]> wrote:
> > The report said:
> >
> >    MKCOL 98fd7fb8f32843c1bb40bd195a2f1cd6cab0751d failed, aborting
> > (22/409)
> >
> > As far as I can see you are trying (in http-push.c::start_mkcol()) to
> > create the two-hexdigit fan-out directory (i.e. "98" for this example);
> > it is strange to see a request to create the full 40-hexdigit collection
> > in the first place.
>
> Yes, you're right, but git prints out the full SHA-1 hash even though
> it is actually referring to the 2-hexdigit directory that it failed to
> create/verify, for whatever reason.
>
> > In another thread you responded to earlier:
> >
> >  
> >  http://thread.gmane.org/gmane.comp.version-control.git/125933/focus=1259
> >72
> >
> > the original report did not give the exact error message, but in that
> > one, instead of failing to create 40-hexdigit collection like this, I am
> > guessing that it fails with something like "MKCOL 'refs' failed".
>
> I guess by "original report" you refer to Thomas' initial email: yes,
> he (unwittingly) did provide theerror code in the subject line, the
> part which says (22/409). It actually means (<curl return code>/<http
> return code>). Referring again to
> http://www.webdav.org/specs/rfc4918.html#rfc.section.9.3.1:
>
>   409 (Conflict) - A collection cannot be made at the Request-URI until
>   one or more intermediate collections have been created. The server
>   must not create those intermediate collections automatically.
>
> meaning one or more parent directories weren't created.
>
> Based on this and his procedure, I'm guessing that there's something
> wrong with his setup.
>
> > *1* Not necessarily in the sense the client is broken but in the sense
> > that the server-client combination does not work for the reporter.
>
> Indeed.

Hmm. I hope you won't take this as an argument for not fixing it, because it 
is a clear regression! I tried git version 1.6.3.4, and it works flawlessly 
with exactly this server! Even during bisecting, some versions worked, some 
didn't (these after the mentioned commit...)

So I think this commit didn't only refactor things, but unintentionally 
changed the behavior. And this must be the problem. As I'm not into this code, 
and the refactoring was not completely trivial, I was not able to quickly find 
the place where the behavior was changed...

Kind regards,
Thomas Schlichter