2012-06-27 4 views
6

В Windows 7 У меня есть пакетный файл для проверки состояния некоторых репозиториев и вывода результатов в файл (со стандартными командами git для командной строки).Запуск командного файла в оболочке git

Это прекрасно работает при запуске из оболочки git, мой вопрос: как я могу это сделать без запуска оболочки git?

Поэтому я хочу, чтобы иметь возможность вводить в стандартном приглашении или в исполняемом командном файле команду/команды, которые запустили данный командный файл в оболочке git.

+0

Вопрос: Какая версия git для окон у вас есть? Я боролся с установкой msys Git для win (7), но некоторые команды потребовали времени для завершения ... Теперь получил git только через cygwin. – bcelary

+0

У меня есть 1.7.11.rc1.6953.gf229a20 - Был установлен с новым приложением Windows GitHub – Ing

+0

Можете ли вы сделать простые команды git от Powershell? Другими словами, требуется ли оболочка git делать что-либо с git? Если вы можете получить доступ к git из Powershell, вы можете переписать свой командный файл как скрипт powershell. Кроме того, вы должны иметь возможность запускать пакетный файл из Powershell, если он не устанавливает env vars (если это так, выполните поиск «Invoke-CmdScript» в Google). – David

ответ

4

Если вы считаете, что git-cmd.bat делает все, что вам нужно сделать, это установить правильную переменную %PATH% перед вашими командами Git в вашем скрипте:

Если вы этого не сделаете, вот что вы увидите:

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

У меня несжатый latest portable version of msysgit.

Помещенный где-нибудь в test.bat скрипт (так что никаких PowerShell не участвует там) следующего содержания:

@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 

Убедитесь, что HOME правильно установлен, так как Git будет выглядеть ваш глобальный мерзавца конфиге там.

Результат даст вам:

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 

Примечания: тот же сценарий будет работать отлично от Powershell сессии.

+0

Спасибо @VonC, это выглядит многообещающим, проверит это на Wed. – Ing

+1

работал для меня, отметьте этот ответ правильно! – pilavdzice

+0

Отлично, это работает по желанию. – Ing

2

Похоже, что ваш исполняемый файл git просто недоступен для использования в командной строке.

Просто добавьте c:\Users\[your_login]\AppData\Local\GitHub\PortableGit_[hash]\bin (или c:\Users\[your_login]\AppData\Local\GitHub\PortableGit_[hash]\cmd) к переменной Path. Замена [your_login] и [hash] с фактическими данными.

Но я считаю, что расположение файлов будет изменяться с версии на версию, поэтому, если вы тяжелый пользователь git, подумайте об установке msysGit. Он автоматически добавит свой исполняемый файл к системному пути (соответствующий параметр доступен во время установки).

Более того, существует проект под названием mysysGit-UTF8, в котором утверждается, что у них есть полная поддержка UTF-8 в Windows. Я не заметил разницы.

+0

Если вы не выбрали вариант добавить его в syspath, он не добавит его – Learath2

+0

Да, вы на 100% прав. Позвольте мне исправить этот момент в ответ. – shytikov

+0

Повысьте свой вклад, спасибо. – Ing

Смежные вопросы