Thu, 18 Oct 2007

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だけ限定でアクセス制限かけたらいいのか。なんとなくアクセス制限か けちゃうとアカウント登録しないと見ることもできないのか、それはさすがに不便だよな 、って思いこんじゃってました。そうかそうか、これならこの方法は便利そうだね。

共有する機会があったら試してみよう。


Trackback

Comments



Name:


E-mail: (option)


URL: (option)


The Magic Word: please enter the '0730'.


Comment: