2011-12-14 51 views
37

我想编写一个小的构建辅助工具,它应该读取当前Git工作目录的一些属性,例如上次提交散列,是否有修改的文件等等。我发现使用已安装的Git二进制文件比使用未知格式的压缩文件读取.git目录更容易。但我的工具必须尽可能便携。它的目的是.NET应用程序,所以唯一的要求应该是.NET 2.0或更新。寻找在Windows系统上安装Git的路径

现在我该如何找到安装Git的路径?如果用户刚刚点击Git安装程序,则会使用默认的一个。但可能会有所不同。当我在git/bin中看到所有的程序文件时,我真的不希望它存在于我的%PATH%(其他工具,如TortoiseGit似乎也不需要)。我还没有在注册表中找到任何路径线索。

我可以使用什么算法来查找Git,这不是一个完整的文件系统扫描? (难道我已经说它需要快?)

回答

15

我使用下面的批处理文件,找出混帐的Windows已经安装:

@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现在additionally writesCurrentVersionInstallPathLibexecPath值2.6.1到HKEY_LOCAL_MACHINE\Software\GitForWindows关键。

+0

有趣的想法,从卸载程序读取数据... – ygoe 2012-01-06 22:06:12

+0

同时,我已经实现它,就像那样:搜索%ProgramFiles%\ Git * \ bin \ git.exe。如果不存在,请在%ProgramFiles(x86)%中重试。你对此有何看法? – ygoe 2012-01-06 22:08:00

+0

如果不需要太长时间,应该没问题。我想完整的步骤应该是: 1.检查git.exe是否在PATH中。 2.否则,检查注册表的“InstallLocation”键。 3.否则,检查%ProgramFiles%(或64位Windows的%ProgramFiles(x86)%下的Git \ bin \ git.exe)。 – sschuberth 2012-01-09 09:40:08

0

看在注册表中:HKEY_CURRENT_USER \ SOFTWARE \ Git的猎豹

+0

它不在我的电脑上(msysGit,TortoiseGit)。所以这是行不通的。 – ygoe 2012-01-06 22:04:52

59

如果你是内(或者,如果你可以打开)您的git bash shell中,你可以使用pwd -W

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

(我知道,这可能不是你想要的东西,这是很基本的,但我花了一些时间来找到它,也许这对其他人有用)。

2

我发现git.exe在C:\ Program Files文件\的Git \ CMD \ git.exe

7

如果你在Windows 8及以上的在这里,你可以遵循的步骤。

  1. 去你的开始屏幕和搜索git.exe
  2. 在搜索结果右击Git的GUI /混帐击图标,然后选择打开文件位置
  3. 你会被带到一个地方flder快捷方式将被定位。右键单击该快捷方式ND选择属性
  4. 文件位置可以在目标领域

发现对我来说,这是“C:\用户\\应用程序数据\本地\程序\的Git \ CMD \ git- gui.exe“

希望它有帮助

相关问题