#navi_header|技術| Scalaで開発され、Gitの実装にはJGit(JavaのOSS)を使用したGitHubクローン。 - takezoe/gitbucket -- https://github.com/takezoe/gitbucket 紹介記事: - イマドキのIDE事情 (162) 手軽に設置できるGithubクローン「GitBucket」を使ってみよう | マイナビニュース -- http://news.mynavi.jp/column/ide/162/ - GitBucketのインストール手順 - Qiita [キータ] -- http://qiita.com/sudahiroshi/items/78b7cf006d07db44f62c - Git未経験者ですがGitBucket入れてみました…(^^; - Challenge Java EE ! -- http://kikutaro777.hatenablog.com/entry/2013/10/11/201051 #more|| ---- #outline|| ---- * 主な特徴 ** 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リポジトリを操作できるようになっている。 - 参考:GitBucketの依存ライブラリ -- https://github.com/takezoe/gitbucket/blob/a4cb5c991c3f78dc850673622c472e04ff5908ed/project/build.scala ** HTTPSは使えるか? TomcatなどServletコンテナ上で使うのであれば、ApacheはnginxなどでHTTPSサーバを立てて、リバースプロキシでGitBucketにつなぐ構成を取れば良い。 warファイルを直接実行するケースでは、1.7以上であれば"--https=true"を指定してHTTPS対応出来る。 ※手元ではSSL接続でなんか妙にトラブってて確認できてない。 - Repository URL doesn't show HTTPS -- https://github.com/takezoe/gitbucket/issues/162 - https not started -- https://github.com/takezoe/gitbucket/issues/239 ** 対応しているプロトコルと、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 -- https://github.com/takezoe/gitbucket/issues/132 GitBucketは自分で使うデータをH2DBで管理してるので、Gitリポジトリそのまま持ち込むことは出来ない。(スレッドにはないが、GitBucket側でリポジトリを作成した後、普通に既存のGitにremoteとして追加してpushすれば良いと思う) ** JGitを使っているようだがパフォーマンス的に問題ないか? 元々GitBucketは小さなチームでの利用を想定していて、その範囲では特に問題ない。大規模化した場合のパフォーマンスは、JGitのパフォーマンスに依存し、問題無いと断言できる状況ではなさそう。 - Question: Is JGit good enough? -- https://github.com/takezoe/gitbucket/issues/98 * 触ってみた感想 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的なものを建ててみたい、という方にはオススメです。 #navi_footer|技術|