ラベル git の投稿を表示しています。 すべての投稿を表示
ラベル git の投稿を表示しています。 すべての投稿を表示

2012年2月29日水曜日

GitoliteをMac OS X Lion Serverにインストールする

クライアントからgitolite-adminがclone出来ずに非常に悩んだのだが、最終的には次のサイトを見て分かった。
gitolite で Git リポジトリへの SSH アクセスを制御する
Gitolite git clone error

ポイント
  1. ssh-keygenで生成するファイルは、普段利用しているid_rsa.pubでは無く、別のものにする。
  2. Appleの提供するGitを使うならサーバーにXcodeをインストールする。
  3. 2でインストールされたGitを使うなら、サーバーのgitユーザーのホームフォルダにある.gitolite.rcに下記の一行を追加する。
  4. $ENV{GIT_EXEC_PATH} = "/usr/libexec/git-core";

以上の全てを満たしておかないと、クライアントからgitolite-adminをcloneしようとした時に下記のエラーが出る。
$ git clone GITUSER@SERVERNAME:gitolite-admin
Cloning into 'gitolite-admin'...
Warning: No xauth data; using fake authentication data for X11 forwarding.
Assertion failed: (argv0_path), function system_path, file exec_cmd.c, line 30.
error: git-shell died of signal 6
fatal: The remote end hung up unexpectedly

特に上記ポイントの3番目は忘れがちなので注意が必要だ。

2011年5月29日日曜日

git-upload-pack: not found のとき

自分でgitをインストールしたサーバーにレポジトリを作って、ローカルからgit+sshでcloneしたら怒られた。そんな時の対策。

現象
$ git clone ssh://username@server/~/myrepo.git
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly

サーバーにログインして確認してみると、git-upload-packへのパスはちゃんと通っている。
$ which git-upload-pack
/home/username/local/bin/git-upload-pack

なぜ?
それは、ssh経由でログインした場合、PATHを.bashrcに設定したとしても読み込まれないのが原因。

対策A
--upload-packオプションで毎回指定する

git clone --upload-pack=/home/username/local/bin/git-upload-pack ssh://username@server/~/myrepo.git


対策B
git-configでサーバーのgit-upload-packのパスをconfigに書きこむ
git config remote.origin.uploadpack /home/username/local/bin/git-upload-pack