活动的Git分支是";(无分行)“;论哈德逊词

活动的Git分支是";(无分行)“;论哈德逊词,git,hudson,git-checkout,Git,Hudson,Git Checkout,我的Ant build.xml脚本以 <property environment="env"/> <echo>GIT_BRANCH = ${env.GIT_BRANCH}</echo> <echo>PWD = ${env.PWD}</echo> 从控制台输出中,Hudson知道它正在构建主题分支DPM-48,但未设置环境变量GIT_branch,“GIT branch”返回GIT处于“分离头”状态 * (no branch) mas

我的Ant build.xml脚本以

<property environment="env"/>
<echo>GIT_BRANCH = ${env.GIT_BRANCH}</echo>
<echo>PWD = ${env.PWD}</echo> 
从控制台输出中,Hudson知道它正在构建主题分支DPM-48,但未设置环境变量GIT_branch,“GIT branch”返回GIT处于“分离头”状态

* (no branch)
master
DPM-48
我想知道的是我在哈德逊河上建的哪个分支。一定有办法做到这一点。

注意:作者的评论是指最近(2010年6月),其中提到:

Git构建时,无论发生什么情况,头部都是分离的

虽然还不清楚这个特定问题是否会得到解决(答案表明它实际上可能“按设计工作”!),但它也指允许结帐到本地分支机构


您处于状态,因为git插件现在正在工作,它直接签出了commit SHA1,而不是分支

当您的
头部
被分离时,您所处的状态不会被任何分支记录(这是很自然的——您不在任何分支上)。 这意味着您可以通过切换回现有分支来放弃临时提交和合并

您的构建脚本可以首先尝试


通过查看以下内容实现OP:

如果是这种情况,可能是因为:

GIT_分支
选择多个分支进行生成时未设置

当试图确定当前构建所基于的分支时,我发现当选择构建多个分支时,
GIT\u branch
环境变量没有设置

这与其说是一个bug,还不如说是一个特性请求,我认为,
GIT_分支
env变量只在有一个分支的情况下设置,因此,如果有多个分支,它就不相关了。我不确定在这种情况下如何为多个分支格式化env var

我认为应将
GIT_BRANCH
设置为当前正在构建的分支。 比如,如果构建是在主版本上,它将包含主版本

例如,这将有助于将此构建期间构建的分支推送到另一个远程服务器。 或者触发另一个具有要生成的正确分支集的生成

有点像镜子

出于某种原因,Git插件开始为
Git\u分支
环境变量传递空值。
这导致Maven插件在
System.getProperties().putAll(systemProps)
调用中失败

解决方案是使用“
master
”作为默认Git分支,而不是“
**
”或空字符串

决心

在中看到abayer的评论后,我采取了以下步骤:

  • 使用Hudson插件管理器,我更新了我的Hudson Git插件(1.1版)以获得abayer的修复
  • 使用Hudson作业配置,我单击了“源代码管理”->“要构建的分支”下的“高级”按钮。然后,我将“localbranchtouse”改为某个名称。不管发生什么事
  • 然后我点击了“保存”按钮,开始了一个“立即构建”的构建

构建日志显示

[workspace] $ git.exe checkout -b ChangeTester d6caef27759495c5714923c1ddf19551a70d6083
而不是

[workspace] $ git.exe checkout -f d6caef27759495c5714923c1ddf19551a70d6083
这意味着我没有处于“分离头”状态,因此可以进行提交、创建标记和推送

我可以使用'git rev parse HEAD'获取提交散列,并在'git show ref'的输出中找到该散列,以便在需要时找到分支的真实名称


现在,我可以将成功的构建标签推送到我的git repo上。

非常感谢您分享此解决方案

我很难找到这个可选的对话框来设置本地分支,为了向其他人表明这也是当前的方法,2015年,我想附上一些jenkins当前gui对话框的屏幕截图


这就是问题所在。我不知道如何找到触发Hudson构建的分支名称。@milkplus:但是我提到的链接应该包含各种脚本(包括我回答中的
what branch
脚本),以精确地找到分支名称。我发现Hudson的Git SCM插件覆盖了一个buildEnvVars()方法来设置Git_BRANCH环境变量,但它没有通过使用Git_BRANCH=${env.Git_BRANCH}进入ant脚本。好的,我已经在我的答案中集成了它,并引用了一个可能解释您当前情况的问题。似乎暗示哈德逊河上分离的分支问题可能会得到解决。我要确保我有最新版本的hudson和git插件。好的,我已经在我的答案中包含了这个问题的参考。我还将包括你的测试结果(我想是哈德逊1.379)我浪费了几个小时试图弄明白这一点。。。非常感谢。这也符合这个答案
<property environment="env"/>
<echo>GIT_BRANCH = ${env.GIT_BRANCH}</echo>
[workspace] $ git.exe checkout -b ChangeTester d6caef27759495c5714923c1ddf19551a70d6083
[workspace] $ git.exe checkout -f d6caef27759495c5714923c1ddf19551a70d6083