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://[email protected]':
* 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
发送凭据?
从一个strace,我看到:
- 读
.netrc
GET /repo/info/refs?service=git-receive-pack HTTP/1.1
- 没有凭证HTTP/1.0 401 Unauthorized
- 读
.netrc
GET /repo/info/refs?service=git-receive-pack HTTP/1.0
- 没有凭证HTTP/1.0 401 Unauthorized
- 提示输入密码
- 读
.netrc
* Couldn't find host test.git.unsw.edu.au in the .netrc file; using defaults
GET /repo/info/refs?service=git-receive-pack HTTP/1.1
- 没有凭证HTTP/1.0 401 Unauthorized
Git 似乎只使用
CURLAUTH_ANY
它不适用于我的特定 Web 服务器。我的网络服务器支持Negotiate
和,所以当客户端不可用时Basic
Git 不会回退。Basic
Negotiate
此外,Git 似乎没有选择使用
CURLAUTH_ANY
.查看联机帮助页,似乎 git 在与 http 一起使用时不采用用户名选项。但是如果你把它放在你的 .netrc 文件中,curl 应该使用它。.netrc 的格式是