home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

技術/RCS/Git/GitHubClone/GitBucket (v2)

技術/RCS/Git/GitHubClone/GitBucket (v2)

技術 / RCS / Git / GitHubClone / GitBucket (v2)
id: 1249 所有者: msakamoto-sf    作成日: 2014-01-11 23:11:03
カテゴリ: Git 

Scalaで開発され、Gitの実装にはJGit(JavaのOSS)を使用したGitHubクローン。

紹介記事:



主な特徴

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接続でなんか妙にトラブってて確認できてない。

対応しているプロトコルと、Gitクライアント側での認証はどうなるか?

GitBucketは今のところhttp(s)プロトコルでのみgitアクセスが可能。
Gitクライアント側では、公開リポジトリならPushするとき、プライベートリポジトリなら加えてcloneするときにユーザ名とパスワードが訊かれる。
Gitクライアントに対する認証方式はBasic認証を使っている。GitHubのHTTP(S)認証に対応しているGitクライアントであれば問題なく認証できるだろう。
git-credential helperなどを使ってストアしておけば、毎回入力する必要も無くなる。

既存のGitリポジトリ(bareリポジトリ)をpushせずに使えるようになるか?

できない。一度GitBucket側でリポジトリを作成した後、Pushする必要がある。

GitBucketは自分で使うデータをH2DBで管理してるので、Gitリポジトリそのまま持ち込むことは出来ない。(スレッドにはないが、GitBucket側でリポジトリを作成した後、普通に既存のGitにremoteとして追加してpushすれば良いと思う)

JGitを使っているようだがパフォーマンス的に問題ないか?

元々GitBucketは小さなチームでの利用を想定していて、その範囲では特に問題ない。大規模化した場合のパフォーマンスは、JGitのパフォーマンスに依存し、問題無いと断言できる状況ではなさそう。

触ってみた感想

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的なものを建ててみたい、という方にはオススメです。



プレーンテキスト形式でダウンロード
現在のバージョン : 2
更新者: msakamoto-sf
更新日: 2014-01-12 23:08:59
md5:15a3280d2ac61bc00a2eb6d65a400244
sha1:69b9fb0aeef48a1ed9fa71262bed2852c8507d56
コメント
コメントを投稿するにはログインして下さい。