【发布时间】:2010-01-03 16:48:51
【问题描述】:
我在让 hudson 签出我的 git repo 并合并到 master 时遇到问题。我对 Git 相当缺乏经验,所以术语(参考文献等)对我来说仍然是全新的。我在下面包含了来自 Hudson 控制台的输出:
我认为正在发生的事情是 Hudson 正在检查远程上的 master 分支,但没有将它合并到它自己的 master 中。当我 ssh 进入我的服务器并进入工作区并输入 git branch 时,当前分支是 * (no branch) 并且该“无分支”的日志是最新的。
如果我检查 master 分支,我会得到 Your branch is behind the tracked remote branch 'origin/master' by x commits 所以很明显它没有合并到 master 中。但是,这是如何工作的,它如何合并到“无分支”中??
我在下面列出了我的 git 设置。不知道我需要做什么才能让 hudson 合并到它的主分支(或我为此指定的任何分支)我最终会将它设置为有一个登台和生产分支,所以我需要确保它拉并合并正确的分支,以便我可以运行部署。我从找到的一些教程中获得了这些哈德森设置,所以我并不完全理解所有内容。例如,为什么要构建的分支是 */master 而不是 master(如果我将其更改为 master 似乎没有什么区别)
非常感谢任何提示!
Hudson Git 设置
存储库的 URL:/home/git/repositories/my_repo.git
存储库名称:origin
参考:+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
吉特:1.5.6.5
Hudson Git 插件:0.7.3
Linux:Debian Lenny 5.0.3
【问题讨论】:
-
我现在无法访问我的 Hudson 服务器,但我可以使用它。不太记得确切的语法,但我想我只是用
master(或任何分支名称)替换了 refspec 中的两个*字符。 -
另外,在对 git 配置进行更改后尝试清除 Hudson 中的工作区,以确保 Hudson 下次进行完全干净的结帐。
-
您是说要在 hudson refspec 配置和工作区的 .git/config 中都进行更改吗?通过擦除工作区,您的意思是只删除签出的文件吗?或者还有所有 git config 的东西
-
所以我擦除了整个工作区目录以强制 hudson 再次克隆 repo,并将 refspec 更改为 +refs/heads/master:refs/remotes/origin/master。我还在高级合并选项中指定了要合并到的“主”分支,但它仍然是相同的。主分支没有被更新或合并到,只是“无分支”。
-
好的,我很确定这是一个错误,除非其他人可以给我一些提示。哈德森记录它如何检查 git repo 是: git fetch /home/git/repositories/agent.git +refs/heads/master:refs/remotes/origin/master git ls-tree HEAD git rev-parse master git checkout -f last_rev git merge new_rev 是 git checkout 搞砸了,它现在在 *no 分支上,在那个 checkout 之后,所以与新 rev 的合并也是到 *no 分支,并且永远不会触及 master
标签: git continuous-integration hudson gitosis