我们最近从SVN迁移到git。除了在git上发布版本的其他(意外)问题之外,我想知道如何处理以下问题:
当我在Jenkins和一些开发人员(意外地)在发布的第一阶段推出发布版本时,发布版本失败并出现以下错误:
powershell.exe -file "$(SolutionDir)Resources\UpdateVersion.ps1" -path $(SolutionDir)
Jenkins用来启动发布版本的maven命令是(我们在Windows上构建,所以我们不幸要激活[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare (default-cli) on project xyz: Unable to commit files
[ERROR] Provider message:
[ERROR] The git-push command failed.
[ERROR] Command output:
[ERROR] To ssh://[some-ip]/home/git/xyz
[ERROR] ! [rejected] release/xyz-6.10 -> release/xyz-6.10 (fetch first)
[ERROR] error: failed to push some refs to 'ssh://[some-ip]/home/git/xyz'
[ERROR] hint: Updates were rejected because the remote contains work that you do
[ERROR] hint: not have locally. This is usually caused by another repository pushing
[ERROR] hint: to the same ref. You may want to first integrate the remote changes
[ERROR] hint: (e.g., 'git pull ...') before pushing again.
[ERROR] hint: See the 'Note about fast-forwards' in 'git push --help' for details.
[ERROR] -> [Help 1]
,因为-DautoVersionSubmodules
上的命令行太长,包括所有修改过的git add
):
pom.xml
是否有一种简单的方法可以阻止其他用户推送(但允许Jenkins推送!)?或任何其他稳定的工作 - 或最佳做法?
使用的版本:
提前感谢您的帮助。
答案 0 :(得分:1)
我希望你同意发布失败是正确的。在这种情况下,修复并不是一个大问题:更新项目并执行另一个版本。 解决这个问题最简单的方法是:沟通:)告诉同事你打算做这个版本。 我听说的另一个解决方案是:首先创建一个分支并从该分支中释放。没有人会改变分支的内容,所以这应该是一个安全的解决方案,但它需要额外的工作。由您来决定它是否值得。大部分时间都不是。