如果没有要提交的内容,Git提交和推送将失败

时间:2019-08-02 11:00:58

标签: git powershell jenkins

我在詹金斯(Jenkins)有一个项目,在这里我必须检出不同的存储库并更新检出的项目Pom文件中的三部分版本,例如c1,c2,c3,并非所有项目都需要更新所有三个版本。项目具有所有三个版本,有些具有两个版本,有些只有一个版本。在成功更新POM文件之后,需要提交pom文件并将其推回Master或其他分支,我编写了执行此操作的PowerShell脚本,但是在没有要提交的内容时,Jenkins作业失败。我可以尝试使用

git diff --quiet && git diff --staged --quiet || git commit -am 'some message'

问题是我在每个项目中都有一个脚本,并且可以执行此操作

git add pom.xml
git commit -m "message"
if ($? -ne $True) {
   write-host  "Error running command 'git commit''"
   exit ..

git push origin 
if ($? -ne $True) {
   write-host  "Error running command 'git push''"
   exit ..

现在的问题是,可能会发生以下情况:在C1,C2和C3中仅更改了一个,或者更改了两个,所以如果在脚本的第一阶段不满足条件,它将退出并跳过其他有效的git提交和推送,如果因为C1或C2或C3的版本未更改且没有任何提交而没有提交,则它也将退出,请提供一些更好的方法来处理此问题。

已经尝试过

git diff --quiet && git diff --staged --quiet || git commit -am ' message'

git add pom.xml
git commit -m "message"
if ($? -ne $True) {
   write-host  "Error running command 'git commit''"
   exit 1
}

git push origin $Branch
if ($? -ne $True) {
   write-host  "Error running command 'git push''"
   exit 2
}
write-host "git push origin $Branch exited successfully"
cd ..
exit 0

我希望这项大工作能够成功,尽管我也可以将其划分为四个我仍然想知道的并行工作

  1. 即使没有要提交的内容,如何也能使工作成功
  2. 当我在Powershell中使用这样的命令时,git diff-index --quiet HEAD || git commit -m“ Jenkins自动更新提交”失败,任何指针将如何在PowerShell中正确传递

1 个答案:

答案 0 :(得分:1)

要回答您的第一点,您需要documentation进行提交。

相关问题