$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

さくらインターネットをgitの共用リポジトリにする方法

 今回は、さくらインターネットに共用リポジトリを作成するやり方を書きます。少しはまりました。また、gitのインストール方法はhttp://d.hatena.ne.jp/shiba1029196473/20100219に書いてあるので、参考にしてください。

ローカルにリポジトリを作成

これは簡単です。

[local]$ mkdir gitTest
[local]$ cd gitTest
[local]$ git init

これで、ローカルリポジトリが完成。

さくらインターネット内に共用リポジトリを作成

これも、難しくありません。わかりやすくするために、共用リポジトリはすべてgitディレクトリに入れます。

[server]$ mkdir -p git/gitTest.git
[server]$ cd git/gitTest.git
[server]$ git --bare init --share

これで完成。gitの共用リポジトリを作る際は、--bare,--shareオプションをつけるみたいです。

ローカルリポジトリに共用リポジトリを登録

http://d.hatena.ne.jp/shiba1029196473/20100323のやり方をつかってできます。

[local]$ git remote add origin ssh://username@username.sakura.ne.jp/home/username/git/gitTest.git
[local]$ git config branch.master.remote origin
[local]$ git config branch.master.merge refs/heads/master

SSHトンネリングへの対応

普通なら、上までの手順で共用リポジトリができていますが、さくらインターネットではエラーがおきます。

[local]$ cd gitTest
[local]$ git push
bash: git-receive-pack: command not found
fatal: The remote end hung up unexpectedly

もちろんpullもできません。これは、ssh経由でコマンドを実行した場合、.bashrc等が読み込まれないため、起こります。普通だと、.ssh/environmentにPATHを書いて、/etc/ssh/sshd_configのPermitUserEnvironmentという項目をyesにすることで対処できます。しかし、さくらインターネットでこの方法は使えないので、次の方法で対処します。

[server]$ ln -s /home/username/local/git/bin /home/username/bin

これは、sshトンネリングのPATHが/home/username/binには通っているので、そこにシンボリックを張ってしまえばいいってだけの対応です。さくらインターネットではこれぐらいしか対処できないのかもしれません。

※3/28追記

最初の一回目のpush

最初の一回目は、共用リポジトリにmasterブランチがないため、git pushが成功しません。最初の一回目は素直にパスを指定してpushしましょう。

[local]$ cd gitTest
[local]$ git push ssh://username@username.sakura.ne.jp/home/username/git/gitTest.git master