# http-push sends MKCOL command to create remote directory MKCOL http://user@server:80/url/.git/refs/ that already exists

2 messages from 2009-08-14 to 2009-08-15. Participants: willievu, Tay Ray Chuan.
Thread: https://gitlist.dev/t/20596

## willievu, 2009-08-14 15:42

Subject: http-push sends MKCOL command to create remote directory MKCOL http://user@server:80/url/.git/refs/ that already exists
Message-ID: <1250264521299-3445796.post@n2.nabble.com>
URL: https://gitlist.dev/e/1250264521299-3445796.post%40n2.nabble.com

```

Steps will reproduce the problem:
1. create a bare & shared repository locally and copy to remote server
2. create a local repository. add and commit some files
3. git push to the remote server

$ git push --verbose --thin upload HEAD
Pushing to http://user@server/url/.git/
Password:
Fetching remote heads...
  refs/
  refs/heads/
  refs/tags/
updating 'refs/heads/master' using 'HEAD'
  from 0000000000000000000000000000000000000000
  to   0120f45ebfd90501868e990bfbb9f50fb0a8ebae

<<<<< Here, a MKCOL http://user@server:80/url/.git/refs/ request is sent.  
The WebDAV server returns a HTTP 500 Internal Server Error.  Then, the 
following message continues:

Unable to create branch path http://user@server/url/.git/refs/
Unable to lock remote branch refs/heads/master
error: failed to push some refs to 'http://user@server/url/.git/'

This is the server:

Server: Oracle9iAS/9.0.2.3.0 Oracle HTTP Server (Unix) mod_plsql/9.0.2.6.0b 
DAV/1.0.3.2.4-0119 (OraDAV enabled) mod_osso/9.0.2.0.0 mod_ossl/9.0.2.0.0 
mod_fastcgi/2.2.12 mod_perl/1.26 mod_oc4j/3.0

Is MKCOL expected even for existing directory in the remote repository?  Is
this a WebDAV server problem that 500 is returned?

-- 
View this message in context: http://n2.nabble.com/http-push-sends-MKCOL-command-to-create-remote-directory-MKCOL-http%3A--user%40server%3A80-url-.git-refs--that-already-exists-tp3445796p3445796.html
Sent from the git mailing list archive at Nabble.com.

```

## Tay Ray Chuan, 2009-08-15 01:28

Subject: Re: http-push sends MKCOL command to create remote directory MKCOL http://user@server:80/url/.git/refs/ that already exists
Message-ID: <be6fef0d0908141828u1e426dc5nbf94b9a5db015943@mail.gmail.com>
URL: https://gitlist.dev/e/be6fef0d0908141828u1e426dc5nbf94b9a5db015943%40mail.gmail.com
In-Reply-To: <1250264521299-3445796.post@n2.nabble.com>

```
Hi,

On Fri, Aug 14, 2009 at 11:42 PM, willievu<willievu@dev.java.net> wrote:
> Is MKCOL expected even for existing directory in the remote repository?  Is
> this a WebDAV server problem that 500 is returned?

Yes, you should expect MKCOLs to be done on directories that already
exist. On my Apache server with WebDAV, when a MKCOL is done on a
directory that already exists, it returns 405. Reading the WebDAV
specs (http://www.webdav.org/specs/rfc4918.html#rfc.section.9.3.1):

  405 (Method Not Allowed) - MKCOL can only be executed on an unmapped URL.

So this behaviour is accounted for in the spec itself, and git handles this too.

What I think is that your server isn't implementing WebDAV right, or
that you have some scripts/mods over the git repository you're serving
that are failing leading to the 500 error.

-- 
Cheers,
Ray Chuan

```
