【问题标题】:git push fails using maven release plugingit push 使用 Maven 发布插件失败
【发布时间】:2014-08-05 04:05:25
【问题描述】:

运行 git 版本 1.7 和 maven 3.0.3 和 maven 发布插件 2.4.2 并尝试运行以下命令:

mvn clean install release:clean release:prepare release:perform

我收到以下错误:

[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /home/foo-proj && git add -- pom.xml
[INFO] Working directory: /home/foo-proj
[INFO] Executing: /bin/sh -c cd /home/foo-proj && git status
[INFO] Working directory: /home/foo-proj
[INFO] Executing: /bin/sh -c cd /home/foo-proj && git commit --verbose -F /tmp/maven-scm-1966810637.commit pom.xml
[INFO] Working directory: /home/foo-proj
[INFO] Executing: /bin/sh -c cd /home/foo-proj && git symbolic-ref HEAD
[INFO] Working directory: /home/foo-proj
[INFO] Executing: /bin/sh -c cd /home/foo-proj && git push ssh://git.acmeco.com/gitroot/foo-proj.git master:master
[INFO] Working directory: /home/foo-proj
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:03.408s
[INFO] Finished at: Sat Jun 14 21:30:48 UTC 2014
[INFO] Final Memory: 13M/57M
[INFO] ------------------------------------------------------------------------    
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare    (default-cli) on project mikesbikes: Unable to commit files
[ERROR] Provider message:
[ERROR] The git-push command failed.
[ERROR] Command output:
[ERROR] To ssh://git.acmeco.com/gitroot/foo-proj.git
[ERROR] ! [rejected]        master -> master (non-fast-forward)
[ERROR] error: failed to push some refs to 'ssh://git.acmeco.com/gitroot/foo-proj.git'
[ERROR] To prevent you from losing history, non-fast-forward updates were rejected
[ERROR] Merge the remote changes before pushing again.  See the 'Note about
[ERROR] fast-forwards' section of 'git push --help' for details.
[ERROR] -> [Help 1]

尤其是这一行导致了问题:

git push ssh://git.acmeco.com/gitroot/foo-proj.git master:master

如果我只是像 git push 一样手动执行此操作,我不会遇到任何问题,所以不确定 master:master 的实际含义。

我已经在网上彻底搜索过类似的问题,但只有少数参考相同的问题没有解决方案。任何关于可能是什么问题的建议将不胜感激。

编辑:这是-e 标志的输出:

error: failed to push some refs to 'ssh://git.acmeco.com/gitroot/proj-foo.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.

    at   org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:285)
    at   org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:232)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 19 more
Caused by: org.apache.maven.shared.release.scm.ReleaseScmCommandException: Unable to commit files
Provider message:
The git-push command failed.
Command output:
To ssh://git.acemco.com/gitroot/foo-proj.git
! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://git.acmeco.com/gitroot/foo-proj.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.

    at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.checkin(AbstractScmCommitPhase.java:165)
    at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.performCheckins(AbstractScmCommitPhase.java:145)
    at org.apache.maven.shared.release.phase.ScmCommitPreparationPhase.runLogic(ScmCommitPreparationPhase.java:76)
    at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.execute(AbstractScmCommitPhase.java:78)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:234)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:169)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:146)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:107)
    at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:277)
    ... 22 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

【问题讨论】:

  • 尝试使用 -e 开关运行 maven 并检查是否有关于该问题的其他输出。
  • 刚刚用-e 的输出进行了编辑,似乎没有什么太暴露的地方
  • 我们在 Bamboo 构建推送提交到 Stash(构建在 Linux 上运行)git 版本 2.5.1、maven-release-plugin 2.5.2、maven 3.3.3 时遇到同样的问题。发布过程在我的开发人员机器上运行良好,但在 Windows 上使用 git 版本 1.9.5.msysgit.0。以前我们在 Bamboo 上使用 git 1.8.3.4 并且推送没有错误。

标签: git maven maven-release-plugin


【解决方案1】:

您的主分支是否与远程分支保持同步?

另外,您可能想尝试将您的 Git 升级到更年轻的版本(比如说 1.9.x)和最新的 maven 发布插件,目前是 2.5.2。

理论:

指定的错误似乎几乎只与 Git 相关:(即使发布插件在 Git 方面的名声很差)

[ERROR] To ssh://git.acmeco.com/gitroot/foo-proj.git
[ERROR] ! [rejected]        master -> master (non-fast-forward)
[ERROR] error: failed to push some refs to 'ssh://git.acmeco.com/gitroot/foo-proj.git'
[ERROR] To prevent you from losing history, non-fast-forward updates were rejected
[ERROR] Merge the remote changes before pushing again.  See the 'Note about
[ERROR] fast-forwards' section of 'git push --help' for details.
[ERROR] -> [Help 1]

这通常意味着存在潜在的冲突。

release:prepare 阶段发生的事情是 Pom 文件已更新(使用新版本)并且新的提交是……呃……已提交。

然后会发生的是,如果远程 master 分支也修改了相同的行,您将无法正常推送它。 这也解释了您可以在之后手动运行该行的事实,因为 Maven 很有可能会回滚这个机会。

所以我倾向于将错误放在 Git 端。 但是,请注意,我不能排除release:plugin,因为它有时太笨拙以至于它可能会尝试将一些完全错误的东西推开!如果是这样,恐怕你也无能为力了。

【讨论】:

  • 从问题评论中重复我自己:我们在使用最新的 git 版本 2.5.1、maven-release-plugin 2.5.2、maven 3.3 的 Bamboo 构建推送提交到 Stash(在 Linux 上运行的构建)时遇到同样的问题.3.发布过程在我的开发人员机器上运行良好,但在 Windows 上使用 git 版本 1.9.5.msysgit.0。以前我们在 Bamboo 上有 git 1.8.3.4 并且推送没有错误。现在尝试使用 -DpushChanges=false 或 -DdryRun=true 禁用推送
  • 很抱歉。之前没看到你的评论。无论如何,我在工作场所遇到了同样的问题,我不得不将我的开发人员机器锁定在 Git 1.9 上,因为 Maven 发布插件似乎无法处理更新的版本。
猜你喜欢
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 2012-10-14
  • 2015-04-01
  • 1970-01-01
  • 2013-09-28
相关资源
最近更新 更多