web-dev-qa-db-fra.com

Recherche par programme (pas manuellement) le chemin où Git est installé sur un système Windows

J'aimerais écrire un petit outil d'aide à la construction qui lira certaines propriétés du répertoire de travail actuel de Git, comme le dernier hachage de commit, s'il existe des fichiers modifiés, etc. J'ai trouvé qu'il est plus facile d'utiliser les fichiers binaires Git installés au lieu de lire le répertoire .git avec ses fichiers compressés dans un format inconnu. Mais mes outils doivent être aussi portables que possible. Il est destiné aux applications .NET. La seule condition requise devrait donc être .NET 2.0 ou plus récente.

Maintenant, comment puis-je trouver le chemin où Git est installé? Il y en a un par défaut qui est utilisé si l'utilisateur vient de cliquer sur le programme d'installation de Git. Mais c'est peut-être différent. Et quand je vois tous les fichiers du programme dans git/bin, je ne veux vraiment pas que cela soit dans mon% PATH% (que d'autres outils comme TortoiseGit ne semblent pas nécessiter aussi). Je n'ai trouvé aucun indice de chemin dans le registre.

Quel algorithme pourrais-je utiliser pour trouver Git, ce n'est pas une analyse complète du système de fichiers? (Ai-je déjà dit qu'il faut être rapide?)

49
ygoe

J'utilise le fichier de commandes suivant pour savoir où Git pour Windows a été installé:

@echo off

setlocal enabledelayedexpansion

rem Read the Git for Windows installation path from the Registry.
for %%k in (HKCU HKLM) do (
    for %%w in (\ \Wow6432Node\) do (
        for /f "skip=2 delims=: tokens=1*" %%a in ('reg query "%%k\SOFTWARE%%wMicrosoft\Windows\CurrentVersion\Uninstall\Git_is1" /v InstallLocation 2^> nul') do (
            for /f "tokens=3" %%z in ("%%a") do (
                set GIT=%%z:%%b
                echo Found Git at "!GIT!".
                goto FOUND
            )
        )
    )
)

goto NOT_FOUND

:FOUND

rem Make sure Bash is in PATH (for running scripts).
set PATH=%GIT%bin;%PATH%

rem Do something with Git ...

:NOT_FOUND

Je devrais être direct pour faire quelque chose de similaire dans .NET. Rappelez-vous simplement que vous devez vérifier explicitement la branche 32 bits du registre si vous utilisez Windows 64 bits.

Edit: Git pour Windows 2.6.1 maintenant écrit également les valeurs CurrentVersion, InstallPath et LibexecPath dans la clé HKEY_LOCAL_MACHINE\Software\GitForWindows.

18
sschuberth

Si vous êtes à l'intérieur (ou si vous pouvez ouvrir) votre shell git bash, vous pouvez utiliser pwd -W

$ cd / && pwd -W
C:/Program Files (x86)/Git

(Je sais, ce n'est probablement pas ce que vous voulez, et c'est assez élémentaire, mais j'ai passé un peu de temps pour le trouver, et c'est peut-être utile pour d'autres personnes).

79
leonbloy

Si vous êtes sous Windows 8 et supérieur, voici les étapes que vous pouvez suivre.

  1. allez sur votre écran de démarrage et recherchez git.exe
  2. Dans le résultat de la recherche, cliquez avec le bouton droit de la souris sur l’icône Git Gui/Git Bash et sélectionnez Ouvrir le fichier.
  3. Vous serez conduit à un forum où les raccourcis seront situés. Clic droit sur le raccourci et sélectionnez propriétés
  4. l'emplacement du fichier peut être trouvé dans le champ Cible

Pour moi, c'était "C:\Utilisateurs \\ AppData\Local\Programmes\Git\cmd\git-gui.exe"

J'espère que ça aide

10
Sukalpo

Vous pouvez également ouvrir Git Bash et taper where git. Cela retournera le chemin où Git est installé sur votre machine.

4
MissScarlett80

regardez dans le registre sous: HKEY_CURRENT_USER\Software\Git-Cheetah

0
Asher

git --man-path vous permet d'accéder à [répertoire d'installation de base git]\mingw64\share\man. git.exe est dans [répertoire d'installation de base git]\cmd.

0
Tommy Williams