git - 仅在有更改时如何让 Jenkins git 提交?

我有一个 Jenkins 作业,它使用 Maven (mvn clean install) 从 github.com 存储库的主分支构建,然后检查 Java 文件中的许可证头和丢失的 NOTICE 文件,如果出现则添加它们必要的(mvn license:format notice:generate)。有时这会导致更改或添加文件,有时不会。

只要有任何更改(通过许可证插件),我都想将更改推送到 github 存储库。

现在我无法弄清楚如何最好地实现这一目标。我在执行 git 命令的 Maven 许可证插件之后添加了一个 shell 构建步骤:

git add . # Just in case any NOTICE files have been added
git commit -m "Added license headers"

git add . 单独工作,即不会破坏构建,即使没有添加文件。但是,如果根本没有任何更改,git commit 会破坏构建。

我不担心推回 github,因为我相信 Git Publisher 构建后操作可以为我做到这一点。有人可以为我指出正确的 git commit 方向吗?

最佳答案

git diff --quiet && git diff --staged --quiet || git commit -am 'Added license headers'

此命令完全符合要求,“仅在有更改时才提交”,而其他答案中的命令则没有:它们只忽略 git commit 的任何错误。

https://stackoverflow.com/questions/22040113/

相关文章:

c# - 我的类库应该以哪个 .NET Framework 和 C# 版本为目标?

java - 在 Maven 构建期间优化 Java 编译器?

windows - 如何在 Windows 上使用 CMake 进行非交互式构建?

build - Phing和 Composer

ios - Xcode 方案更改显示名称

objective-c - 构建时出现多个构建命令警告-Objective C

c++ - 如何在 Visual Studio 2008 中优化构建速度

build - 如何为 Windows 构建 google google-breakpad?

jenkins - "Delete Build in Jenkins after Keep Fore

maven-2 - 如何在 Maven 中关闭 jar 压缩