Automatizando los commands de git en Windows

Context: Estoy construyendo un script de compilation automatizado que se ejecutará en un cuadro de server de Windows (necesario porque nuestro package de software de desarrollo solo es Windows). Mi cuadro de cliente también es Windows. Debería ejecutar una serie de pasos, uno de los cuales es iniciar session en github, descartar todos los cambios locales (por si acaso, realmente no debería haber cambios locales), search y fusionar.

Restricciones: 1) Debería poder ejecutar un file de process por lotes (u otro file de commands, siempre que se ejecute en un cuadro de Windows) 2) No puedo ir al recuadro e ingresar mi contraseña para SSH cada vez. Debería funcionar automáticamente.

Problema: No puedo hacer que Git y SSH funcionen bien con mi file por lotes de Windows.

Mi primer bash:

:: set repo folder CD %2 :: check status CALL git status ECHO. :: discard all changes ECHO ~ discard all changes ECHO. CALL git reset --hard CALL git clean -f -d ECHO. :: switch branch ECHO ~ checkout branch %4 ECHO. CALL git checkout %4 ECHO. :: get any changes from server ECHO ~ fetch %3 ECHO. CALL git fetch %3 ECHO. :: merge changes into current branch ECHO ~ merge %3/%4 ECHO. CALL git merge %3/%4 ECHO. 

El parámetro% 2 es la location del file de Windows,% 3 es la URL de github HTTPS,% 4 es el nombre de la twig.

Esto funciona, pero usa HTTPS, lo que significa ingresar mi nombre de usuario y contraseña manualmente.

Así que intenté hacerlo en SSH (a través de bash), usando los commands:

 eval `ssh-agent` ssh-add /z/id_rsa 

como de lotes:

 CD C:\Program Files (x86)\Git\bin\ sh.exe --login -i -c "eval `ssh-agent` && ssh-add /z/id_rsa && exit" 

Sin embargo, SSH también requiere que ingrese la contraseña key cada vez que uso este command.

¿Cómo puedo, A) mantener viva la información de inicio de session de SSH entre las secuencias de commands de lote / bash o B) ingresar la frase de paso programáticamente?

Dado que está utilizando Windows en el cliente y el server, le recomendaría utilizar plink de PuTTY Suite para automatizar cosas.

El package también incluye un agente SSH ( pageant ). Sin embargo, solo necesita un agente si la key privada está protegida con contraseña. Con fines de automation, crearía un par de keys dedicado sin una frase de contraseña y usaría esa key:

 plink -ssh -batch -i "C:\path\to\private.ppk" user@host C:\serverpath\batch.cmd 

En el command anterior C:\serverpath\batch.cmd es la location del file por lotes en el server. También puede mantener los commands que desea ejecutar en un file en el cliente y usarlos con plink :

 plink -ssh -batch -i "C:\path\to\private.ppk" -m C:\localpath\batch.cmd user@host