Skip to main content

2 posts tagged with "Gitolite"

View All Tags

· 4 min read

改めて、gitoliteのインストール手順とトラブルシューティング。

gitolite簡単インストール

まずは鍵の準備。 これはクライアントで作業する。
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitolite scp ~/.ssh/id_rsa.gitolite.pub gitserver:

続いて、サーバーで行う作業。

mv id_rsa.gitolite.pub yourname.pub

このyourname.pubはクライアントのユーザ名.pub($USER.pub)にする。

■ sitaramc/gitolite - GitHub

https://github.com/sitaramc/gitoliteオフィシャルサイトに書いてあるまんま。
git clone git://github.com/sitaramc/gitolite cd gitolite src/gl-system-install cd gl-setup ~/yourname.pub
gl-setupの前にcdでホームディレクトリに移動しているのは、authorized_keysが反映されなかったから。 これはうちだけの現象かなぁ?記憶違いかなぁ? gl-setupまで実行したら、~/.ssh/authorized_keysの中を確認しておくといい。
# gitolite start command="... yourname"... # gitolite end
こんな記述が含まれていたらOK! ただし、既にgitoliteユーザでsshログインをする設定がしてあって、 "# gitolite start" の前にgitoliteと同じキーがある場合は注意。
ssh-rsa ABC... # gitolite start command="/home/gitolite/... ssh-rsa ABC... # gitolite end
このような場合はひとつめの公開鍵が利用され、gitoliteのcommandなどが無効になってしまうのでエラーとなる。

トラブルシューティング

gitoliteを使っていて、以下のようなエラーが出るときにチェックしておいた方がいいところ。
Cloning into gitolite-admin... fatal: 'gitolite-admin' does not appear to be a git repository fatal: The remote end hung up unexpectedly

repositories/gitolite-adminはclone出来るんだけど、push出来無いってのもほぼ同様の原因が多そう。

この場合、sshが期待通りに機能していない可能性が高い。 確認ポイントはこの3つ。これが全てではないけど、自分の知っている範囲で。

  • authorized_keys
  • ~/.gitolite/keydir/yourname.pub
  • .ssh/config

ひとつめは既に上に書いた通りgitolite start〜gitolite endの記述があれば大丈夫だと思う。 ふたつめはyourname.pubのファイルがkeydirにあることを確認。 みっつめはクライアントの.ssh/configファイルの確認。 configファイルは存在しなくても問題ないんだけど、sshを便利に使うための設定ファイルだと思っていればよい。 なぜこれを確認するかというと、gitoliteはsshを使うため、接続時の秘密鍵を間違って使っている可能性があり、それをconfigファイルで正そうという意図。

Host gitolite     User gitolite     Hostname gitserver     IdentityFile ~/.ssh/id_rsa.gitolite
例えば、このような設定を記述してあったとする。 本来は、
git clone gitolite@gitserver:gitolite-admin
で接続するが、config設定がしてある場合は次のコマンドで接続可能。
git clone gitolite:gitolite-admin
gitoliteを使おうとする人は、既に秘密鍵(id_rsa)を持ってそうだから、設定しておいた方が無難かも?

· 7 min read

gitを使いたいと思って色々とサービスを調べたんだけど、なんとなく気に入ることが出来なくて…結局、さくらのVPSに構築してみることにした。 まだお試し期間だけど。 今回はUbuntu 11.04にgitリポジトリを用意し、Macからリポジトリを管理する。

gitを管理するにあたって、Gitoliteが使いやすいらしい。 ■ gitのgitによるgit(ユーザ)のためのリポジトリ管理 | Ken's evitation

http://blog.teapla.net/?p=176以前、gitosisについて書いたけど、これよりも細かく管理できるみたい。 使い方は似てるっぽい。

各種サービス

いくつか、有名なサービスのプランを紹介。

■ Plans & Pricing - GitHub

https://github.com/plans
$7/mo 5 Private Repositories 1 Private Collaborator
有名所。 よさそうだけど "5 Private Repositories" ということで、使って壊してを繰り返すことを考えると物足りない? 公開してしまえばいいんだけど…別の理由もあってやめた。 ここはforkして色々出来るのがいいよねっ!って使い方も含めて楽しむのがいいのかも。

■ Pricing/Plans | Assembla

http://www.assembla.com/plans
$100/month
遊びに使う程度だと高い。

■ Plans and pricing for Bitbucket

https://bitbucket.org/plans
Free
ここはgitじゃなくて、mercurialだけど、gitにこだわらないならおすすめ! ちょっと使ってたことあるけど、便利。 安いってもんじゃなく、無料! 数人なら使えるし、wikiも使える。

別の理由 - JIRA

gitを選ばなかったもうひとつの理由。 それはJIRAを使ってみたかったから。 それだけー。

■ JIRA (ジラ) - 価格

http://www.atlassian.com/software/jira/japan-pricing.jsp少人数だったら安いし、使ってみてもいいんじゃないかな?と思ってる。 ただ、これは製品であって、サービスじゃないから自分で管理しなきゃならないけどね。 ちなみに、JIRAもBitbucketもアトラシアン(Atlassian)の製品&サービス。

■ リックソフト株式会社|アトラシアン(Atlassian)製品のプロフェッショナルサービスを提供します

http://www.ricksoft.jp/JIRAの情報はほとんど英語だから、日本語で読みたいとか調べたいなら、このサイトが役立つかも?

本題のGitolite

やっと本題のGitoliteのインストール。 ■ Pro Git - Pro Git 4.8 Git サーバー Gitolitehttp://progit.org/book/ja/ch4-8.htmlこの通りにやれば出来るから、ちょっと気になったことだけメモ。

Gitoliteはサーバー上のgitをクライアントから操作するような仕組みなので、サーバーの管理なんだけど、クライアントで操作する。

サーバー準備

  • git
  • ssh
  • perl
  • gitoliteユーザ

サーバーではこれだけは準備しておく。 gitを使えることが目的だから、gitは必要。 sshはgitを使うときにも、Gitoliteを使うためにも必要。

クライアント準備

  • git
  • ssh
  • ssh-copy-id

gitとsshの必要性はサーバーと同じ。 ssh-copy-idってのは、特定のユーザの公開鍵をサーバーに登録するスクリプト。単なるスクリプトだから、手元に無かったらネットから拾ってくればそのまま使える。

gitoliteユーザのログイン準備

サーバー上のgitoliteユーザがgitをいじれるようにログイン出来るようにする。
ssh-copy-id -i ~/.ssh/id_rsa gitolite@gitserver
id_rsaはsshの秘密鍵のパス。スクリプトを見ると秘密鍵名を元に公開鍵(.pub付きファイル)を利用してる。 gitoliteはサーバー上のgitoliteユーザ。 gitserverはサーバー名。

早速ssh-copy-idを使うんだけど、ssh認証はパスワード認証を許可しておくこと。 ここで鍵を登録してしまえばパスワード認証は拒否設定にしても大丈夫。

ssh gitolite@gitserver pwd

これが実行できて "/home/gitolite" と表示されることを確認しておく。 表示される文字列は環境によるけど、だいたいこうなるでしょう。 逆に言うと、このコマンドが実行できる環境を作るのがssh-copy-idだから、無理してssh-copy-idを使わなくても問題ない。

Gitoliteをインストール

git clone git://github.com/sitaramc/gitolite cd gitolite/src ./gl-easy-install -q gitolite gitserver sitaram
githubからgitoliteを持ってきて、ディレクトリ移動ってのが1, 2行目。 3行目がgitoliteのインストールコマンド。 -qオプションはquiteなので、消すと色々と表示される。 gitoliteはサーバー上のgitoliteユーザ名。 gitserverは先程同様、サーバー名 sitaramはクライアントのユーザ名。

自分の環境ではsakuraサーバーを使ってるし、kenユーザのため、こんな感じに実行した。

./gl-easy-install -q gitolite sakura ken
cd ~/gitolite-admin/

クライアントのホームディレクトリにgitolite-adminが出来ていたらたぶん大丈夫。 gitolite-adminには "conf", "keydir" の2フォルダがある。 confディレクトリには "gitolite.conf" ファイルがある。 keydirディレクトリには "ken.pub" がある。これはgl-easy-installコマンドの最後の引数(クライアントのユーザ名)がファイル名になってる。

設定はgitolite.confを編集、pushすることで行う。 ■ Pro Git - Pro Git 4.8 Git サーバー Gitolite

http://progit.org/book/ja/ch4-8.html#id91編集のしかたなどはこちらをどうぞ。

長々書いたけど、実行したコマンド数を見ればとても簡単にインストール出来ることがわかる。