5

我的网络托管服务提供商允许我通过 WebDAV 访问我的网络空间,所以我想我应该在那里建立一个 git 存储库,看看会发生什么。以只读方式克隆存储库就可以了,因为“git clone http://my.server.com/repo.git ”只使用标准的 HTTP 传输。

当我尝试使用 WebDAV 时会出现问题,因为我的用户 ID 是“user@my.server.com”并且我必须使用端口 2077。这意味着我必须执行类似的操作

git config remote.origin.pushurl http://user@my.server.com@my.server.com:2077/repo.git

并且 URL 中的两个 @ 符号一定会导致问题,因为“git push origin master”报告“错误 22”。

我尝试创建一个 .netrc 文件条目

machine    my.server.com
login      user@my.server.com
password   ****

但这似乎没有帮助。

我也试过用“%”、“\@”和“%40”替换第一个“@”,但这些都不起作用。

4

2 回答 2

6

当前版本的 git 不处理用户名和密码中的百分比转义。我昨天提交了一个补丁来修复这个问题(至少对于 HTTP URL),所以它可能很快就会得到修复。使用该补丁,您应该能够通过以下方式访问 WebDAV:

git config remote.origin.pushurl http://user%40my.server.com@my.server.com:2077/repo.git

但是,在我撰写本文时,您可能还有与 libcurl > 7.16 相关的问题(请参阅“git help http-push”中的注释)。

于 2010-11-13T15:10:40.783 回答
1

如果 WebDAV 使用的 URI 确实遵循统一资源标识符 (URI):通用语法( rfc3986 ),则不应@userinfo

 authority     = [ userinfo "@" ] host [ ":" port ]
 userinfo      = *( unreserved / pct-encoded / sub-delims / ":" )
 pct-encoded   = "%" HEXDIG HEXDIG

 unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
 sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
               / "*" / "+" / "," / ";" / "="


 reserved      = gen-delims / sub-delims
 gen-delims    = ":" / "/" / "?" / "#" / "[" / "]" / "@"

所以你试过了http://user@my.server.com:2077/repo.git吗?

于 2010-01-05T20:25:03.803 回答