git status check

 if [ -n "$(git status --porcelain)" ]; then
    git diff
    for f in $(git ls-files --modified); do
        echo "::warning ::$f may be outdated"
    done
    for f in $(git ls-files --others --exclude-standard); do
        echo "::warning ::$f may be untracked"
    done
    exit 1
fi

这段代码是一个 Bash 脚本,通常用于 Git 工作流程中的 CI/CD 流程中,主要作用是检查 Git 仓库的状态并生成相应的警告信息。

具体来说,它做了以下几件事情:

  1. 执行 git status --porcelain 命令来获取 Git 仓库的状态信息,如果该命令的输出非空,则表示有文件被修改或添加到了暂存区或工作目录中。

  2. 如果有文件被修改或添加,则执行 git diff 命令来获取这些文件的具体差异信息,并遍历每个被修改的文件,用 echo 命令输出一个警告信息,格式为 ::warning ::$f may be outdated,其中 $f 表示当前遍历到的文件名。

  3. 执行 git ls-files --others --exclude-standard 命令来获取所有未被 Git 跟踪的文件,遍历每个未被跟踪的文件,用 echo 命令输出一个警告信息,格式为 ::warning ::$f may be untracked,其中 $f 表示当前遍历到的文件名。

  4. 最后使用 exit 1 命令结束整个脚本并返回非零值,表示 Git 仓库的状态不符合要求,需要采取相应的措施来处理。这个值可以在 CI/CD 流程中被捕获并处理,比如通知开发人员或终止构建流程。

 

测试例子:

当我只是修改一个文件, 会报::warning ::$f may be outdated

当我额外创建一个文件test,会报::warning ::test may be untracked

posted @ 2023-05-15 12:26  狼太白  阅读(82)  评论(0编辑  收藏  举报