Java 使用Hudson构建时保存Git SHA1,类似于CVS的CVS_分支标记

Java 使用Hudson构建时保存Git SHA1,类似于CVS的CVS_分支标记,java,git,ant,hudson,Java,Git,Ant,Hudson,我们已经从CVS迁移到Git。我们的Hudson build脚本用于将CVS_BRANCH环境变量的值与Hudson build_ID一起保存在生成的构建中,以便以后进行调查 我无法弄清楚Hudson(或Git插件)如何向ant脚本显示当前提交的Git SHA1名称,因为我找不到任何明确的来源,说明我应该在哪里查找 如果git存在于环境中,我不希望调用git来获取它,但如果有必要,可以这样做 我错过了什么?好吧,如果您真的不想调用git命令(git descripe或git rev parse)

我们已经从CVS迁移到Git。我们的Hudson build脚本用于将CVS_BRANCH环境变量的值与Hudson build_ID一起保存在生成的构建中,以便以后进行调查

我无法弄清楚Hudson(或Git插件)如何向ant脚本显示当前提交的Git SHA1名称,因为我找不到任何明确的来源,说明我应该在哪里查找

如果git存在于环境中,我不希望调用git来获取它,但如果有必要,可以这样做


我错过了什么?

好吧,如果您真的不想调用git命令(
git descripe
git rev parse
),那么您可以执行以下操作:

  • 查找$GIT_DIR/HEAD文件。如果是符号链接,则其目标是当前分支的完全限定名称(例如,如果当前分支为“主分支”,则为“refs/heads/master”);不应该发生,除非是在由非常旧的git管理的非常旧的存储库中

    如果它是普通文件,则它的格式为
    ref:refs/heads/
    (所谓的symref),或者它包含当前提交的SHA-1 id(所谓的“分离头”又名匿名分支:“(无分支)”,在
    git branch
    输出中

  • 当前提交在$GIT_DIR/refs/head/branch文件中,或者可以在$GIT_DIR/packeted refs文件中找到。如果两者都存在,则loose ref(在以完全限定的分支名称命名的单独文件中)获胜


  • 但是我不确定这是否值得。

    好吧,如果您真的不想调用git命令(
    git descripe
    git rev parse
    ),那么您可以执行以下操作:

  • 查找$GIT_DIR/HEAD文件。如果它是符号链接,则其目标是当前分支的完全限定名(例如,如果当前分支是“master”,则为“refs/heads/master”);除非在非常旧的GIT管理的非常旧的存储库中,否则不应发生

    如果它是普通文件,则它的格式为
    ref:refs/heads/
    (所谓的symref),或者它包含当前提交的SHA-1 id(所谓的“分离头”又名匿名分支:“(无分支)”,在
    git branch
    输出中

  • 当前提交在$GIT_DIR/refs/head/branch文件中,或者可以在$GIT_DIR/packeted refs文件中找到。如果两者都存在,则loose ref(在以完全限定的分支名称命名的单独文件中)获胜


  • 但我不确定它是否值得。事实证明,它支持“rev parse HEAD”命令,该命令与
    结合使用,完全符合我的要求,即将SHA1转换为ant属性,以便我以后可以使用它。

    事实证明它支持“rev parse HEAD”命令,该命令与
    结合使用,完全满足了我的要求,即将SHA1放入ant属性中,以便我以后可以使用它。

    要使用ant和JGit从git获取buildnumber,您可以使用它。它可以将标记名、分支名、提交SHA1和当前分支中提交的计数作为ant变量提供给您。

    要从m git使用Ant和您可以使用的JGit。它可以给您标记名、分支名称、提交sha1和当前分支中的提交计数作为Ant变量。

    公开了git_提交环境变量。

    公开了git_提交环境变量。

    这与@VonC没有关系吗,是的,但我可能会接受sha1代码-I want能够回到构建时的确切提交。ørn SHA1很好(但不是很令人满意),更好(但意味着调用git,这是您不想要的)。分支的概念是“暂时的”,因为可以随意删除/重命名分支。“不想要”太强,“不想要”更好。我希望Hudson告诉我它知道什么,而不必使用启发式来推导可能是真的或可能不是真的。这与否有关?@VonC,是的,很接近,但我可能可以接受SHA1代码-我希望能够回到构建时的确切提交。ørn SHA1很好(但不是很令人满意),更好(但意味着调用git,这是你不想要的)。分支的概念是“暂时”的,因为分支可以随意删除/重命名。“不想要”太强,“不喜欢”更好。我希望Hudson告诉你它知道什么,而不必使用启发式来推导出可能是真的或可能不是真的东西。