git http push через WebDAV - что если в моем имени пользователя есть "@"? - PullRequest
4 голосов
/ 05 января 2010

Мой провайдер веб-хостинга позволяет мне получить доступ к своему веб-пространству через WebDAV, поэтому я решил создать там git-репозиторий, чтобы посмотреть, что произойдет. Клонирование репозитория только для чтения прекрасно работает, так как "git clone http://my.server.com/repo.git" просто использует стандартный транспорт HTTP.

Проблемы возникают, когда я пытаюсь использовать WebDAV, потому что мой идентификатор пользователя «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", но ни один из них не сработал.

Ответы [ 2 ]

5 голосов
/ 13 ноября 2010

Текущая версия 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») во время написания.

1 голос
/ 05 января 2010

Если URI, используемый WebDAV, следует за Унифицированным идентификатором ресурса (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?

...