2011-12-14 73 views
37

Tôi muốn viết một công cụ trợ giúp xây dựng nhỏ để đọc một số thuộc tính của thư mục làm việc Git hiện tại, như băm cam kết cuối cùng, cho dù có các tệp đã sửa đổi hay không. . Tôi thấy rằng việc sử dụng các tệp nhị phân Git được cài đặt dễ dàng hơn thay vì đọc thư mục .git với các tệp nén của nó ở định dạng không xác định. Nhưng công cụ của tôi phải càng di động càng tốt. Nó dành cho các ứng dụng .NET, vì vậy yêu cầu duy nhất là .NET 2.0 hoặc mới hơn.Tìm đường dẫn nơi Git được cài đặt trên hệ thống Windows

Bây giờ làm cách nào tôi có thể tìm thấy đường dẫn nơi Git được cài đặt? Có một mặc định được sử dụng nếu người dùng vừa mới nhấp qua trình cài đặt Git. Nhưng nó có thể khác. Và khi tôi thấy tất cả các tệp chương trình trong git/bin, tôi thực sự không muốn điều đó ở trong% PATH% của tôi (mà các công cụ khác như TortoiseGit dường như cũng không yêu cầu). Tôi đã không tìm thấy bất kỳ manh mối đường dẫn trong registry.

Tôi có thể sử dụng thuật toán nào để tìm Git, đó không phải là quét toàn bộ hệ thống tệp? (Ý của tôi đã nói nó cần phải được nhanh chóng?)

Trả lời

15

Tôi đang sử dụng tập tin thực thi sau đây để tìm ra nơi Git cho Windows đã được đã cài đặt:

@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 

Tôi nên chuyển tiếp ngay lập tức để làm điều gì đó tương tự trong .NET. Chỉ cần nhớ rằng bạn phải kiểm tra rõ ràng nhánh 32-bit của Registry nếu bạn đang sử dụng Windows 64-bit.

Edit: Git cho Windows tại additionally writes các CurrentVersion, InstallPathLibexecPath giá trị 2.6.1 để chìa khóa HKEY_LOCAL_MACHINE\Software\GitForWindows.

+0

Ý tưởng thú vị để đọc dữ liệu từ trình gỡ cài đặt ... – ygoe

+0

Trong khi đó, tôi đã triển khai thực hiện như sau: Tìm kiếm% ProgramFiles% \ Git * \ bin \ git.exe.Nếu không có, hãy thử lại trong% ProgramFiles (x86)%. Bạn nghĩ gì về điều này? – ygoe

+0

Điều đó sẽ ổn nếu không mất quá nhiều thời gian. Tôi đoán các bước hoàn chỉnh nên là: 1. Kiểm tra xem git.exe có nằm trong PATH không. 2. Nếu không, hãy kiểm tra khóa "InstallLocation" của Registry. 3. Nếu không, hãy kiểm tra Git \ bin \ git.exe trong% ProgramFiles% (hoặc dưới% ProgramFiles (x86)% cho Windows 64 bit). – sschuberth

0

nhìn trong registry dưới: HKEY_CURRENT_USER \ Software \ Git-Cheetah

+0

Nó không có trên máy tính của tôi (msysGit, TortoiseGit). Vì vậy, điều này sẽ không hoạt động. – ygoe

59

Nếu bạn là bên trong (hoặc nếu bạn có thể mở) git vỏ bash, bạn có thể sử dụng pwd -W

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

(tôi biết, điều này có lẽ không phải những gì bạn muốn, và nó khá tiểu học, nhưng Tôi đã dành chút thời gian để tìm điều này, và có lẽ nó hữu ích cho người khác).

+2

Lưu ý rằng đây là câu hỏi của Windows. Sẽ không bỏ phiếu vì nó hoạt động hoàn hảo trong các hệ thống Linux, nhưng điều này sẽ không hoạt động trong Windows. – user3105700

+10

@ user3105700 Uh, không, tính năng này hoạt động trong Windows (xem kết quả của tôi). Tôi đang sử dụng bash MinGW đi kèm với Git cho Windows. – leonbloy

+1

Xin lỗi, chỉnh sửa, điều này sẽ không hoạt động trong cmd. – user3105700

2

tôi thấy git.exe trong C: \ Program Files \ Git \ cmd \ git.exe

+0

Có thể cài đặt ở nơi khác, vì vậy đối với các chương trình bạn định chia sẻ, thực tế không tốt là giả sử vị trí nằm trong đường dẫn mặc định. – Kieran

7

Nếu bạn đang dùng Windows 8 trở lên ở đây là các bước mà bạn có thể làm theo.

  1. Đi vào màn hình bắt đầu của bạn và tìm kiếm git.exe
  2. Trong kết quả tìm kiếm kích chuột phải vào biểu tượng Git Gui/Git Bash và chọn Open vị trí file
  3. Bạn sẽ được đưa đến một nơi flder các phím tắt sẽ được đặt. Nhấp chuột phải vào shortcut NĐ chọn properties
  4. vị trí tập tin có thể được tìm thấy trong trường Target

Đối với tôi nó là "C: \ Users \\ AppData \ Local \ Programs \ Git \ cmd \ git- gui.exe "

Hy vọng nó sẽ giúp

+0

Có vẻ như không rõ ràng đối với một số người mà tôi đang tìm kiếm một thuật toán để tìm tập tin đó (hiệu quả), không phải hướng dẫn sử dụng. – ygoe

Các vấn đề liên quan