【问题标题】:Hudson git doesn't merge into masterHudson git 没有合并到 master
【发布时间】: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


【解决方案1】:

只需取消选中“在构建前合并”并将您的班组设置为主。您不想在构建之前合并...它用于将主题分支合并到主分支(或任何分支),然后如果它构建/集成并且构建成功,则将其推回主分支(或任何分支)。

hudson 插件实际上是故意让你进入(没有分支)......起初有点令人困惑,但这是我的解释尝试。

当您运行 git checkout {Some SHA} 时,git 最终会处于(无分支)或所谓的分离头状态。 SHA 是提交的唯一 id(和其他东西,但出于本解释的目的,它用于提交)。这是一个功能......不是错误。当你检查一个 SHA 时,你告诉 git 你想将标题为 HEAD 的符号修订指向一个特定的 SHA。不用担心...您仍然在 master 上,您只是处于超然状态。

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

  1. git fetch(将远程 git 存储库中的最新远程分支拉到我的远程分支副本中 - 您可以使用 git branch -a 或 -r 来查看)
  2. git rev-parse origin/master(在本例中,从原始仓库中的 master 分支获取最新的 SHA,我们将使用 xxxx 作为 SHA)
  3. git checkout xxxx(从远程仓库检查最新的 SHA...这将使您处于分离的头部状态。)

好的...现在我们可以开始构建了。 (它还执行其他操作,例如将最后一个 SHA 与当前 SHA 进行比较,以便它可以吐出两个构建之间的更改列表。)

希望对您有所帮助并稍作解释。 (或者至少是在互联网上找到这个的下一个人。)

【讨论】:

  • 感谢您的回复,我正在进行的这个项目被搁置了,所以当我回到它时,我会验证你所说的。
  • 好的,所以哈德森检查了最新的修订版,让我处于一个分离的头部状态,我最好的做法是将那个头部合并到主人身上?我正在尝试在成功构建时进行 Heroku 部署,这只是将 master 推送到 heroku 远程,但我永远无法正确更新 master。
  • nm... git 1.0 插件提供了一个可选的本地分支来合并。像魅力一样工作!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-14
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    相关资源
    最近更新 更多