Как я могу запустить cmd из git post-commit hook
Я хочу иметь миниатюрный цикл ци в своих частных проектах и думал, что если я смогу запустить msbuild внутри batfile, я мог бы раскрасить обратную связь в окне cmd и автоматизировать сборку. Поэтому, если бы я мог просто запустить летучую мышь с крючка post-commit, я думаю, это было бы возможно. Невозможно быть новой идеей, но я не могу найти примеров в Google.
любой ввод будет оценен:)
Ответы
Ответ 1
Вызов файла .bat
из вашего крюка после фиксации не требует магии.
Переименуйте шаблон привязки post-commit в .git/hooks/post-commit.sample
в .git/hooks/post-commit
и вызовите пакетный файл внутри, просто называя имя командного файла:
#!/bin/sh
path/to/batchfile.bat
Обратите внимание, что рабочий каталог для git hook - это корневой каталог вашего репо. Если вы используете относительные пути к вашему файлу .bat
, вы должны принять это во внимание.
Ответ 2
Ответ на @eckes был близок, но на самом деле я запускал файлы bat/cmd, как если бы они были bash скриптами. Если вы хотите запустить их в виде пакетных файлов, вот что сработало для меня:
после приема
#!/bin/sh
# important that it got the .exe on the end!
cmd.exe /c "C:\path\to\somebatch.cmd"
somebatch.cmd
Вот некоторые переменные stuff/envrionment и т.д., которые могут вам пригодиться:
@echo off
:: read commit hook stdin data e.g. "aa45321… 68f7abf… refs/heads/master"
set /p OLDREV_NEWREV_REFNAME=
echo Directory of this script is %~dp0
echo Repository root is %CD%
set OLDREV=%OLDREV_NEWREV_REFNAME:~0,40%
echo OLDREV: %OLDREV%
set NEWREV=%OLDREV_NEWREV_REFNAME:~41,40%
echo NEWREV: %NEWREV%
set REFNAME=%OLDREV_NEWREV_REFNAME:~82,999%
echo REFNAME: %REFNAME%