我们已经从 CVS 迁移到 Git。我们的 Hudson 构建脚本用于在生成的构建中保存 CVS_BRANCH 环境变量的值以及 Hudson BUILD_ID 以供以后调查。
我无法弄清楚 Hudson(或 Git 插件)如何将当前提交的 Git SHA1 名称呈现给 ant 脚本,因为我找不到任何明确的来源说明我应该查看的位置。
如果环境中存在它,我宁愿不调用 git 来获取它,但如果有必要,我可以这样做。
我错过了什么?
最佳答案
好吧,如果你真的想避免调用 git 命令(git describe
或 git rev-parse
),那么你可以执行以下操作:
查找 $GIT_DIR/HEAD 文件。如果它是符号链接(symbolic link),它的目标是当前分支的完全限定名称(例如,如果当前分支是“master”,则为“refs/heads/master”);除非在非常古老的 git 管理的非常古老的存储库中,否则不应该发生。
如果是普通文件,则为
ref: refs/heads/<branch>
两种形式之一(所谓的 symref),或者它包含当前提交的 SHA-1 id(所谓的“分离的 HEAD”又名。匿名分支:git branch
输出中的'(无分支)'。当前提交在 $GIT_DIR/refs/head/branch 文件中,或者可以在 $GIT_DIR/packed-refs 文件中找到。如果两者都存在,则 loose ref(在以完全限定的分支名称命名的单独文件中)获胜。
但我不确定是否值得。
关于java - 使用 Hudson 构建时保存 Git SHA1 类似于 CVS 的 CVS_BRANCH 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3922541/