Назад | Перейти на главную страницу

git отказывается отправлять учетные данные через HTTP

curl вроде работает нормально, но git не. git запрашивает пароль, но не отправляет никаких учетных данных.

Работает: curl --netrc http://test.git.unsw.edu.au/ и curl -u username:password http://test.git.unsw.edu.au/

Не работает: git remote update

Password for 'http://username@test.git.unsw.edu.au': 
* Couldn't find host test.git.unsw.edu.au in the .netrc file; using defaults
User-Agent: git/1.7.9.5
Host: test.git.unsw.edu.au
Accept: */*
Pragma: no-cache

Почему нет git отправка учетных данных?

Со стороны я вижу:

  1. Читать .netrc
  2. GET /repo/info/refs?service=git-receive-pack HTTP/1.1 - нет учетных данных
  3. HTTP/1.0 401 Unauthorized
  4. Читать .netrc
  5. GET /repo/info/refs?service=git-receive-pack HTTP/1.0 - нет учетных данных
  6. HTTP/1.0 401 Unauthorized
  7. Запрос пароля
  8. Читать .netrc
  9. * Couldn't find host test.git.unsw.edu.au in the .netrc file; using defaults
  10. GET /repo/info/refs?service=git-receive-pack HTTP/1.1 - нет учетных данных
  11. HTTP/1.0 401 Unauthorized

Кажется, что Git использует только CURLAUTH_ANY который не работает с моим конкретным веб-сервером. Мой веб-сервер поддерживает Negotiate и Basic, поэтому Git не возвращается к Basic когда Negotiate не доступен на клиенте.

Кроме того, похоже, что у Git нет возможности использовать что-либо, кроме CURLAUTH_ANY.

Глядя на страницу руководства, кажется, что git не принимает параметр имени пользователя при использовании с http. Но если вы поместите его в свой файл .netrc, curl должен его использовать. Формат для .netrc:

machine hostname login yourusername password yourpassword