web-dev-qa-db-fra.com

Existe-t-il un moyen de faire en sorte que git se souvienne du mot de passe des télécommandes WebDAV?

Je travaille avec Git pour pousser les modifications dans un référentiel partagé sur HTTP/WebDAV, et Git demande un mot de passe pour chaque opération qui accède à la télécommande HTTP. Existe-t-il un moyen de faire de Git cache le mot de passe/que le serveur distant ne m'invite pas?

Le serveur Web distant doit être un Apache et peut éventuellement être reconfiguré si nécessaire.

59
millimoose

La façon est d'utiliser ~/.netrc comme décrit à l'étape 3 de cette documentation Git :

Ensuite, ajoutez ce qui suit à votre $ HOME/.netrc (vous pouvez vous en passer, mais il vous sera demandé de saisir votre mot de passe beaucoup de fois):

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

... et définissez les autorisations:

chmod 600 ~/.netrc

MISE À JOUR:

À partir de git 1.7.9, il semble que la voie à suivre serait l'API native d'assistance d'identification. Git est livré avec un texte en clair stockage des informations d'identification ou un temporaire moins pratique mais plus sécurisé cache des informations d'identification . Il est également possible d'utiliser des assistants d'identification tiers. Jusqu'à présent, je suis au courant de n assistant pour le Windows Credential Store natif , et celui qui s'intègre avec le trousseau OS X . (La version Git livrée par Homebrew a un binaire, tout comme d'autres distributions OS X Git. Github fournit également un binaire autonome .)

En règle générale, il devrait suffire de configurer une fois l'aide à l'identification:

git config --global credential.helper wincred

Ou au lieu de wincred, utilisez celui qui convient à votre plate-forme. (Si le nom de l'exécutable d'assistance est git-credential-wincred, la valeur à laquelle vous définissez l'option sera wincred, etc.)

Les aides aux informations d'identification prennent également en charge la nécessité de disposer d'ensembles d'informations d'identification distincts pour les différents référentiels sur le même hôte.

61
millimoose

Exécutez cette commande dans votre référentiel:

git config credential.helper store

Poussez ensuite vers le serveur une fois:

git Push

Les informations d'identification que vous utilisez pour envoyer au serveur seront enregistrées dans ~/.git-credentials.

Instructions tirées de ce guide ici .

28
Kshitiz Sharma

Pourquoi ne pouvez-vous pas simplement utiliser un mot de passe dans une URL distante?

$ git config remote.Origin.url = http://username:password@Origin_link.com/repository.git
17
Oleg