Scalaで開発され、Gitの実装にはJGit(JavaのOSS)を使用したGitHubクローン。
紹介記事:
- イマドキのIDE事情 (162) 手軽に設置できるGithubクローン「GitBucket」を使ってみよう | マイナビニュース
- GitBucketのインストール手順 - Qiita [キータ]
- Git未経験者ですがGitBucket入れてみました…(^^; - Challenge Java EE !
主な特徴
Fork, プライベートリポジトリ, PullRequest 他基本機能群
- Fork機能あり。
- Private Repository作成可能。他のユーザへのアクセス許可設定可能。
- PullRequest機能あり。
- LDAPによる認証設定可能。
- issue, milestone, wiki機能あり。
- 各機能でMarkdown記法利用可能。ただし、細かい方言については検証していない。
- commitメッセージ中の #NNN は、Codeビューなどのcommit log表示では対応する番号のIssueへのリンクになる。
- ただし、Issue側には連携していないらしく、Issue側にcommit履歴が表示されることはない。"close #NNN", "fix #NNN"によるIssue Closeは使えない。
- この辺は将来のリリースで対応される可能性に期待。それっぽいIssueも既に登録されてる。
Gitコマンドは必要か?
不要。JGitを使っているため、Javaの世界だけでGitリポジトリを操作できるようになっている。
HTTPSは使えるか?
TomcatなどServletコンテナ上で使うのであれば、ApacheはnginxなどでHTTPSサーバを立てて、リバースプロキシでGitBucketにつなぐ構成を取れば良い。
warファイルを直接実行するケースでは、1.7以上であれば"--https=true"を指定してHTTPS対応出来る。
※手元ではSSL接続でなんか妙にトラブってて確認できてない。
- Repository URL doesn't show HTTPS
- https not started
対応しているプロトコルと、Gitクライアント側での認証はどうなるか?
GitBucketは今のところhttp(s)プロトコルでのみgitアクセスが可能。
Gitクライアント側では、公開リポジトリならPushするとき、プライベートリポジトリなら加えてcloneするときにユーザ名とパスワードが訊かれる。
Gitクライアントに対する認証方式はBasic認証を使っている。GitHubのHTTP(S)認証に対応しているGitクライアントであれば問題なく認証できるだろう。
git-credential helperなどを使ってストアしておけば、毎回入力する必要も無くなる。
既存のGitリポジトリ(bareリポジトリ)をpushせずに使えるようになるか?
できない。一度GitBucket側でリポジトリを作成した後、Pushする必要がある。
- Using gitbucket on existing repository
GitBucketは自分で使うデータをH2DBで管理してるので、Gitリポジトリそのまま持ち込むことは出来ない。(スレッドにはないが、GitBucket側でリポジトリを作成した後、普通に既存のGitにremoteとして追加してpushすれば良いと思う)
JGitを使っているようだがパフォーマンス的に問題ないか?
元々GitBucketは小さなチームでの利用を想定していて、その範囲では特に問題ない。大規模化した場合のパフォーマンスは、JGitのパフォーマンスに依存し、問題無いと断言できる状況ではなさそう。
- Question: Is JGit good enough?
触ってみた感想
Win7SP1, JDK7上、v1.9のwarファイルをjava -jarで直接起動で確認してみました。
- Private Repository, Fork, PullRequestと機能を確認できました。
- お手軽に動かせて便利でした。
- Windows上のTortoseGit/SourceTreeから日本語ファイル名・ディレクトリ名をpushしたり、中身の文字コードがsjis/euc-jp/utf-8と用意してみましたが、特に文字化けしませんでした。
GitBucket本体ではなく、TortoiseGitとSourceTreeの両方で色々操作してて、「あれ?」ってなったのがいくつかあったのでメモ。
- Gitのhttp(s)スキーマの通信がどうなってるかよくわかりませんが、GitBucketへのcommit/pushでは、TortoiseGitは毎回user/passを訊かれ、SourceTreeは覚えておくチェックボックス有り。
- "git://" や SSH 経由はサポートしてないので、どういうふうにしてるんだろう?
- TortoiseGit, SourceTreeともに、最初に認証に成功するとそのユーザでCommitしたようにGitBucket上で見えてしまう。
- 具体的にはuser1, user2があって、TortoiseGitで最初にuser1でcommit & pushして、続けてもう一度pushするときに今度はuser2のアカウントでpushする。すると、何故かGitBucket上ではuser1でのpushが2つ分表示されて、user2としてのpushにならない。
- 単純に、Gitクライアントの方でユーザ名を user1 のに設定してしまっていたのが原因かな?(push時の認証は、「ユーザ名」に設定した名前とは別で管理されているらしく、「ユーザ名」にuser1を設定しつつ、push時のID/passwordではuser2とそのパスワードでpush出来たりしてる。)
感想
warファイルをdeployすればそれで実行可能になる、非常にお手軽なGitHubクローンです。必要最低限の機能が揃っていることもありますが、Tomcatサーバ上にdeployしてすぐ使えるという点は、開発インフラの管理面からも低コストでありがたいところです。
開発者が1人だけの点が気になりますが、2014-01時点では継続してバージョンアップリリースが出ています。最悪、GitHub上でのOSSですので、forkによる継続性は担保されてます。
社内で勉強やお試しのため、GitHub的なものを建ててみたい、という方にはオススメです。
プレーンテキスト形式でダウンロード