我遇到了哈德森检查我的git repo并合并为master的问题。我对Git相当缺乏经验,所以术语(参考等等)对我来说仍然是个新手。我已经在下面的Hudson控制台中输入了输出:
我认为正在发生的事情是Hudson正在检查遥控器上的主分支,但没有将它合并到它自己的主机中。当我进入我的服务器并转到工作区并输入git branch
时,当前分支为* (no branch)
,而“无分支”的日志是最新的。
如果我查看主分支,我得到Your branch is behind the tracked remote branch 'origin/master' by x commits
所以显然它没有合并到主人。这是如何工作的,如何合并到“无分支”?
我在下面列出了我的git设置。不知道我需要做些什么才能让哈德森合并到它的主分支(或者我为此指定的任何分支)我最终将它设置为具有分段和生产分支,所以我需要确保它拉动并合并适当的分支,以便我可以运行部署。我从我发现的一些教程中得到了那些哈德森设置,所以我并不完全理解一切。例如,为什么要构建的分支是* / master而不是master(如果我将其更改为master,它似乎没有区别)
非常感谢任何提示!!
Hudson Git设置
存储库的网址:/home/git/repositories/my_repo.git
存储库名称:origin
Refspec:+refs/heads/*:refs/remotes/origin/*
要构建的分支:*/master
Hudson Git控制台日志
Last Built Revision: Revision 6ffd51afe6b87393d3215ab2bb30dbcd2de73dde (origin/master )
Checkout:workspace / /mnt/data/hudson/jobs/MyApp-master/workspace - hudson.remoting.LocalChannel@16a31bf
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
Git:1.5.6.5
Hudson Git插件:0.7.3
Linux:Debian Lenny 5.0.3
答案 0 :(得分:2)
只需取消选中“在构建前合并”并将你的banch设置为master。你不希望在构建之前合并...它是用于将主题分支合并到主(或任何分支),然后将其推回到主(或任何分支),如果它构建/集成并且构建成功。
哈德森插件实际上是故意让你(没有分支)...而且起初有点令人困惑,但这是我尝试解释。
当你运行git checkout {Some SHA} git结束时(没有分支)或者所谓的分离头状态。 SHA是提交的唯一ID(以及其他内容,但出于解释的目的,它是用于提交)。这是一个功能......不是错误。当您检查SHA告诉git时,您想要将标题为HEAD的符号修订指向特定的SHA。别担心......你还处于掌握状态,你只是处于一个超级头脑状态。
我对hudson git插件为什么这样做的假设是因为当人们提交git repo时,符号HEAD修订版在远程存储库中移动。所以插件发出这样的命令(用简单的英语)
好的......现在我们已经准备好了。 (它还可以执行其他操作,例如将最后一个SHA与当前SHA进行区分,以便它可以在两个构建之间发出更改列表。)
希望有助于您前进并解释一下。 (或者至少是下一个在互联网上发现这个的人。)
答案 1 :(得分:0)
解决方案是Hudson Git插件的安装v1.0。它允许可选的本地分支将HEAD合并到。