gitosisのインストール
会社で複数人がシェアするリポジトリに関してはsvnを使い続けるつもりではいる.しかし,主に筆者個人しか使わない記事執筆や講演プレゼンはsvnからgitに移そうと思い始めた.
講演プレゼンは直前まで手直しすることが多く,雑誌掲載記事は移動中に推敲することが多く,分散リポジトリで管理したい.講演プレゼンの手直しは時間的にもタイトで失敗が許されない.commitに時間がかかり不安定なsvkでは不満も不安も多い.
gitでサーバ側のアクセス管理というとgitosisに定評があるようだけれども,私が勤める会社のサーバはLeopard Server.何も考えずにインストーラ一発で済むはずがないのであった.
サーバ側のセットアップ
gitのインストール
MacPortsとかが多いかもしれないが,筆者は GIT for OS Xを使っている.アンインストール用のスクリプトも用意されていて,将来XToolsがgitをサポートしても混乱が少なそうというのがその理由.なんにせよ,gitが実行できていればよい,はず.
gitosisのインストール
gitosis自身を引っ張ってくる.
$ /usr/local/git/bin/git clone git://eagain.net/gitosis.git Initialized empty Git repository in /tmp/gitosis/.git/ remote: Counting objects: 614, done. remote: Compressing objects: 100% (183/183), done. remote: Total 614 (delta 434), reused 594 (delta 422) Receiving objects: 100% (614/614), 93.81 KiB | 66 KiB/s, done. Resolving deltas: 100% (434/434), done.
中身はPyhonで書かれているので,installする.
$ cd gitosis $ sudo python setup.py install Password: running install running bdist_egg
ずらずらとログが出て,下記のように止まる.
Installing gitosis-init script to /usr/local/bin Installing gitosis-run-hook script to /usr/local/bin Installing gitosis-serve script to /usr/local/bin Installed /Library/Python/2.5/site-packages/gitosis-0.2-py2.5.egg Processing dependencies for gitosis==0.2 Finished processing dependencies for gitosis==0.2
ここはOSXでなくても手順は同じ.gitosys-* が /usr/local/bin に,Pythonスクリプト群が/Library/Python/2.5/site-packages/に,それぞれ配置されたことを記憶しておく.
特にOSXは,Pythonスクリプトの位置が他のOSと異なるので,後日ハンドパッチを当てようとしてあちこち探し回る羽目に陥りがち.
アカウント名gitの作成
ワークグループマネージャを使って適当に作る.とはいっても適当だとセキュリティホールになるので,そこは常識を持って.筆者は,OpenDirectoryで広く使う機会が想像できなかったので,ローカルアカウントで作った.グループは権限が低いものを選んだ.
次に,Leopard Server のデフォルトでは通っていないパスを通しておく.これを忘れるとクライアントからのclone時にエラーが出る.
$ echo "export PATH=$PATH:/usr/local/bin:/usr/local/git/bin" > ~git/.bashrc
リポジトリの初期化
リポジトリの初期化を行う.筆者の環境では,既に自アカウントにsshの設定があるので,その id_rsa.pub を使った.
$ sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub Initialized empty Git repository in ./ Initialized empty Git repository in ./
ここでアカウント名gitを作る時にホームディレクトリを指定し忘れると下記のようなエラーになる.
Traceback (most recent call last): File "/usr/local/bin/gitosis-init", line 8, in <module> load_entry_point('gitosis==0.2', 'console_scripts', 'gitosis-init')() File "/Library/Python/2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/app.py", line 24, in run return app.main() File "/Library/Python/2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/app.py", line 38, in main self.handle_args(parser, cfg, options, args) File "/Library/Python/2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/init.py", line 128, in handle_args util.mkdir(generated) File "/Library/Python/2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/util.py", line 7, in mkdir os.mkdir(*a, **kw) OSError: [Errno 13] Permission denied: '/gitosis'
さて,これでサーバ側のセットアップは完了らしい.
アカウントの作り方は違うが,その他の設定に関しては,OSX一般で使える(Leopard Server に限らない)のではないかと思う.
クライアント側での設定
ここから先は,OSX以外の環境と変わらない.もっと詳しく書いてあるブログもあるし,先日取り上げた本にも詳しく書いてある.当日記では省略.