だるろぐ

だるいぶろぐです

人間は複数居るのにアカウントは1個しかない環境でgitを使う

毎度思うがそんな環境あるんですかとか思ってはいけません。
人間は複数居るのにアカウントは1個しかない環境で俺rcを使う為にやった事 - だるろぐ
とか必要になるのかとか考えてはいけません。
でもまあせっかくそういう仕組みがあるんだから覚えといて損は無いと思います。


んで、仮にそんな環境があったとして、例えばsvnだったら $HOME/.subversion/config あたりに store-auth-creds = no
とでも書いて認証情報を記憶させないようにして、commit時に毎回username/password入れればいいんだけど、gitは(普通は)sshで認証するので commit/push とかのときに困るわけです。


そんなときは以下。
git over ssh with options
この上なくシンプルなのでそのまんま。

% chmod +x /path/to/mygit
% cat /path/to/mygit
#!/bin/sh
exec ssh -o User=MYNAME -o IdentityFile=/path/to/my_id_rsa "$@"
% GIT_SSH=/path/to/mygit git ci
% GIT_SSH=/path/to/mygit git push

とかでいい。素敵。.zshrcとかで環境変数に指定してやればmygitの指定も要らんはず。むしろaliasでもいい。
なお秘密鍵置き場の権限は普通の場合同様に設定しないといけない気がする。
めどいのは毎回パスフレーズを問われる。もしsubmoduleとか使ってたら、その回数分だけ訊かれる。
ノンパスの鍵とか使う事は基本的に無いはずなので、堪えましょう。
ssh-agentとかkeychainと連携できるかは分からん。