GitBucket – Pull Request機能を利用した開発手法
2015.04.10

こんにちは、ユニトラストの稲邑です。
今回はGitbucketの紹介と、導入方法、Pull Request機能を利用した開発手法の一例を紹介します。
■経緯
GitHubを利用してプロジェクトのソースコードを管理することが多くなっていますが、
コードを外部サービスに配置してはいけないといったことがよくあります。
GitHubを使いたいけど、お金がかかる、Gitで管理し、さらにWebの使い勝手の良いUIが欲しい!
という方に使ってみて欲しいのがGitBucketです。
■GitBucketとは
- GitHubクローンなリポジトリ管理システム
- GitHubと同じようにPull Requestを利用した開発フローが中心
- 自前のサーバにインストール出来る
- Scalaで開発されている。
→要約すると、自前サーバにGitHubっぽいものが立てて使えます!というものです。
さっそくですが、GitBucketをインストールしてみましょう。
ここでは、簡単にインストールし、動作を体験してもらうためにMac上でインストールします。
■インストール方法
※環境
- Mac OSX
- Java7
gitbucket.warをGitHubよりダウンロードし、
ダウンロードしたディレクトリにて以下のコマンドでjavaを使って実行します。
※ここでは、GitBucket 2.4.1のバージョンをインストールしました。
・JavaでGitBucketを起動
java -jar gitbucket.war
・起動ログ
2015-04-06 21:20:37.086:INFO:oejw.StandardDescriptorProcessor:NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet 4 06, 2015 9:20:37 grizzled.slf4j.Logger info 2015-04-06 21:20:38.268:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080
上記の通り起動したのを確認したら、ブラウザから「http://localhost:8080」へアクセスします。
上記ログイン画面が表示されたら起動成功。root/rootでログインできます、簡単ですね。
■リポジトリの作成
rootでログインできたら、[New Repository] ボタンを押下し、
以下の画面にならってtestリポジトリを作成します。
[Create repository]で新規リポジトリ作成
上記の通り、testリポジトリが作成されました。
■プロジェクトのソースコードのcommit&push
testプロジェクトを作成し、GitBucketへcommit,pushします。
任意のディレクトリにtestディレクトリを作成し、
リポジトリのトップ画面に記載してある通り、以下のコマンドを順に実行します。
touch README.md git init git add README.md git commit -m "first commit" git remote add origin http://localhost:8080/git/root/test.git git push -u origin master
push後に以下のようにGitBucket上でmasterブランチが生成されていればOKです。
—————————————————————————-
ここで、Pull Requestを利用した開発手法について紹介します。
■Pull Requestとは?
- Pull Requestとは、gitのブランチをリポジトリ管理者(コミッタ)にマージする依頼のこと。
- 開発者はissueごとにマスターブランチから派生させたトピックブランチで開発を行い、開発完了後にPull Requestを発行する。
- リポジトリ管理者はPull Requestの内容を精査しmasterブランチに適宜マージ/Rejectを行う。
■Pull Requestを利用した開発フローの例
- 開発者はマスターブランチからトピックブランチを作成し、トピックブランチで改修を行う。
- 改修完了後、Pull Requestを行うことでマスターブランチへのマージを依頼する。
- リポジトリ管理者は、Pull Requestの内容を確認し、マージ/リジェクトを行う。
では、実際にGitBucket上でPull Requestを行ってみましょう。
■ブランチの生成
・以下のコマンドで、masterからdev-testブランチを生成します。
$ git checkout -b dev-test origin/master
・以下のコマンドで、カレントブランチがdev-testになっていることを確認。
$ git branch * dev-test master
・ファイルの作成、git追加、commit、pushの実施
同ディレクトリで以下のコマンドを実行する。
$ vi test.txt ←”this is test!”という内容で保存 $ git add test.txt $ git commit -m "test commit” $ git push origin dev-test
以下はpush時のログ
Counting objects: 4, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 281 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: Updating references: 100% (1/1) To http://localhost:8080/git/root/test.git * [new branch] dev-test -> dev-test
これでdev-testブランチがpushされました。
以下のようにpushされたブランチがGitBucket上で表示されることを確認します。
↑新しいdev-testブランチがGitBucket上に展開されることが確認できました。
■GitBucket上でのPull Requestの発行
では、実際にGitBucket上でのPull Requestの発行してみます。
以下の手順で、pull requestを発行できます。
・testプロジェクトのトップ画面で[pull request]リンクを押下
・[New pull request]ボタンを押下
・[Edit]を押下し、左側にマージ先ブランチ[master]、右側にマージ元ブランチ[dev-test]を選択する。
↑左がマージ先(master)、右がマージ元(dev-test)となります。
・差分が表示されたら、[Click to create a pull request for this comparison]を押下する。
マージ元でdev-testブランチを選択されると、以下のようにマージ対象の差分が表示されます。
(dev-testブランチにtest.txtが追加されたことが確認できる。)
・↑の画面で[Click to create a pull request for this comparison]を押下し、
pull requestのタイトル、メッセージを入れて[Send Pull Request]を押下します。
・↑の画面で[Send pull request]を押下すると、pull requestが発行されます。
↑の通り、pull requestが発行されました!
上記画面で管理者がpull requestの内容と、ソースコードを確認し、
[Merge pull request]ボタンを押下すれば、Gitによる自動マージが行われます。
逆にpull requestによるマージ拒否する場合は、[Close]ボタンでpull requestの却下、クローズとなります。
なお、pull requestのマージ後については、作成したブランチは適宜削除するなどの対応を行った方が良いです。
(開発ブランチが増えすぎると、わかりずらく、重くなってしまうため。)
■あとがき
実運用する際は、Gitバージョン管理の安定稼働、複数ユーザーアクセスによる負荷を考慮すると、
Linux上でアプリケーション・サーバー(Tomcat 7.x、Jetty 8.x等)と組み合わせて構築する形が望ましいです。
また、GitBucketはJenkinsのGitBucket Pluginを入れて連携することや、
Redmineでチケットとコミットを関連づけることも可能です。
以上です。
みなさんもGitBucketを使ってみてはいかがでしょうか。
CONTACT
お問い合わせ
あなたの「想い」に挑戦します。
どうぞお気軽にお問い合わせください。
受付時間:平日9:00〜18:00 日・祝日・弊社指定休業日は除く
