2012-06-27 34 views
6

En Windows 7 tengo un archivo por lotes para verificar el estado de algunos repos y generar los retornos a un archivo (con comandos git estándar emitidos por powershell).Ejecutando un archivo por lotes en el shell git

Esto funciona bien cuando se inicia desde git shell, mi pregunta es ¿cómo puedo hacer esto sin ejecutar git shell primero?

Así que quiero poder ingresar en un indicador estándar o en un archivo de proceso por lotes ejecutable un comando/comando que iniciará un archivo por lotes dado en git shell.

+0

Una pregunta: ¿Qué versión de git para windows tienes? Estaba luchando con la instalación de msys Git para ganar (7), pero algunos comandos tardaron años en completarse ... Ahora obtuve git solo a través de cygwin. – bcelary

+0

Tengo 1.7.11.rc1.6953.gf229a20 - Se instaló con la nueva aplicación de ventanas GitHub – Ing

+0

¿Se pueden hacer comandos git simples de Powershell? En otras palabras, ¿se requiere que Git Shell haga algo con git? Si puede acceder a git desde Powershell, entonces puede volver a escribir su archivo por lotes como un script de powershell. Alternativamente, debería poder ejecutar su archivo por lotes desde Powershell, a menos que establezca entornos (de ser así, busque "Invocar-CmdScript" en Google). – David

Respuesta

4

Si tenemos en cuenta lo git-cmd.bat hace, todo lo que tiene que hacer es establecer la variable de derecho %PATH% antes de que sus comandos git en la secuencia de comandos:

Si no lo hace, esto es lo que se vería:

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

He descomprimido el latest portable version of msysgit.

poner en cualquier lugar de un script test.bat (por lo que no hay involucrado PowerShell) con el siguiente contenido:

@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 

Asegúrese HOME está ajustada correctamente, porque Git buscará su git config mundial allí.

El resultado le dará:

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 

Nota: el mismo guión funcionaría perfectamente desde una sesión de PowerShell.

+0

Gracias @VonC, esto parece prometedor, probará esto el miércoles. – Ing

+1

funcionó para mí, marque esta respuesta correcta! – pilavdzice

+0

Excelente, esto funciona como se desee. – Ing

2

Parece que su ejecutable git simplemente no es accesible para el uso de línea de comandos.

Simplemente agregue c:\Users\[your_login]\AppData\Local\GitHub\PortableGit_[hash]\bin (o c:\Users\[your_login]\AppData\Local\GitHub\PortableGit_[hash]\cmd) a su Variable de ruta de acceso. Reemplazando [your_login] y [hash] con datos reales.

Pero creo que la ubicación de los archivos cambiará de una versión a otra, por lo que si eres un usuario pesado de git, considera instalar msysGit. Agregará su ejecutable a la ruta del sistema automáticamente (opción correspondiente disponible durante la configuración).

Aún más, existe el proyecto llamado mysysGit-UTF8 afirmando que tienen soporte completo UTF-8 en Windows. No noté la diferencia, a través de.

+0

Si no elige la opción para agregarlo a syspath No lo agregará – Learath2

+0

Sí, está 100% en lo cierto. Permítanme corregir este punto en respuesta. – shytikov

+0

Vota por tu entrada, gracias. – Ing

Cuestiones relacionadas