Fastlane git_commit操作-如果没有要提交的内容,则跳过

时间:2019-03-20 09:21:15

标签: git version-control automation fastlane

我使用git_commit action

  

git_commit(路径:“ *”,消息:“ message”)

如果没有要提交的操作,此操作将失败。即使没有要提交的内容,如何继续执行Fastlane脚本?

我正在寻找的东西可以通过以下两个选项之一来实现:

  1. git_commit操作中添加一些参数,这样,如果没有要提交的内容,脚本就不会崩溃(而是继续)
  2. 检查是否有任何更改,然后才调用git_commit

我找不到使用方法1完成此操作的任何方法,因此我正在寻找第二种方法的实现。

2 个答案:

答案 0 :(得分:0)

您可以尝试断言状态是干净的,捕获异常并通过git commit处理它:

begin
  ensure_git_status_clean
rescue
  git_commit
end

或者,您可以使用sh操作在外壳中执行任何操作

答案 1 :(得分:0)

您可以实现一个脚本,该脚本告诉您是否存在分阶段的更改,然后使用输出确定是否应创建提交。

如果有阶段性更改,以下脚本将返回1,否则返回0。

#!/bin/bash

if [[ -n "$(git diff --name-only --cached)" ]]
then
  exit 1
else
  exit 0
fi

假设您将脚本命名为 CheckStagedFiles ,则必须在通道中添加以下内容:

shouldCommit = sh(".CheckStagedFiles.sh")
if shouldCommit
    git_commit(path: "*", message: "message")
end