使用Hudson构建时保存Git SHA1类似于CVS的CVS_BRANCH标记

时间:2010-10-13 10:05:06

标签: java git ant hudson

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

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

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

我错过了什么?

4 个答案:

答案 0 :(得分:2)

好吧,如果你真的想避免调用git命令(git describegit rev-parse),那么你可以执行以下操作:

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

    如果它是普通文件,则它是ref: refs/heads/<branch>形式(所谓的symref),或者它包含当前提交的SHA-1 id(所谓的“分离的HEAD”又名。匿名分支:'( “git branch输出中没有分支”。

  2. 当前提交在$ GIT_DIR / refs / head / branch 文件中,或者可以在$ GIT_DIR / packed-refs文件中找到。如果两者都存在,那么松散的ref(在完全限定的分支名称之后的单独文件中)将获胜。

  3. 但我不确定这是否值得。

答案 1 :(得分:2)

事实证明jGit支持“rev-parse HEAD”命令,它与<java jar="jgit...jar" fork="true" args="rev-parse HEAD" outputproperty="git.SHA1" />组合完全符合我的要求,即将SHA1转换为ant属性,以便我可以使用它以后。

答案 2 :(得分:1)

git plugin公开GIT_COMMIT环境变量。

答案 3 :(得分:0)

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