代码之家  ›  专栏  ›  技术社区  ›  quango

检查批处理中是否存在Git分支

  •  1
  • quango  · 技术社区  · 7 年前

    我试图通过使用batch-through-Jenkins确定git分支是否存在于特定位置。据我所知,Jenkins运行的命令类似于批处理shell脚本的运行方式。在研究了关于堆栈溢出的这个问题(并找到了关于这个类似问题的几页)之后,我现在有了检查git分支是否存在的代码。代码如下:

    @echo off
    cd D:\git\ceos
    
    git rev-parse --verify temp
    if %ERRORLEVEL% == 0  (
        echo Branch Exists
    ) else (
        echo Branch Does Not Exist
    )
    

    这里是我的问题:如果分支“temp”确实存在,那么这段代码工作正常并返回“branch exists”。但是,如果“temp”不存在,Jenkins作业将失败

    fatal: Needed a single revision
    Branch Does Not Exist
    

    很明显,它仍然进入if语句的正确分支,因为它返回“分支不存在”,但由于某种原因仍然失败。

    我的问题是:即使我的代码的逻辑可以工作(多亏了其他堆栈溢出问题),我如何在没有分支temp的情况下防止这个作业失败?

    更新: 结果表明,作业失败的原因是%ERRORLEVEL%被设置为0以外的值,当到达脚本末尾时,如果没有正确的退出代码,Jenkins作业将无法通过。因此,在“else”分支中,我只是将errorlevel设置回0,它就通过了。

    1 回复  |  直到 7 年前
        1
  •  0
  •   jwdonahue    7 年前

    这将解决你眼前的问题如上所述,但实际上可能不是你想要的。将当前git命令替换为:

    git branch --list | findstr /snip temp
    

    你可能想做的是尝试 git checkout 如果失败,则返回一个错误:

    git checkout temp
    

    这会将本地文件同步到temp中的内容(如果存在)。在这种情况下,git返回的错误消息也应该足够了,并且比您的信息更丰富:

    error: pathspec 'temp' did not match any file(s) known to git.
    
    推荐文章