Есть ли способ заставить git запомнить пароль для удаленных WebDAV?

Я работаю с Git, отправляя изменения в репозиторий, общий доступ к которому осуществляется через HTTP / WebDAV, и Git запрашивает пароль для каждой операции, которая обращается к удаленному HTTP. Можно ли как-нибудь заставить Git кешировать пароль / удаленный сервер мне не подскажет?

Удаленный веб-сервер должен быть Apache и при необходимости может быть переконфигурирован.

3 ответа

Решение

Способ заключается в использовании ~/.netrc, как описано в шаге 3 этой документации Git:

Затем добавьте следующее в ваш $HOME/.netrc (вы можете обойтись без него, но вам будет предложено ввести ваш пароль много раз):

machine <servername>
login <username>
password <password>

... и установить разрешения:

chmod 600 ~/.netrc

ОБНОВИТЬ:

Начиная с git 1.7.9, кажется, что можно пойти по пути к собственному API помощника по учетным данным. Git поставляется с открытым хранилищем учетных данных или менее удобным, но более безопасным временным кэшем учетных данных. Также можно использовать сторонние учетные данные помощников. До сих пор я знал о помощнике для собственного хранилища учетных данных Windows и о том, который интегрируется с цепочкой ключей OS X. (В сборке Git, поставляемой Homebrew, есть бинарный файл, как и в других дистрибутивах OS X Git. Github также предоставляет автономный бинарный файл.)

Как правило, этого достаточно для того, чтобы настроить помощник по учетным данным:

git config --global credential.helper wincred

Или вместо wincredиспользуйте тот помощник, который подходит для вашей платформы. (Если имя исполняемого файла помощника git-credential-wincredзначение, для которого вы установите опцию, будет wincred, так далее.)

Помощники по учетным данным также поддерживают необходимость иметь отдельные наборы учетных данных для разных репозиториев на одном хосте.

Запустите эту команду внутри вашего репо:

git config credential.helper store

Затем нажмите на сервер один раз:

git push

Учетные данные, которые вы используете для отправки на сервер, будут сохранены в ~/.git-credentials,

Инструкции взяты из этого руководства здесь.

Почему вы не можете просто использовать пароль в удаленном URL?

$ git config remote.origin.url = http://username:password@origin_link.com/repository.git
Другие вопросы по тегам