2010-01-03 63 views
2

我有问题得到哈德森来结帐我的混帐回购和合并到主。我对Git相当缺乏经验,所以术语(参考文献等)对我来说仍然是新的。我已经包括从哈德森控制台输出下面:哈德森混帐并入主人

我认为正在发生的事情是,哈德森正在检查远程的主分支,但没有合并到它自己的主人。当我进入服务器并进入工作区并输入git branch时,当前分支是* (no branch),并且该“no分支”的日志是最新的。

如果我查看主分支,我会得到Your branch is behind the tracked remote branch 'origin/master' by x commits所以很明显,它并没有融入主人。这是如何工作的,它怎样才能融入“没有分支”?

我已经在下面列出了我的git设置。不知道我需要做什么才能让哈德森合并到它的主分支(或者我为此指定的任何分支),我最终将设置它来建立分段和生产分支,因此我需要确保它能够拉动并合并适当的分支,以便我可以运行部署。我从我发现的一些教程中得到了这些哈德森设置,所以我没有完全理解所有的东西。为什么例如,要建立的分支是* /主,而不是只有主人(它似乎没有差异,如果我把它改为主人)

任何提示都非常感谢!

哈德逊Git的设置

URL库的:origin
的Refspec:/home/git/repositories/my_repo.git
库的名称+refs/heads/*:refs/remotes/origin/*
分行建:*/master

哈德逊Git的控制台登录

Last Built Revision: Revision 6ffd51afe6b87393d3215ab2bb30dbcd2de73dde (origin/master) 
Checkout:workspace//mnt/data/hudson/jobs/MyApp-master/workspace - [email protected] 
Fetching changes from the remote Git repository 
Fetching upstream changes from /home/git/repositories/my_repo.git 
[workspace] $ git fetch /home/git/repositories/my_repo.git +refs/heads/*:refs/remotes/origin/* 
From /home/git/repositories/my_repo 
    6ffd51a..7333c68 master  -> origin/master 
[workspace] $ git ls-tree HEAD 
Seen branch in repository heroku-devel/master 
Seen branch in repository origin/staging 
Seen branch in repository origin/master 
Seen branch in repository origin/production 
[workspace] $ git merge-base 45ae1c52e350fc1463f8b057d81b8cd4472ecdd9 7333c68d2b959eec6b472d7897ec30a3a3cfb5b5 
Commencing build of Revision 7333c68d2b959eec6b472d7897ec30a3a3cfb5b5 (origin/master) 
Checking out Revision 7333c68d2b959eec6b472d7897ec30a3a3cfb5b5 (origin/master) 
[workspace] $ git checkout -f 7333c68d2b959eec6b472d7897ec30a3a3cfb5b5 
[workspace] $ git tag -a -f -m "Hudson Build #94" hudson-MyApp-master-94 
Recording changes in branch origin/master 
[workspace] $ git log --numstat -M --summary --pretty=raw 6ffd51afe6b87393d3215ab2bb30dbcd2de73dde..7333c68d2b959eec6b472d7897ec30a3a3cfb5b5 

版本
哈德森:1.337
混帐:1.5.6.5
哈德逊Git的插件:0.7.3
的Linux:Debian Lenny 5.0.3

+0

我现在还没有访问我的Hudson服务器,但我有这个工作。无法真正记住确切的语法,但我想用'master'(或任何分支名称)替换refspec中的两个'*'字符。 – 2010-01-03 19:43:53

+0

另外,尝试在修改git配置后清除哈德逊工作区,以确保Hudson下次完全清理结帐。 – 2010-01-03 19:45:13

+0

你是否在改变这两个在哈德森refspec配置和工作区的.git /配置?并通过擦拭工作区,你的意思是删除只检出的文件?或者也是所有的git配置的东西 – brad 2010-01-04 15:51:41

回答

0

解决方法是安装Hudson Git插件v1.0。它允许可选的本地分支将HEAD合并到。

2

只需取消选中 “合并构建之前” 和你banch设置为主。在构建之前,您不希望合并...它将主题分支合并到主(或任何分支)中,然后将其推回到主(或任何分支),如果它构建/集成并且构建成功。

哈德森插件实际上是把你(没有分支)故意......这有点令人困惑,但这里是我的尝试解释。

当你运行git checkout {一些SHA} git结束了(没有分支)或所谓的分离头状态。 SHA是一个提交的唯一ID(和其他的事情,但为了解释它的目的是提交)。这是一个功能...不是一个错误。当你签出一个SHA来告诉你的git你想要在特定的SHA中指定标题为HEAD的符号修订。别担心......你仍然处于主人身边,你只是处于一种独立的状态。

我对hudson git插件为什么这样做的假设是因为符号HEAD修订版在人们提交git repo时在远程存储库中移动。所以插件发布命令,像这样(用简单的英语)

  1. 混帐取(拉在远程的Git库中的最新远程分支机构到我的远程分支机构的副本 - 你可以通过使用Git分支-a或参阅本-r)
  2. git rev-parse origin/master(从本例中的原始回购中的主分支中获取最新的SHA,我们将使用xxxx作为SHA)
  3. git checkout xxxx(检出最新的SHA从远程回购...这将把你置于分离头状态。)

好的...现在我们准备建立。 (它也会做其他事情,比如将最后一个SHA与当前SHA进行比较,以便它可以列出两个构建之间的更改列表。)

希望能帮助您理解并解释一点。 (或者至少下一个在互联网上发现这个问题的人)。

+0

thx作为回应,我正在研究的这个项目暂时搁置,所以当我回到它时,我会验证你所说的话。 – brad 2010-06-06 17:06:12

+0

好吧,哈德森检查出最新的修订版,并让我处于独立的头部状态,将头部合并到主人手中的最佳行动方式是什么?我正在尝试在成功构建Heroku部署上进行部署,这只是将主控推向了heroku远程控制台,但我无法正确更新主控。 – brad 2010-08-08 20:31:42

+0

nm ... git 1.0插件提供了一个可选的本地分支来合并。像魅力一样工作! – brad 2010-08-08 20:45:47