2010-01-03 49 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