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.

当然,我确实有一个 master 分支,当我拉下 repo 并在本地运行命令时,它工作正常。我的猜测是构建服务器上有不同的配置,但我不知道要寻找什么。我希望你们中的一位 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>...]'
4

3 回答 3

3

致命:模棱两可的参数“主”:未知的修订或路径不在工作树中。

这似乎是一些 git 版本问题,在我们的 CI 盒上运行的 git 命令(或包)与buildnumer-maven-plugin. 它在我的 Mac 上本地为我工作。

将它固定在我们的 CI 框上的是将其更改doUpdatefalse. 我们已经有了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'
于 2017-04-14T13:53:55.530 回答
2

它在运行 maven-release-plugin 2.2 及更低版本时有效。

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

我不确定错误的确切原因是什么,但是日志显示 release-plugin 在这些版本中执行了额外的 git 命令,并且它以某种方式导致 buildnumber 插件在它失败后立即运行。

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

更新: 在遇到另一个竹子/maven-release/git 问题迫使我将 maven-release-plugin 升级到 2.5 后,我确定解决所有这些问题的唯一方法是删除 buildnumber 插件。最终是版本号插件导致了这个问题,毕竟它对我的工作流程并不重要。

于 2015-09-17T21:50:30.670 回答
0

构建服务器可能只是从您的而不是 git 存储库中提交。这是许多构建服务器中非常常见的设置,您可能需要检查是否是这种情况。

许多构建服务器还提供了检查 repo 的选项。

于 2015-08-21T17:31:03.023 回答