Есть ли способ заставить 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