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?)
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
.
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).
Si vous êtes sous Windows 8 et supérieur, voici les étapes que vous pouvez suivre.
Pour moi, c'était "C:\Utilisateurs \\ AppData\Local\Programmes\Git\cmd\git-gui.exe"
J'espère que ça aide
Vous pouvez également ouvrir Git Bash et taper where git
. Cela retournera le chemin où Git est installé sur votre machine.
regardez dans le registre sous: HKEY_CURRENT_USER\Software\Git-Cheetah
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.