Windows批处理下无法在“git.exe fetch origin”中使用管道

时间:2012-05-21 02:54:30

标签: windows git batch-file pipe

我写了一个批处理来检查和部署来自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

1 个答案:

答案 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"