web-dev-qa-db-fra.com

Comment utiliser le magasin d'informations d'identification Git sur WSL (Ubuntu sous Windows)?

J'ai essayé de suivre ces instructions: https://stackoverflow.com/a/40312117/21728 qui font essentiellement ceci:

Sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
Sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

Mais quand je fais une opération réseau, j'obtiens cette erreur:

** (process:7902): CRITICAL **: could not connect to Secret Service: Cannot autolaunch D-Bus without X11 $DISPLAY

C'est logique, je suppose, car il n'y a en effet pas d'affichage X11.

Comment faire fonctionner la mise en cache des informations d'identification Git sur Ubuntu sous Windows (WSL)?

33
Borek Bernard

Si vous avez installé Git pour Windows, un gestionnaire d'informations d'identification intégré à Windows est installé sur votre système.

Vous pouvez exécuter des exécutables Windows à partir de WSL tels que trouvés ici .

Pour l'utiliser, vous pouvez exécuter la commande suivante (en supposant que votre git pour Windows est installé sur C:\Tools\Git)

git config --global credential.helper "/mnt/c/Tools/Git/mingw64/libexec/git-core/git-credential-manager.exe"
36
Carlos Beppler

TL; DR

J'ai créé n script qui fait ça pour vous . Je l'utilise avec mon orchestration Chef.

Recherchez ou installez git-credential-manager.exe

  1. Ouvrir cmd.exe et appelez where git-credential-manager.exe
    • S'il renvoie un chemin, GRAND. Passez à la conversion du chemin.
    • Si non...
  2. Dans cmd.exe appel where git.exe
    • S'il ne renvoie pas de chemin, l'étape suivante consiste à installer le gestionnaire d'informations d'identification seul
    • S'il retourne un chemin, ce sera quelque chose comme:
    • C:\Program Files\Git\cmd\git.exe
    • Laissons tomber le tout après l'avant-dernière barre oblique et changeons-le comme suit:
    • C:\Program Files\Git\mingw64\libexec\git-core\git-credential-manager.exe
    • Si cela existe, SUPER. Passez à la conversion du chemin.
    • Autrement...
  3. Installez Credential Manager à partir de git repo de Microsoft , puis utilisez à nouveau where pour obtenir le chemin.

Convertir le chemin d'accès de DOS à Linux

Nous devons le faire:

  1. Remplace le C:\ avec /mnt/c/
  2. Retournez les barres obliques de \ à /
  3. Échappez les espaces (et les parenthèses s'il y en a) avec des doubles barres obliques inverses \\

Alors...

  • "C:\Program Files\Git\mingw64\libexec\git-core\git-credential-manager.exe" devient...
  • "/mnt/c/Program\\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"

Configurer git

  1. Dans bash appelez git config --global credential.helper "<converted/path>"
24
Bruno Bronosky

En utilisant Windows 10 et "WSL", j'ai créé un fichier ~/.gitconfig, mais j'avais mal tapé le libellé de la section [credential] en tant que [credentials]. J'ai essayé d'exécuter git credential fill puis d'alimenter sa sortie en git credential approve, ce qui aurait pu fonctionner, mais je ne le soupçonne pas car il disait "usage: git credential [fill | approve | refuse]". Enfin, j'ai simplement couru:

$ git config --global credential.helper cache

puis a fait un git pull; lorsque je suis invité pour l'utilisateur et le mot de passe, je les ai tapés comme d'habitude. Après cela, il s'en est souvenu. J'ai trouvé qu'il avait ajouté la section (correctement nommée) à mon ~/.gitconfig:

[credential]
        helper = cache

J'ai modifié cela pour fournir un délai beaucoup plus long:

[credential]
        helper = cache --timeout=144000

Et tout semble bien fonctionner maintenant.

16
selkieTG