使用 maven 发布插件时“Git 致命:ref HEAD 不是符号引用”
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/20351051/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
"Git fatal: ref HEAD is not a symbolic ref" while using maven release plugin
提问by SkyWalker
I get the following error output while running the Maven release plugin prepare step i.e. mvn release:prepare --batch-mode -DreleaseVersion=1.1.2 -DdevelopmentVersion=1.2.0-SNAPSHOT -Dtag=v1.1.2 -X
from an Atlassian Bamboo plan. However doing the same in the command line works fine. The full error stack is below.
我在运行 Maven 发布插件准备步骤时收到以下错误输出,即mvn release:prepare --batch-mode -DreleaseVersion=1.1.2 -DdevelopmentVersion=1.2.0-SNAPSHOT -Dtag=v1.1.2 -X
来自 Atlassian Bamboo 计划。但是,在命令行中执行相同操作可以正常工作。完整的错误堆栈如下。
Any ideas how can this be solved?
任何想法如何解决?
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare (default-cli) on project hpcmom: An error is occurred in the checkin process: Exception while executing SCM command. Detecting the current branch failed: fatal: ref HEAD is not a symbolic ref -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare (default-cli) on project hpcmom: An error is occurred in the checkin process: Exception while executing SCM command.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: An error is occurred in the checkin process: Exception while executing SCM command.
at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:281)
at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:232)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
Caused by: org.apache.maven.shared.release.ReleaseExecutionException: An error is occurred in the checkin process: Exception while executing SCM command.
at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.checkin(AbstractScmCommitPhase.java:160)
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
Caused by: org.apache.maven.scm.ScmException: Exception while executing SCM command.
at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:63)
at org.apache.maven.scm.provider.git.AbstractGitScmProvider.executeCommand(AbstractGitScmProvider.java:291)
at org.apache.maven.scm.provider.git.AbstractGitScmProvider.checkin(AbstractGitScmProvider.java:217)
at org.apache.maven.scm.provider.AbstractScmProvider.checkIn(AbstractScmProvider.java:410)
at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.checkin(AbstractScmCommitPhase.java:156)
... 30 more
Caused by: org.apache.maven.scm.ScmException: Detecting the current branch failed: fatal: ref HEAD is not a symbolic ref
at org.apache.maven.scm.provider.git.gitexe.command.branch.GitBranchCommand.getCurrentBranch(GitBranchCommand.java:147)
at org.apache.maven.scm.provider.git.gitexe.command.checkin.GitCheckInCommand.createPushCommandLine(GitCheckInCommand.java:192)
at org.apache.maven.scm.provider.git.gitexe.command.checkin.GitCheckInCommand.executeCheckInCommand(GitCheckInCommand.java:132)
at org.apache.maven.scm.command.checkin.AbstractCheckInCommand.executeCommand(AbstractCheckInCommand.java:54)
at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:59)
... 34 more
[ERROR]
[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/MojoExecutionException
simple 02-Dec-2013 17:18:09 Failing task since return code of [/opt/dev/apache-maven/3.0.5//bin/mvn -Djava.io.tmpdir=/opt/atlassian/bamboo/5.2.1/temp/HPCMOM-RELEASE-JOB1 release:prepare --batch-mode -DignoreSnapshots=false -DreleaseVersion=1.1.2 -DdevelopmentVersion=1.2.0-SNAPSHOT -Dtag=v1.1.2 -X] was 1 while expected 0
UPDATE:
更新:
Doing git ls-remote .
on a local workspace clone produces:
这样git ls-remote .
在本地工作区克隆产生:
azg@olympus:~/code/hpcmom$ git ls-remote .
7894eea08a0afecb99515d1339623be63a7539d4 HEAD
7894eea08a0afecb99515d1339623be63a7539d4 refs/heads/master
7894eea08a0afecb99515d1339623be63a7539d4 refs/remotes/origin/HEAD
7894eea08a0afecb99515d1339623be63a7539d4 refs/remotes/origin/master
6a7095b86cccdfd4b28e4dea633d0930809ae9ac refs/tags/v1.0
1a53462b1ecf0abfea8245016304cda9c78b420d refs/tags/v1.0^{}
5113a7cbcf35c47b680a9c36e15e5fa01ef1d2e6 refs/tags/v1.1
79a3073ecabe65d3c8051520f8007d9e49a65a06 refs/tags/v1.1^{}
a00249209597ea1214d80ee38f228c40db7022c2 refs/tags/v1.1.0
e892bce8d25d87368ab557fee0d30810bef7e31e refs/tags/v1.1.0^{}
b491a312c39088533cb069e4ab1ae8a00d1f6bfe refs/tags/v1.1.2
a3f7618dada7ed60d8190426152ffd90e0e40a86 refs/tags/v1.1.2^{}
Doing git ls-remote .
on the Bamboo clone produces:
这样做git ls-remote .
的竹克隆产生:
azg@olympus:/var/atlassian/application-data/bamboo/xml-data/build-dir/HPCMOM-RELEASE-JOB1$ git ls-remote .
2422ce066ac35dae3c54f1435ef8dae5008a9a14 HEAD
57c08d581c0fd9e788049733fbdc9c22b9a6ae00 refs/heads/master
57c08d581c0fd9e788049733fbdc9c22b9a6ae00 refs/remotes/origin/HEAD
57c08d581c0fd9e788049733fbdc9c22b9a6ae00 refs/remotes/origin/master
7539f9700d78a1b766fca7ed9f409914f1ea9d08 refs/tags/vnull
6bfa8c3fdb1f8f56a385035f01b1b77b6e88da8b refs/tags/vnull^{}
and this is very weird why is the local development clone output so different from the Bamboo one?
这很奇怪,为什么本地开发克隆输出与 Bamboo 输出如此不同?
采纳答案by SkyWalker
The problem in Atlassian Bamboo was solved by un-checking the default setting Use shallow clones
with description Fetches the shallowest commit history possible. Do not use if your build depends on full repository history
. This checkbox is located under Plan Configuration -> Repositories tab -> Git -> Advanced options
Atlassian Bamboo 中的问题通过Use shallow clones
使用 description取消选中默认设置来解决Fetches the shallowest commit history possible. Do not use if your build depends on full repository history
。此复选框位于计划配置 -> 存储库选项卡 -> Git -> 高级选项
After this all the releases work fine.
在此之后,所有版本都可以正常工作。
回答by jvwilge
I ran into the same error on Jenkins in combination with maven release plugin, we fixed it by going to Additional behaviours, Check out to specific local branch and enter 'master'
我在 Jenkins 与 maven 发布插件结合时遇到了同样的错误,我们通过转到其他行为来修复它,检查到特定的本地分支并输入“master”
I realise this is not a solution but it might give you some direction in where to look.
我意识到这不是一个解决方案,但它可能会给你一些方向。
回答by toschneck
For Jenkins and GIT add the additional behaviour check out to specific local branch
and use the Workspace Cleanup Plugin
to clean your workspace to the beginning of your CI job.
对于 Jenkins 和 GIT,添加额外的行为check out to specific local branch
并使用Workspace Cleanup Plugin
来清理您的工作区到 CI 作业的开始。
回答by Jean Marois
Unchecking the Use shallow clones
was not sufficient in my case (I'm using Bamboo 5.7.2). I needed to also enable Force Clean Build
in the Source Code Checkout task. Enabling the Use shallow clones
would work for the next execution of the job, but all subsequent execution would result in the same error.
Use shallow clones
在我的情况下取消选中是不够的(我使用的是 Bamboo 5.7.2)。我还需要Force Clean Build
在 Source Code Checkout 任务中启用。启用Use shallow clones
将适用于作业的下一次执行,但所有后续执行都将导致相同的错误。
回答by zakmck
I have seen this problem under Bamboo used with Maven Release plug-in. I've fixed it by enabling the option 'Force Clean Build' in the 'Source Checkout' task. Bamboo says this might make the build slower, but it works and I didn't seen any significant time increase.
我在 Bamboo 下看到过这个问题,用 Maven Release 插件。我通过在“源代码检查”任务中启用“强制清理构建”选项来修复它。Bamboo 说这可能会使构建速度变慢,但它有效并且我没有看到任何显着的时间增加。
回答by kevcodez
I am using a Jenkins Team Project with a Multibranch Project Setup.
我正在使用带有多分支项目设置的 Jenkins 团队项目。
I previously used checkout scm
command.
我以前使用过checkout scm
命令。
Now I am using the following code:
现在我使用以下代码:
checkout([
$class: 'GitSCM',
branches: scm.branches,
extensions: scm.extensions + [[$class: 'CleanCheckout'], [$class: 'LocalBranch', localBranch: 'new']],
userRemoteConfigs: scm.userRemoteConfigs
])
回答by Vincent F
what worked for me was to call "git checkout -f master" before calling "mvn release"
对我有用的是在调用“mvn release”之前调用“git checkout -f master”
回答by Manu
For us the issue was with maven version specified in the pom file. Corrected the maven version specified in the pom file in accordance with the one in bamboo fixed the issue
对我们来说,问题在于 pom 文件中指定的 maven 版本。更正了pom文件中指定的maven版本,按照bamboo中的一个修复了问题