[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:00552] Synchronization ( Re: mhc-snap20000427.tar.gz )



土屋です。


>> On Thu, 27 Apr 2000 02:55:31 +0900
>> "nom" == nom@xxxxxxxxxxxxxxxxxxx (Yoshinari NOMURA) said as follows:

nom> ruby+ssh で Note PC と sync するための script mhc-sync を
nom> 実験的に加えました。

あ、作ってしまわれましたか。うーん、手元でもう少し練ってから提案しよう
と思っていたのですが。

X-SC-Record-Id: を使うと、きちんと重複のないように管理することは確かに
可能ですが、それと、現行の MH 形式とはちょっと相性が悪いのではないでしょ
うか。双方の持っている記事の X-SC-Record-Id: を完全に確認し、更に、同
じ記事を持っている場合にはその修正を統合するなどの操作を提供する必要が
あります。例えば、ホストAで削除されている変更に関して、ホストBで修正が
行われている場合など、ホスト間で変更に矛盾をきたしている場合には特に難
しくなります。これだけの操作を、新規のスクリプトによって提供するのは決
して不可能ではありませんが、非常に難しいと思います。

CVS を利用すれば、通信と修正の統合に関しては問題ありませんが、双方のホ
ストで同じファイル名を使用している場合に問題がありました。そこで、手元
では、X-SC-Record-Id: の値をそのままファイル名として使う版を実装し始め
ています。

すなわち、

  (directory-files (expand-file-name "~/testdir/spool/schedule/2000/04"))

  -> ("."
      ".."
      "200004161807230005.tsuchiya@xxxxxxxxxxxxxxxxxxxxxxxx"
      "200004161820520042.tsuchiya@xxxxxxxxxxxxxxxxxxxxxxxx"
      "CVS")

というようになります。このように変更することによって、ファイル名の一意
性を保証することが可能となり、複数のホスト間でスケジュールの同期をとる
ことが簡単になります。

しかし、このように変更してしまうと、MH 形式に依存して動作している MUA 
はこれを読めないようになってしまいます。ですが、少なくとも、Emacs 上で
動作している MUA であれば、file-name-handler を利用することによって、
この問題を回避できることに気が付きました。

添付した mhc-fake.el を評価すると、次のような結果が得られます。

    (progn
      (mhc-fake-setup)
      (directory-files (expand-file-name "~/testdir/schedule/2000/04")))

    -> ("." ".." "1" "2" "CVS")

ソースコードを見てもらうと良いのですが、これは 
/home/user/testdir/schedule/ 以下にファイルを探しにいこうと Emacs が動
作した瞬間に、それを横取りして、/home/user/testdir/spool/schedule/ 以
下の適当なファイルに対応付けをしています。実際に、この方法によって、
Gnus の MH バックエンドでは、メールを参照できることを確認済みです。


Emacs 以外の環境で動作しているツールについては、対象となるファイルに一
致する正規表現などを書き換える必要がありますが、これはそれほど難しくな
いと思うのですが。

# ruby は読めないので、想像で書いています。すみません。


と長文になってしまいましたが、ホスト間の同期を簡単にとることが出来るよ
うにするため、X-SC-Record-Id: の値をそのままファイル名として使う方式に
変更することを提案します。

Attachment: mhc-fake.el.bz2
Description: Binary data

-- 
土屋 雅稔  ( TSUCHIYA Masatoshi )
    http://www-nagao.kuee.kyoto-u.ac.jp/member/tsuchiya/