У меня проблемы с настройкой сервера Git с apache.
Вот мой gitrepo.conf:
DavLockDB "opt/local/apache2/var/DavLock"
<Directory /opt/local/apache2/htdocs/repo>
DAV On
Deny from all
AuthType Basic
AuthName "Git repositories"
AuthUserFile /etc/apache2/other/htpasswd
AuthGroupFile /etc/apache2/other/htgroup-git
</Directory>
<Directory /opt/local/apache2/htdocs/repo/myproject.git>
Allow from all
Order allow,deny
<Limit GET>
Require group myproject-reader
</Limit>
<Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require group myproject-writer
</Limit>
</Directory>
Когда я git push
к http://admin@localhost/repo/myproject.git
, Я получаю это:
error: cannot lock existing info/refs
fatal: git-http-push failed
Вот отрывок из моего журнала access_log:
::1 - - [28/Jul/2012:19:05:52 +0100] "GET /repo/myproject.git/info/refs?service=git-receive-pack HTTP/1.1" 401 401
::1 - admin [28/Jul/2012:19:05:52 +0100] "GET /repo/myproject.git/info/refs?service=git-receive-pack HTTP/1.1" 401 401
::1 - admin [28/Jul/2012:19:05:55 +0100] "GET /repo/myproject.git/info/refs?service=git-receive-pack HTTP/1.1" 200 -
::1 - admin [28/Jul/2012:19:05:55 +0100] "GET /repo/myproject.git/HEAD HTTP/1.1" 200 23
::1 - - [28/Jul/2012:19:05:57 +0100] "PROPFIND /repo/myproject.git/ HTTP/1.1" 401 401
::1 - admin [28/Jul/2012:19:05:57 +0100] "PROPFIND /repo/myproject.git/ HTTP/1.1" 207 558
::1 - admin [28/Jul/2012:19:05:57 +0100] "HEAD /repo/myproject.git/info/refs HTTP/1.1" 200 -
::1 - admin [28/Jul/2012:19:05:57 +0100] "HEAD /repo/myproject.git/objects/info/packs HTTP/1.1" 200 -
::1 - admin [28/Jul/2012:19:05:57 +0100] "MKCOL /repo/myproject.git/info/ HTTP/1.1" 405 249
::1 - admin [28/Jul/2012:19:05:57 +0100] "LOCK /repo/myproject.git/info/refs HTTP/1.1" 500 535
Кажется, я получаю ошибку 405 с MKCOL и ошибку 500 с LOCK.
И вот мой error_log:
[Sat Jul 28 19:05:52 2012] [error] [client ::1] user admin: authentication failure for "/repo/myproject.git/info/refs": Password Mismatch
[Sat Jul 28 19:05:57 2012] [error] [client ::1] Could not LOCK /repo/myproject.git/info/refs due to a failed precondition (e.g. other locks). [500, #0]
[Sat Jul 28 19:05:57 2012] [error] [client ::1] The locks could not be queried for verification against a possible "If:" header. [500, #0]
[Sat Jul 28 19:05:57 2012] [error] [client ::1] Could not open the lock database. [500, #400]
[Sat Jul 28 19:05:57 2012] [error] [client ::1] (2)No such file or directory: Could not open property database. [500, #1]
И я я ввод правильного пароля в виде команд вроде git remote show origin
который запрашивает пароль, принимает его нормально.
Любые идеи?
Наконец я нашел исправление, и оно было таким простым.
Это:
DavLockDB "opt/local/apache2/var/DavLock"
должно было быть это:
DavLockDB "/opt/local/apache2/var/DavLock"
обратите внимание на /
в начале имени файла.