ssh経由でmercurialのリモートリポジトリを更新
せっかくmercurialをアップデートしたので、ssh経由でリモート/ローカルでのリポジト リの同期を試してみようと JapaneseMultipleCommitters - Mercurial の「SSHでユーザごとのアカウントを利用する(訳者による追加)」を参考にアクセスしてみた。
% hg clone ssh://user_name@xxx.xxx.xxx//home/xxxx/xxx remote: zsh: command not found: hg abort: no suitable response from remote hg!
hgコマンドなんて知りませんって。
色々調べてたら、sshでリモートからコマンドを実行する時には、 $HOME/.xxxファイル は読み込んでくれないんだね。hgコマンドは、 $HOME/local/bin/hg に置いてあって .zshrcにてPATHに追加してるので、そんなん知らないって言われちゃってると。
sshd_configのmanとか見ると、PermitUserEnvironmentが有効なら、 $HOME/.ssh/environment とかにPATHを追加したらいけそうなことが書いてあったので試してみたけど、どうやら駄 目っぽい。まぁレンタルサーバだし有効じゃぁないわな。 /etc/ssh/sshd_config はPermission deniedで見れなかったのでわからんけど。
で、じゃあどのPATHなら有効なんだろうと思って、下記コマンドを実行してみたところ、 うちのレンタルサーバでは、 $HOME/bin がユーザ用のPATHとして設定されていた。
ssh user_name@xxx.xxx.xxx 'echo $PATH'
では、ということで早速 $HOME/local/bin/hg から $HOME/bin/hg へとリンクを 張ってリトライ。
% hg clone ssh://user_name@xxx.xxx.xxx//home/xxxx/xxx remote: Traceback (most recent call last): remote: File "/home/xxx/bin/hg", line 4, in ? remote: import pkg_resources remote: ImportError: No module named pkg_resources abort: no suitable response from remote hg!
あれ?今度はpkg_resourcesモジュールが見つからんとな。あぁ、これも.zshrcに PYTHONPATHとして、 $HOME/local/lib/python/site-packages を設定していた。
うーん、これはどうしたもんかな?とちょっと悩んだけど普通のモジュールと一緒でスク リプトの先頭に import user を追加したら良かった。これで無事にローカルホストか らリモートホストのリポジトリにアクセスできるようになりました。
こんな感じ。
% hg clone ssh://user_name@xxx.xxx.xxx//home/xxxx/xxx destination directory: xxx requesting all changes adding changesets adding manifests adding file changes added 3 changesets with 3 changes to 1 files 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
ローカルリポジトリの変更をリモートリポジトリに反映するには、ローカルリポジトリで ファイルを修正し、 hg ci した後に、 hg push とする。
上記でサーバ側からcloneした時点で、 ローカルリポジトリ/.hg/hgrc に
[paths] default = ssh://xxx.xxx.xxx//home/xxxx/xxx
とリモートリポジトリのpath情報が書かれているので、単に hg push とやったら 良かった。
% hg push pushing to ssh://user_name@xxx.xxx.xxx//home/xxxx/xxx searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 1 changesets with 1 changes to 1 files
一人でやるならこれで十分かな。でもやっぱり複数人で共同作業するなら(今のところ予 定ないけど)HTTP経由でやれた方が便利だよね。
steps to phantasien t(2007-05-19) にある.htaccessの設定を再度見直してみる。
あ、なるほどPOSTだけ限定でアクセス制限かけたらいいのか。なんとなくアクセス制限か けちゃうとアカウント登録しないと見ることもできないのか、それはさすがに不便だよな 、って思いこんじゃってました。そうかそうか、これならこの方法は便利そうだね。
共有する機会があったら試してみよう。

