GitLabを使ったプライベートGitリポジトリーの管理を止め改造版 Ginatra にしました。
プライベートGitリポジトリーの管理
私の会社 EY-Ofiice は零細企業なので プライベートGitリポジトリー はGitHub等の有料サービスではなく、さくらクラウド上のサーバーで GitLab を動かしてきました。 しかし、
- 通常の開発は一人でしか行わないのでpull request等の機能はいらない
- GitLabは処理が重くサーバーのメモリーを増やさないと遅すぎる
- 複数人で開発するような仕事ではお客様側でGitHub等を用意してくれる
- 教育でGitLabを使う事があるが、その時だけGitLab用サーバーを用意すれば良い気がする
ということで、あまりメリットを感じていませんでした。
Gitを使い始めた頃は GitWeb でリポジトリーや履歴が表示と。自作した新規リポジトリー作成CGIで運用していました。
Ginatra
Git用のWebツール を見ていたらSinatraベースの Ginatra ( GitHub ) を知り、インストールしてみました。
Ginatraは Gitリポジトリーのファイル(コード)や履歴の表示ツールです。Sinatraベースなので動作も軽いし、メンテも楽で、今風の画面デザインも気に入りました。
Ginatraの改造
ただし、不満もあり Fork し機能を追加。変更しました。
1. リポジトリーの階層化
Ginatraは複数のGitリポジトリーディレクトリーをサポートしていますが、フラットに管理しています。EY-Officeでは docs(ドキュメント), edu(教育用), products(製品)・・・などのディレクトリーの下にGitリポジトリーを置いています。GitLabには Groupという機能がありこれを使っていました。
やはり、グループが無いと不便なので Repo クラスに group属性を追加し group:name をレポジトリーの識別子として使うように改造しました。 また、一覧表示は Bootstrap の Collapse(Accordion) を使い表示するようにしました。
2. 新規リポジトリーの作成
Web上かから新規にGitリポジトリーが作成作成出来るようにしました。Ginatraで使っているRugged (libgit2のRubyインターフェース)に git init のAPIがあったので簡単にできました。
3. その他
- なぜかUTF-8を含むテキストファイルをbinaryとして表示してしまう問題をアドホックに対処
- gitレポジトリーへのアクセスは ssh を使っているので URL表示等を ssh に変更
- Unicornで使う為のコンフィグ等の追加
などです。まだ RSpec を修正していません ^^;