it-swarm.com.de

Programmgesteuert (nicht manuell) den Pfad finden, unter dem Git auf einem Windows-System installiert ist

Ich möchte ein kleines Build-Helfer-Tool schreiben, das einige Eigenschaften des aktuellen Git-Arbeitsverzeichnisses lesen soll, wie den letzten Commit-Hash, ob es modifizierte Dateien usw. gibt. Ich fand, dass es einfacher ist, die installierten Git-Binaries zu verwenden, anstatt das .git-Verzeichnis mit seinen komprimierten Dateien in einem unbekannten Format zu lesen. Aber meine Werkzeuge müssen so tragbar wie möglich sein. Es ist für .NET-Anwendungen vorgesehen. Die einzige Anforderung sollte .NET 2.0 oder neuer sein.

Wie finde ich nun den Pfad, in dem Git installiert ist? Es gibt eine Standardeinstellung, die verwendet wird, wenn der Benutzer gerade durch das Git-Installationsprogramm geklickt hat. Aber es kann anders sein. Und wenn ich alle Programmdateien in git/bin sehe, möchte ich wirklich nicht, dass sich dies in meinem% PATH% befindet (was andere Tools wie TortoiseGit auch nicht erfordern). Ich habe keine Pfadangaben in der Registry gefunden.

Welchen Algorithmus könnte ich verwenden, um Git zu finden, das kein vollständiger Dateisystem-Scan ist? (Habe ich schon gesagt, dass es schnell gehen muss?)

49
ygoe

Ich verwende die folgende Batchdatei, um herauszufinden, wo Git für Windows installiert wurde:

@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

Ich sollte in .NET etwas Ähnliches tun. Denken Sie jedoch daran, dass Sie den 32-Bit-Zweig der Registrierung explizit überprüfen müssen, wenn Sie mit einem 64-Bit-Windows arbeiten.

Edit: Git für Windows 2.6.1 jetzt zusätzlich schreibt die Werte für CurrentVersion, InstallPath und LibexecPath für den Schlüssel HKEY_LOCAL_MACHINE\Software\GitForWindows.

18
sschuberth

Wenn Sie sich innerhalb Ihrer Git-bash-Shell befinden (oder können), können Sie pwd -W verwenden.

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

(Ich weiß, das ist wahrscheinlich nicht das, was Sie wollen, und es ist ziemlich elementar, aber ich habe einige Zeit gebraucht, um das herauszufinden, und es ist vielleicht nützlich für andere Leute.).

79
leonbloy

Wenn Sie Windows 8 oder höher verwenden, können Sie die folgenden Schritte ausführen.

  1. gehen Sie zu Ihrem Startbildschirm und suchen Sie nach git.exe
  2. Klicken Sie im Suchergebnis mit der rechten Maustaste auf das Git Gui/Git Bash-Symbol und wählen Sie den Ort der Dateispeicherung
  3. Sie werden zu einem Ordner gebracht, in dem sich die Verknüpfungen befinden. Klicken Sie mit der rechten Maustaste auf die Verknüpfung und wählen Sie Eigenschaften aus
  4. den Speicherort der Datei finden Sie im Feld Ziel

Für mich war es "C:\Users \\ AppData\Local\Programs\Git\cmd\git-gui.exe".

Ich hoffe es hilft

10
Sukalpo

Sie können auch Git Bash öffnen und where git eingeben. Es wird der Pfad zurückgegeben, in dem Git auf Ihrem Computer installiert ist.

4
MissScarlett80

suchen Sie in der Registrierung unter: HKEY_CURRENT_USER\Software\Git-Cheetah

0
Asher

git --man-path führt Sie zu [Basisinstallationsverzeichnis] ​​\ mingw64\share\man. git.exe befindet sich unter [Basisinstallationsverzeichnis von git]\cmd.

0
Tommy Williams