[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[mhc:00506] Re: mhc-cvs.el
白井です。ちなみに私の実験環境は
・UNIX: CVSROOT=/cvsroot (いつも online)
・WinNT: CVSROOT=:ext:shirai@UNIX (ssh、いつも online)
・Win95: CVSROOT=:pserver:shirai@UNIX (online/offline 両用)
でやっています。
cvs はすべて Version 1.10.5 で、Win の方は Cygwin 環境で自前で
make したものです。
# きっと、Win32 native な cvs では crlf とかの関係でうまく動かな
# いんじゃないなかなぁ、という気もします。(けど、私にはわからない)
From: TSUCHIYA Masatoshi <tsuchiya@xxxxxxxxxxxxxxxxxxxxxxx> さん曰く
Subject: [mhc:00503] Re: mhc-cvs.el
Message-ID: <mpad7nnoeyn.fsf@xxxxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 18 Apr 2000 19:56:03 +0900
白井> ですね。できたら、MUA に関わらず、mhc 内部で close していた方が
白井> いいと思います。
土> これなんですけど、現状の MHC には、全体を初期化したり後始末をしたりす
土> るためのまとまった場所がないので、どこに追加するのが適当なのか、ちょっ
土> と判断出来ませんでした。乃村さんの判断を待ちたいと思います。
ふむ。了解です。
白井> 1. mhc-file-sync の結果で "M" の file や、add した file はその場
白井> で commit した方がいいんじゃないかと思います。
土> はい、update した時の結果を解析するようにしました。また、Conflict が発
土> 生した場合も、明示的に修正を求めるようにしました。
conflict の再編集も確認しました。
白井> (2) cvs command の出力を解析して、その directory に
白井> mhc-misc-touch-directory() する。
土> 後者で対応しました。
どうもです。順調です。
白井> # ありゃりゃ、Windows だと call-process に
白井> # "CVSIGNORE=.mhc-mtime trash" が引き継がれていないみたい。
白井> # Windows 向けだと (getenv "CVSIGNORE") (setenv "CVSIGNORE" "hoge")
白井> # かな?
土> 環境変数で制御するのを止め、コマンドライン引数で制御するようにしました。
これ、実は私の勘違いだったようです。ごめんなさい。最初に import
するとき、".mhc-mtime" も import しちゃったからみたいでした。だ
けど、引数で制御した方がいいですね。
## 一から import したけど、今度は "schedule/trash" をいれてしまっ
## た。どうするのが一番いいのかわかんないから、また一からやろう ^^;;;
白井> 3. 現在の mhc-file/offline の値をどこかに表示する option がある
白井> と NotePC はうれしいです。あと、これぐらいの message 表示は欲し
白井> いかな?
土> モードラインに表示するようにしました。ただし、表示/非表示を制御するよ
土> うにはしていません。
後述します。
土> ところで、CVS による管理の欠点として次のような点がありますので、運用上、
土> 少し注意して扱う必要があるかと思います。
土> (1) 最後に追加したスケジュールを削除すると、次にスケジュールを追加する
土> ときに、現行の mhc は、削除されたファイルと同じ番号のファイルを作
土> 成しようとする。このため、CVS の履歴が混乱する。
そんなに modify するものでも無いし、履歴が混乱しても問題ないと思
います。逆に履歴情報は無くても良かったりしますけどね。
土> (2) サーバー側とクライアント側で同時に異なるスケジュールを追加した場合
土> には、単純に conflict するため、手作業での修正が大きく必要になる。
現在の mhc は single user のみ対応なので、今のところは簡単な運用
上の注意で大丈夫でしょうね。今までの NotePC との sync 方法を考え
ると天国です。:-)
以下、若干修正してみたのですがどうでしょうか。
● :pserver: や :ext: だと
cvs update: Updating schedule/2000/04
じゃなくて
cvs server: Updating schedule/2000/04
だったので対応。
● Win32 上の cvs の出力は(local な CVSROOT だと) argv[0] の関係で
cvs.exe" update: Updating schedule/2000/04
~~~~~
となるらしい。たしかそうですよね? > 三好さん
私も commit は↓の様になりました。
cvs.exe" commit: Examining schedule/2000/04
ソースが汚くなるけど、許して下さい。
● やっぱり モードラインの表示/非表示は欲しい。
mhc-file-toggle-offline をすれば変わるから、これだけでいいので
は無いでしょうか?
● Mew では間違って(?) +schedule/2000/04 に goto-folder してしま
うと、.mew-cache や .mew-touch などが出来てしまうので、
cvs update の option を "-I .*" にしてしまった。WL や Gnus で不
都合がなければこの方がいいと思います。
● debug 中は defsubst 使うといろいろと大変だから、とりあえず
defun にした(ごめんなさい)。変更が有効になっているのか良くわか
らないし。。。
あと、若干、私の趣味。 ^^;;
--
白井秀行 (mailto:shirai@xxxxxxxxxxxxxxxxxxx)
--- mhc-cvs.el.orig Wed Apr 19 09:35:08 2000
+++ mhc-cvs.el Wed Apr 19 14:41:22 2000
@@ -68,9 +68,10 @@
(= 0 (mhc-cvs/backend "remove" filename)))
;;; CVS Backend Function
-(defconst mhc-cvs/tmp-buffer-name "*mhc-cvs*")
+(defconst mhc-cvs/tmp-buffer-name " *mhc-cvs*")
-(defsubst mhc-cvs/backend (&rest options)
+;; (defsubst mhc-cvs/backend (&rest options)
+(defun mhc-cvs/backend (&rest options)
(let ((buffer (get-buffer-create mhc-cvs/tmp-buffer-name))
(current-buffer (current-buffer)))
(unwind-protect
@@ -87,7 +88,7 @@
(defun mhc-cvs/update ()
(and
;; ローカルのスケジュールファイル群を update する
- (mhc-cvs/backend "update" "-I" ".mhc-mtime" "-I" "trash")
+ (mhc-cvs/backend "update" "-I" ".*" "-I" "trash")
(let (modified-files conflict-files updated-files commit-fault-files)
;; update の結果を解析する
(let ((buffer (get-buffer mhc-cvs/tmp-buffer-name))
@@ -110,10 +111,10 @@
(setq updated-files
(cons (buffer-substring (match-end 0) (progn (end-of-line) (point)))
updated-files)))
- ((looking-at "cvs update: Updating ")
+ ((looking-at "cvs\\(\.exe\"\\)? \\(update:\\|server:\\) Updating ")
(setq current-folder
(buffer-substring (match-end 0) (progn (end-of-line) (point)))))
- ((looking-at "cvs update: warning:")
+ ((looking-at "cvs\\(\.exe\"\\)? \\(update:\\|server:\\) warning:")
(mhc-misc-touch-directory (mhc-summary-folder-to-path current-folder))))
(forward-line 1)))
(set-buffer current-buffer)))
--- mhc-file.el.orig Wed Apr 19 09:35:08 2000
+++ mhc-file.el Wed Apr 19 15:16:01 2000
@@ -16,6 +16,7 @@
;;; Global Variables
(defvar mhc-file-method 'mhc-spool)
+(defvar mhc-file-show-status nil)
;;; Internal Variables
@@ -35,8 +36,11 @@
(defun mhc-file-line-status ()
- (format " mhc[%s]" (if mhc-file/offline "offline" "online")))
-
+ (format " mhc%s"
+ (cond
+ ((and mhc-file-show-status mhc-file/offline) "[offline]")
+ ((and mhc-file-show-status (not mhc-file/offline)) "[ONLINE]")
+ (t ""))))
(defun mhc-file-toggle-offline ()
"*スケジュールファイル管理のオフライン操作/オンライン操作を切り替える"
@@ -53,7 +57,11 @@
(defun mhc-file-sync ()
(interactive)
- (or mhc-file/offline (funcall (get mhc-file-method 'sync))))
+ (if mhc-file/offline
+ ()
+ (message "mhc file sync ...")
+ (funcall (get mhc-file-method 'sync))
+ (message "mhc file sync ... done.")))
(defun mhc-file-write-buffer (buffer file)