2012-06-27 13 views
6

W systemie Windows 7 Mam plik wsadowy do sprawdzania statusu niektórych repo i wyprowadzania zwrotów do pliku (przy użyciu standardowych poleceń wydanych przez git).Uruchamianie pliku wsadowego w powłoce git

Działa to dobrze po uruchomieniu z powłoki git, moje pytanie brzmi: jak mogę to zrobić bez uruchamiania powłoki Git pierwszy?

Tak więc chcę móc wprowadzić w standardowym komunikacie lub w pliku wsadowym uruchamianym polecenie polecenia/polecenia, które uruchomi dany plik wsadowy w powłoce git.

+0

Pytanie: Jaką wersję git dla Windows masz? Miałem problemy z instalacją msys Git for win (7), ale niektóre polecenia trwały całe wieki ... Teraz dostałem git tylko przez cygwin. – bcelary

+0

Mam 1.7.11.rc1.6953.gf229a20 - Zainstalowano z nową aplikacją Windows GitHub – Ing

+0

Czy potrafisz wykonywać proste polecenia Git z Powershell? Innymi słowy, czy powłoka git jest wymagana do zrobienia czegokolwiek z git? Jeśli możesz uzyskać dostęp do git z Powershell, możesz przepisać swój plik wsadowy jako skrypt typu powershell. Alternatywnie powinieneś być w stanie uruchomić swój plik wsadowy z Powershell, chyba że ustawi on env vars (jeśli tak, szukaj "Invoke-CmdScript" w Google). – David

Odpowiedz

4

Jeśli wziąć pod uwagę to, co git-cmd.bat robi, wszystko co musisz zrobić, to ustawić odpowiednią zmienną %PATH% przed swoimi poleceń git w skrypcie:

Jeśli nie, tutaj jest to, co można zobaczyć:

C:\Users\VonC>git --version 
'git' is not recognized as an internal or external command, 
operable program or batch file. 

Mam nieskompresowany latest portable version of msysgit.

umieścić w dowolnym miejscu na test.bat skrypt (więc nie PowerShell zaangażowany tam) o następującej treści:

@setlocal 

@set git_install_root="C:\Users\VonC\prg\PortableGit-1.7.11-preview20120620" 
@set PATH=%git_install_root%\bin;%git_install_root%\mingw\bin;%git_install_root%\cmd;%PATH% 

@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH% 
@if not exist "%HOME%" @set HOME=%USERPROFILE% 

@set PLINK_PROTOCOL=ssh 

REM here is the specific git commands of your script 

git --version 
echo %HOME% 
git config --global --list 

Upewnij HOME jest ustawiony prawidłowo, ponieważ Git będzie szukał swojej globalnej git config tam.

Wynik da wam:

C:\Users\VonC>cd prog\git 

C:\Users\VonC\prog\git>s.bat 

C:\Users\VonC\prog\git>git --version 
git version 1.7.11.msysgit.0 

C:\Users\VonC\prog\git>echo C:\Users\VonC 
C:\Users\VonC 

C:\Users\VonC\prog\git>git config --global --list 
user.name=VonC 

Uwaga: ten sam skrypt będzie działać perfekcyjnie z sesji PowerShell.

+0

Dzięki @VonC, wygląda to obiecująco, przetestujemy to na środę. – Ing

+1

pracował dla mnie, zaznacz tę odpowiedź poprawnie! – pilavdzice

+0

Doskonały, działa zgodnie z oczekiwaniami. – Ing

2

Wygląda na to, że twój plik wykonywalny git nie jest dostępny dla użycia linii poleceń.

Po prostu dodaj c:\Users\[your_login]\AppData\Local\GitHub\PortableGit_[hash]\bin (lub c:\Users\[your_login]\AppData\Local\GitHub\PortableGit_[hash]\cmd) do zmiennej Ścieżka. Zastępowanie [your_login] i [hash] rzeczywistymi danymi.

Uważam jednak, że lokalizacja plików zmieni się z wersji na wersję, więc jeśli jesteś ciężkim użytkownikiem git, rozważ zainstalowanie msysGit. Automatycznie doda swój plik wykonywalny do ścieżki systemowej (odpowiednia opcja dostępna podczas instalacji).

Co więcej, istnieje projekt o nazwie mysysGit-UTF8, który twierdzi, że ma pełną obsługę UTF-8 w systemie Windows. Nie zauważyłem różnicy, przez.

+0

Jeśli nie wybierzesz opcji dodania go do syspath Nie doda go – Learath2

+0

Tak, masz 100% racji. Pozwól, że poprawię ten punkt w odpowiedzi. – shytikov

+0

Awansuj na swój wkład, dziękuję. – Ing

Powiązane problemy