Ubuntu 12でgitoliteを使ってgitリポジトリを公開する

公開リポジトリを作成するまで

gitのインストール
[shell]sudo apt-get install git[/shell]
gitoliteのインストール
[shell]sudo apt-get install gitolite[/shell]
gitolite用アカウントの作成
[shell]sudo adduser –disabled-password gitolite[/shell]
管理者用として公開鍵を作成
[shell]ssh-keygen -t rsa[/shell]
gitoliteアカウントのホームに転送

sudo cp .ssh/id_rsa.pub /home/gitolite/admin.pub

gitoliteアカウントにログインし、gitolite環境をセットアップ
[shell]sudo su – gitolite
gl-setup admin.pub
exit[/shell]
gitolite用の管理リポジトリをcloneする
[shell]git clone gitolite@localhost:gitolite-admin[/shell]
リポジトリを新規作成する

gitolite/conf/gitolite.conf ファイルに以下の内容を追記
[shell]repo hoge
RW+ = admin[/shell]
変更をpushする
[shell]git commit -m "add repo"
git push[/shell]
これで、hogeリポジトリが作成され、adminがアクセス出来るようになる

別のマシンからcloneする場合、ssh-keygenの部分からやれば良い

ユーザの追加は

gitolite-admin/keydirに作成した公開鍵の名前で作成される

win-gendosu.pub

とやれば、

gitolite-admin/conf/gitolite.conf

で設定するユーザは

win-gendosuとなる。

先のhogeにwin-gendosuの権限も付け加えると
[shell]repo hoge
  RW+ = admin win-gendos[/shell]
となる

gitoliteからcloneする

gitoliteからリポジトリをクローンするには

Linux系の場合
[shell]ssh-keygen -t rsa[/shell]
でキーを作成する

id_rsa.pubを適当な名前でコピーする
例)gendosu-ubuntu.pub

gitoliteのサーバにsftpなどで送り込んで

gitolite-admin/keydirに格納する

gitolite-adminリポジトリをコミットして、プッシュ

これで、gitoliteへ公開鍵を設定完了
[shell]ssh gitolite@サーバ名[/shell]
とやると、gitoliteがメッセージを返してくれるはず

この状態で
[shell]git clone gitolite@[サーバ名]:[リポジトリ名][/shell]
とすると、クローンが作成される

Windows系

環境変数にHOMEという項目を作成して

c:\users\[自分のアカウント名]

を登録する。
要は自分のホームを指定する。

gitを扱う手っ取り早い方法

githubのWindowsクライアントをとりあえずインストールする

ターミナルでgitコマンドが使えるようになるので、そこで
[shell]ssh-keygen -t rsa[/shell]
を実行

c:\users\[自分のアカウント名]\.sshに

id_rsa.pubが出来ていると思うので、適当な名前(クライアントマシン名etc)でコピーする
例)gendosu-win.pub

それをpscpやwinscpなどで、gitoliteのサーバに送り込む

gitolite-admin/keydirに格納する

gitolite-adminをコミット、プッシュする

win側で

c:\users\[自分のアカウント名]\.ssh\configファイルを作成し
以下を追加
[shell]host gitolite
    user gitolite
    hostname 192.168.1.10 #サーバのIPかホスト名
    port 22
    identityfile ~/.ssh/id_rsa[/shell]
コマンドプロンプトで
[shell]ssh gitolite[/shell]
とやると、gitoliteがメッセージを返してくれるはず

gitクローンは
[shell]git clone ssh://gitolite/[リポジトリ名][/shell]
とやる