代码之家  ›  专栏  ›  技术社区  ›  brad

Hudson Git不合并到Master

  •  2
  • brad  · 技术社区  · 15 年前

    我无法让哈德森签出我的Git回购协议并合并到Master中。我对git相当缺乏经验,所以术语(refs等)对我来说还是全新的。下面是哈德逊控制台的输出:

    我认为哈德逊正在检查遥控器上的主分支,但并没有将其合并到自己的主分支中。当我ssh进入我的服务器并进入工作区并输入 git branch 当前分支是 * (no branch) “没有分支”的日志是最新的。

    如果我查一下总分行,我会 Your branch is behind the tracked remote branch 'origin/master' by x commits 所以很明显,它不会合并成master。但是,这是如何工作的,它怎么能合并成“无分支”??

    我在下面列出了我的Git设置。不知道我需要做什么才能让哈德逊合并到它的主分支(或者我为此指定的任何分支)中,我最终会将其设置为拥有一个登台和生产分支,因此我需要确保它提取并合并正确的分支,以便我可以运行部署。我从我找到的一些教程中得到了这些哈德逊设置,所以我不完全理解所有内容。例如,为什么要构建的分支是*/master而不是just master(如果我将其更改为just master,似乎没有什么区别)

    任何提示都非常感谢!!

    哈德逊Git设置

    存储库的URL: /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
    吉特: 1.5.6.5
    Hudson Git插件: 0.7.3
    Linux: Debian Lenny 5.0.3

    2 回复  |  直到 14 年前
        1
  •  2
  •   Clintm    15 年前

    只需取消选中“在生成前合并”并将Banch设置为Master。不希望在生成前合并…它用于将主题分支合并到master(或任何分支)中,然后将其推回到master(或任何分支),前提是它构建/集成并且构建成功。

    哈德逊插件实际上是故意把你放在(没有分支)上…一开始有点困惑,但我想解释一下。

    当你运行git checkout时,一些sha-git最终会出现在(没有分支)或者所谓的分离头状态。sha是提交的唯一ID(以及其他事情,但为了解释这个问题,它是提交的)。这是一个功能…不是虫子。当你检查出一个sha,你的告诉git,你想把标题为head的符号修订指向一个特定的sha。别担心…你仍然是主人,你只是处于超然状态。

    我对HudsonGit插件为什么会这样做的假设是,当人们提交Git报告时,符号头部修订会在远程存储库中移动。所以这个插件会发出这样的命令(纯英语)

    1. git fetch(将远程git存储库中最新的远程分支拉到我的远程分支副本中-您可以通过使用git branch-a或-r看到这一点)
    2. git rev parse origin/master(从origin repo的master分支中获取最新的sha,在本例中,我们将使用XXXX作为sha)
    3. Git Checkout XXXX(从远程报告中检查最新的sha…这将使您处于分离的头部状态。)

    好啊。。。现在我们准备好了。(它还执行其他操作,如将最后一个sha与当前sha进行比较,以便它可以在两个构建之间显示更改列表。)

    希望这有助于你去解释一下。(或者至少是下一个在互联网上找到这个的人。)

        2
  •  0
  •   brad    14 年前

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