git-update-server-info не достаточно для клонирования удаленного репо? - PullRequest
3 голосов
/ 08 сентября 2010

Я хотел бы сделать репозиторий git доступным через HTTPS-сервер Nginx.

Я установил ловушку post-commit для запуска git-update-server-info для обновления ссылок для "тупого" бэкэнда.

Получение обновлений через интерфейс HTTPS работает нормально, однако при первоначальной проверке хранилища происходит сбой:

[test@test ttt]$ git clone https://server/git/test.git/
Cloning into thesis...
Username: 
Password: 
error: The requested URL returned error: 401 (curl_result = 22, http_code = 401, sha1 = 2be2bcc15d1a79eb4e37e03fd2070ee0f229457c)
error: Unable to find 2be2bcc15d1a79eb4e37e03fd2070ee0f229457c under https://test/git/test.git
Cannot obtain needed commit 2be2bcc15d1a79eb4e37e03fd2070ee0f229457c
while processing commit 6c155f7098fd75f23edf71ac5b70b7c22f6070e7.
error: Fetch failed.

Ручной запуск «git update-server-info» в серверном хранилище не решает проблему, а запуск «git gc» делает.

Однако исправление "git gc" работает только до тех пор, пока я не отправлю обновление на сервер, после чего снова возникнет проблема "git clone".

На сервере я использую git 1.7.1 (из бэкпортов Debian), на клиенте я работаю 1.7.2.2 (из Arch Linux)

Есть какие-нибудь советы, как решить эту проблему? К сожалению, запуск «умного» HTTP-бэкенда в настоящее время невозможен.

Ответы [ 3 ]

10 голосов
/ 13 января 2011

Была та же ошибка, но включение имени пользователя в URL работает для меня:

https://myuser@server/git/test.git/
4 голосов
/ 12 января 2011

У меня здесь такая же проблема, мне кажется, что это ошибка: хотя git запрашивает имя пользователя и пароль, он не передает его на сервер, поэтому сервер правильно отвечает 401 (не авторизовано).

Единственное решение, которое я нашел до сих пор: правильно настроить мой netrc.Просто введите

machine <server>
login <username>
password <password>

в ваш $ HOME / .netrc или $ HOME / _netrc для msysgit, и аутентификация завершится нормально.

1 голос
/ 13 января 2011
...