2

ハドソンが自分のgitリポジトリをチェックアウトしてマスターにマージするのに問題があります。私はGitにかなり慣れていないので、用語(参照など)はまだ私にとってまったく新しいものです。以下にハドソンコンソールからの出力を含めました。

私が起こっていると思うのは、ハドソンがリモートのマスターブランチをチェックアウトしているが、それを自身のマスターにマージしていないということです。サーバーにSSHで接続し、ワークスペースに移動しgit branchて現在のブランチを入力する* (no branch)と、その「ブランチなし」のログが最新になります。

マスターブランチをチェックアウトすると、Your branch is behind the tracked remote branch 'origin/master' by x commits 明らかにマスターにマージされていません。これはどのように機能しますか、どのように「ブランチなし」にマージできますか?

gitの設定を以下に示します。ハドソンをマスターブランチ(またはそのことについて指定したブランチ)にマージするために何をする必要があるかわからない私は最終的にステージングとプロダクションブランチを持つように設定するので、それがプルすることを確認する必要があります適切なブランチをマージして、デプロイを実行できるようにします。私が見つけたいくつかのチュートリアルからそれらのハドソン設定を取得したので、私はすべてを完全に理解していません。たとえば、構築するブランチが単なるマスターではなく* / masterである理由(マスターだけに変更しても違いはないようです)

ヒントは大歓迎です!!

HudsonGit設定

リポジトリのURL:リポジトリ/home/git/repositories/my_repo.git
の名前:origin
Refspec:+refs/heads/*:refs/remotes/origin/*
構築するブランチ:*/master

HudsonGitコンソールログ

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

バージョン
Hudson:1.337
Git:1.5.6.5
Hudson Gitプラグイン:0.7.3
Linux:Debian Lenny 5.0.3

4

2 に答える 2

2

「ビルド前にマージ」のチェックを外し、バンチをマスターに設定します。ビルド前にマージする必要はありません...トピックブランチをマスター(または任意のブランチ)にマージし、ビルド/統合してビルドが成功した場合にマスター(または任意のブランチ)にプッシュバックするためのものです。

ハドソンプラグインは実際に意図的に(ブランチなしで)あなたを配置しています...そしてそれは最初は少し混乱しますが、これが私の説明の試みです。

git checkout {Some SHA}を実行すると、gitは(分岐なしで)終了するか、いわゆるデタッチヘッド状態になります。SHAは、コミットの一意のIDです(その他のことですが、この説明では、コミット用です)。これは機能です...バグではありません。SHAをチェックアウトするときは、特定のSHAにHEADというタイトルのシンボリックリビジョンを指定する必要があります。心配しないでください...あなたはまだマスターにいますあなたはただ切り離された頭の状態にいます。

hudson gitプラグインがこれを行う理由についての私の仮定は、人々がgitリポジトリにコミットすると、シンボリックHEADリビジョンがリモートリポジトリ内を移動するためです。したがって、プラグインはこのようなコマンドを発行します(平易な英語で)

  1. git fetch(リモートgitリポジトリ内の最新のリモートブランチをリモートブランチのコピーにプルします-これはgit branch -aまたは-rを使用して確認できます)
  2. git rev-parse origin / master(この例では、起点リポジトリのマスターブランチから最新のSHAを取得します。SHAとしてxxxxを使用します)
  3. git checkout xxxx(リモートリポジトリから最新のSHAをチェックアウトします...これにより、ヘッドが切り離された状態になります。)

OK...これでビルドの準備が整いました。(また、最後のSHAを現在のSHAと比較して、2つのビルド間の変更のリストを吐き出すことができるようにするなどの他のことも行います。)

それがあなたを動かすのに役立ち、それを少し説明することを願っています。(または、少なくともインターウェブでこれを見つけた次の人。)

于 2010-06-04T22:55:15.780 に答える
0

これに対する解決策は、HudsonGitプラグインのv1.0のインストールです。これにより、オプションのローカルブランチをHEADとマージできます。

于 2010-08-08T20:46:15.333 に答える