【问题标题】:Checking if a Git Branch Exists in Batch批量检查 Git 分支是否存在
【发布时间】:2018-08-17 16:26:00
【问题描述】:

我正在尝试通过 Jenkins 使用批处理来确定特定位置是否存在 git 分支。据我了解,Jenkins 运行的命令类似于批处理 shell 脚本的运行方式。在已经在 Stack Overflow 上研究了这个问题(并找到了几页关于这个类似问题的页面)之后,我现在有代码来检查是否存在 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”确实存在,则此代码完美运行并返回“分支存在”。但是,如果“temp”不存在,Jenkins 作业会失败说

fatal: Needed a single revision
Branch Does Not Exist

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

我的问题是:即使我的代码逻辑有效(感谢其他 Stack Overflow 问题),当没有分支 temp 时,我如何防止这项工作失败?

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

【问题讨论】:

    标签: git batch-file jenkins git-branch


    【解决方案1】:

    如上所述,这将解决您的直接问题,但实际上可能不是您想要的。将您当前的 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.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-31
      • 2013-07-19
      • 2018-12-30
      相关资源
      最近更新 更多