2011-12-14 7 views
37

私は、最新のコミットハッシュのような現在のGit作業ディレクトリのいくつかのプロパティを読む小さなビルドヘルパツールを書きたいと思っています。 。私は、インストールされているGitバイナリを、未知の形式の圧縮ファイルで.gitディレクトリを読み込むのではなく、使いやすいことを発見しました。しかし、私のツールは可能な限りポータブルでなければなりません。これは.NETアプリケーションを対象としているため、唯一の要件は.NET 2.0以上でなければなりません。WindowsシステムにGitがインストールされているパスを見つける

今、Gitがインストールされているパスを見つける方法はありますか?ユーザーがGitインストーラをちょうどクリックした場合に使用されるデフォルトのものがあります。しかし、それは異なるかもしれません。 git/binにあるすべてのプログラムファイルを見ると、%PATH%(これはTortoiseGitのような他のツールでも必要と思われないもの)にしたくないのです。レジストリにパスの手がかりが見つかりませんでした。

私はGitを見つけるのにどのアルゴリズムを使うことができますが、これは完全なファイルシステムスキャンではありませんか? (私はすでにそれが高速であることが必要であると言ったのか?)の下のレジストリで

答えて

15

私が見つけるために以下のバッチファイルを使用しているWindows用のGitはされている場所インストール済み:

@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 

.NETで似たような処理をする必要があります。 64ビット版Windowsの場合は、レジストリの32ビットブランチを明示的にチェックする必要があることを覚えておいてください。

編集:Windows用 GitはHKEY_LOCAL_MACHINE\Software\GitForWindowsキーに今additionally writesCurrentVersionInstallPathLibexecPath値2.6.1。

+0

アンインストーラからデータを読み込む興味深いアイデア... – ygoe

+0

一方、私はそれを次のように実装しました:%ProgramFiles%\ Git * \ bin \ git.exeを検索してください。存在しない場合は、%ProgramFiles(x86)%で再試行してください。あれについてどう思う? – ygoe

+0

時間がかかりすぎないとうまくいくはずです。私は完全な手順は次のようにしてください: 1. git.exeがPATHにあるかどうか確認してください。 2.それ以外の場合は、レジストリの "InstallLocation"キーを確認します。 3.それ以外の場合は、%ProgramFiles%(または64ビットWindowsの場合は%ProgramFiles(x86)%)の下のGit \ bin \ git.exeをチェックします。 – sschuberth

0

見ます。HKEY_CURRENT_USER \ Software \ Gitリポジトリ-チーター

+0

私のコンピュータ(msysGit、TortoiseGit)にはありません。これはうまくいかないでしょう。 – ygoe

59

あなたが(またはあなたが開くことができるならば)内にある場合は、あなたのgit bashシェル、あなたはpwd -W

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

を使用することができます(私が知っている、これはあなたが望むものはおそらくないが、それはかなり基本だが私はこれを見つけるためにしばらく時間を費やした、そしておそらくそれは他の人にとって有益です)。

+2

これはWindowsの質問です。 Linuxシステムでは完璧に動作するので投票しませんが、これはWindowsでは動作しません。 – user3105700

+10

@ user3105700 Uh、いいえ、これはWindowsで動作します(私の結果ライン参照)。私はGit for Windowsに付属のMinGW bashを使っています。 – leonbloy

+1

申し訳ありませんが、修正、これはcmdでは動作しません。 – user3105700

2

私はCでgit.exeが見つかりました:あなたは、Windows 8で、ここより上にある場合は、\プログラムファイル\のGit \ cmdを\ git.exe

+0

他の場所にインストールすることも可能ですので、共有しようとしているプログラムでは、その場所がデフォルトパスにあると仮定するのは悪い習慣です。 – Kieran

7

あなたが続くことができる手順です。

  1. 右のGitのGUI/GitのBashのアイコンをクリックすると、あなたはどこflderに取られる
  2. ファイルを開く場所を選択し、あなたのスタート画面に移動し、検索結果ではgit.exe
  3. を検索ショートカットが配置されます。 \ユーザーは\ cmdを\ git-のAppData \ローカル\プログラム\ Gitリポジトリを\\:右、それは「Cだった私にとって、ファイルの場所がターゲットフィールドで見つけることができるプロパティ

を選択ND、ショートカットをクリックしてくださいgui.exe "

希望します。

+0

ユーザーの指示ではなく、そのファイルを(効率的に)見つけるアルゴリズムを探していたのは明らかではないようです。 – ygoe

関連する問題