我写了一个批处理来检查和部署来自github的rails应用程序,批处理文件见下文。问题是git.exe fetch origin | find "remote: Counting Objects"
总是返回errorlevel 1
,即使我们有新的提交。我必须首先终止Rails应用程序,因为某些文件被锁定(*.jars
)并导致git pull
命令失败。
我搜索并找到以下主题,但即使使用git.exe
代替git.cmd
,问题仍然存在。
我尝试使用临时文件来存储git.exe fetch origin
结果,但是如果看起来这个命令总是将结果打印到控制台。
另外:
git pull | find "Already up-to-date."
if %errorlevel% == 1 (
工作正常
REM @echo off set path=%path%;C:\Program Files\Git\bin;D:\jruby-1.6.7\bin set JRUBY_OPTS=--1.9 git.exe fetch origin | find "remote: Counting objects" if %errorlevel% == 0 taskkill /f /im:jruby.exe git pull | find "Already up-to-date." if %errorlevel% == 1 ( REM start cucumber.bat REM do something else when update ) REM RAILS tasklist | find "jruby.exe" if %errorlevel%==1 ( echo @rails s > rail.bat echo @exit >> rail.bat start cmd /c rail.bat ) exit
答案 0 :(得分:2)
我猜是因为“计数对象”行显示了一个动态进度指示器,但我不会引用我。
...
git fetch origin
git branch -a --no-merged |find "remotes/origin"
if %errorlevel% == 0 taskkill /f /im:jruby.exe
...
您可能还希望将其限制为仅当前分支:
git branch -a --no-merged |find "remotes/origin/mybranch"