git-log错误: 'master'模糊参数。

3

我正在运行一个存储在git repo中的Java项目的maven构建。当发布计划在构建服务器上运行(使用Bamboo),它会发出以下git命令:

git log -n1 --date-order master

但是收到以下错误:
fatal: ambiguous argument 'master': unknown revision or path not in the working tree.

我当然有一个主分支,当我拉取库并在本地运行命令时,它可以正常工作。我的猜测是构建服务器上有不同的配置,但我不知道该查找什么。我希望你们其中一个Git专家能够提供一些见解。
供参考,这里是我从Maven构建中获取的实际错误日志。它发生在buildnumber-maven-plugin执行期间:
build   19-Aug-2015 15:10:28    [INFO] [INFO] --- buildnumber-maven-plugin:1.2:create (default) @ my-rest-project ---
build   19-Aug-2015 15:10:28    [INFO] [INFO] Verifying there are no local modifications ...
build   19-Aug-2015 15:10:28    [INFO] [INFO] Executing: /bin/sh -c cd /usr/local/atlassian/bamboo-home/xml-data/build-dir/MKL-RR-JOB1/target/checkout && git status --porcelain
build   19-Aug-2015 15:10:28    [INFO] [INFO] Working directory: /usr/local/atlassian/bamboo-home/xml-data/build-dir/MKL-RR-JOB1/target/checkout
build   19-Aug-2015 15:10:28    [INFO] [INFO] Executing: /bin/sh -c cd /usr/local/atlassian/bamboo-home/xml-data/build-dir/MKL-RR-JOB1/target/checkout && git log -n1 --date-order master
build   19-Aug-2015 15:10:28    [INFO] [INFO] Working directory: /usr/local/atlassian/bamboo-home/xml-data/build-dir/MKL-RR-JOB1/target/checkout
build   19-Aug-2015 15:10:28    [INFO] [ERROR] Provider message:
build   19-Aug-2015 15:10:28    [INFO] [ERROR] The git-log command failed.
build   19-Aug-2015 15:10:28    [INFO] [ERROR] Command output:
build   19-Aug-2015 15:10:28    [INFO] [ERROR] fatal: ambiguous argument 'master': unknown revision or path not in the working tree.
build   19-Aug-2015 15:10:28    [INFO] Use '--' to separate paths from revisions, like this:
build   19-Aug-2015 15:10:28    [INFO] 'git <command> [<revision>...] -- [<file>...]'
3个回答

3

致命错误:模糊参数 'master':未知的修订版本或路径不在工作树中。

这似乎是git版本问题,我们CI服务器上运行的git命令(或包)与buildnumer-maven-plugin生成的命令不兼容。 在我的Mac本地可以正常工作。

解决方法是将doUpdate更改为false。 我们已经将doCheck设置为false,所以现在我们的配置如下:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    ...
    <configuration>
        <doCheck>false</doCheck>
        <doUpdate>false</doUpdate>  <!-- changed this from true -->
    </configuration>
</plugin>

这将导致buildnumber-maven-plugin发出以下git命令,在任何地方似乎都能正常工作:
[INFO] --- buildnumber-maven-plugin:1.4:create (default) @ parent ---
[INFO] Executing: /bin/sh -c cd '/build/parent' && 'git' 'rev-parse' '--verify' 'HEAD'

2

当运行maven-release-plugin 2.2及以下版本时,它可以正常工作。

事实证明,在发布插件版本为2.3-2.5(截至本文撰写时,2.5是最新版本)之间时,maven-release-plugin和maven-buildnumber-plugin之间存在某种冲突。

我不确定错误的原因是什么,但日志显示在这些版本中,release-plugin会执行一个额外的git命令,而这个命令会导致紧随其后运行的buildnumber插件失败。

具体来说,它运行git ls-remote ssh://git@reponame.git并在临时目录中运行它,而不是所有其他git命令运行的目录。我不确定这是Maven的错误还是Bamboo的错误。无论如何,我现在知道如何解决它。

更新: 在遇到另一个强制我将maven-release-plugin升级到2.5的bamboo/maven-release/git问题后,我确定唯一的解决办法是放弃buildnumber插件。最终,正是buildnumber插件引起了问题,而且对我的工作流程并不重要。


0
构建服务器可能只有你的文件,而没有 Git 仓库。这是许多构建服务器中非常常见的设置,你可能需要检查一下是否是这种情况。
许多构建服务器也提供将仓库签出的选项。

1
我应该澄清一下,这是在拉取git仓库并成功构建项目后发生的。此时,构建正在确认它所拉取和构建的是最新的主分支提交,以便证明即将创建的发布与该点的代码库匹配。这只是一种确保不会发布未推送到主分支的本地更改的方法。 - Planky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接