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

[mhc:01086] Re: mhc-cvs



馬場@京大宇宙物理 です。
# mule-19.34 はあきらめて、emacs-20.6 + mew-1.94.2 で試しました。

 From: KOIE Hidetaka (鯉江英隆) <hide@xxxxxxxx>
 Subject: [mhc:01075] Re: mhc-cvs
 Date: Mon, 16 Oct 2000 18:57:04 +0900

 >   | > しておいてから、スケジュールを追加・削除しても Sync がうまく働きま
 >   | > せん。つまり、~/Mail/schedule/.mhc-db-log には A とか D とかいうマー
 >   | > クは付いているのですが、リモートマシンに cvs commit してくれません
 >   | > (もちろん ONLINE 状態で)。
 > こちら↑の問題は、わたしの方でも発生しました。
 > リポジトリがlocalにある場合にはうまくゆくのですが、
 > :ext:メソッドで試したらcvs addもされませんでした。

これは原因がわかりました。といっても自信がありませんが、たぶん。


mhc-cvs.el の mhc-cvs/add や mhc-cvs/remove では、
(mhc-cvs/backend "add" filename) などとしていますが、ここで
filename がフルパスに展開されて渡されているために、cvs add をすると
  absolute pathname `/home/baba/Mail/schedule/2000/10' illegal for server
のようになって失敗します。リポジトリと同じマシンの場合には、これで
も成功してしまうので発現しません。

スマートな対処は全くわからないのですが、とりあえず、以下の差分のよ
うに cvs add する前に filename から /home/baba/Mail/schedule/ にあ
たる部分を取り除く処理を入れてやれば、cvs add や remove に成功して 
commit もできるようになることは確認しました。

この考え方で良いようなら、もちろん、もっとマシなコードに直して頂く
のがよろしかろうとおもいます。
-
馬場  肇 ( Hajime BABA )            E-mail: baba@xxxxxxxxxxxxxxxxxxxxxx
京都大学理学部宇宙物理学教室 博士後期課程
--



Index: mhc-cvs.el
===================================================================
RCS file: /cvsroot/mhc/emacs/mhc-cvs.el,v
retrieving revision 1.4
diff -u -r1.4 mhc-cvs.el
--- mhc-cvs.el	2000/08/02 02:30:15	1.4
+++ mhc-cvs.el	2000/10/17 16:51:40
@@ -96,7 +96,7 @@
   (let* ((default (catch 'found
 		    (mapcar (lambda (dir)
 			      (and (stringp dir)
-				   (file-directory-p dir)
+;				   (file-directory-p dir)
 				   (throw 'found dir)))
 			    (list
 			     (getenv "CVSROOT")
@@ -174,18 +174,21 @@
 
 (defun mhc-cvs/add (filename &optional offline)
   "ファイルを追加する関数"
-  (let ((added (mhc-cvs/get-added-flag-file-name filename))
+  (let ((dir (mhc-summary-folder-to-path mhc-base-folder))
+	(added (mhc-cvs/get-added-flag-file-name filename))
 	(removed (mhc-cvs/get-removed-file-name filename)))
     (if (file-exists-p removed) (delete-file removed))
     (if offline
 	(not (copy-file filename added t))
       (if (file-exists-p added) (delete-file added))
-      (and (= 0 (mhc-cvs/backend "add" filename))
-	   (mhc-cvs/modify filename)))))
+      (setq filename2 (substring filename (string-width (concat dir "/"))))
+      (and (= 0 (mhc-cvs/backend "add" filename2))
+	   (mhc-cvs/modify filename2)))))
 
 (defun mhc-cvs/remove (filename &optional offline)
   "ファイルを削除する関数"
-  (let ((added (mhc-cvs/get-added-flag-file-name filename))
+  (let ((dir (mhc-summary-folder-to-path mhc-base-folder))
+	(added (mhc-cvs/get-added-flag-file-name filename))
 	(removed (mhc-cvs/get-removed-file-name filename)))
     (if offline
 	(if (file-exists-p added)
@@ -194,8 +197,9 @@
       (if (file-exists-p added) (delete-file added))
       (if (file-exists-p removed) (delete-file removed))
       (if (file-exists-p filename) (delete-file filename))
-      (and (= 0 (mhc-cvs/backend "remove" filename))
-	   (mhc-cvs/modify filename)))))
+      (setq filename2 (substring filename (string-width (concat dir "/"))))
+      (and (= 0 (mhc-cvs/backend "remove" filename2))
+	   (mhc-cvs/modify filename2)))))
 
 (defun mhc-cvs/modify (filename &optional offline)
   "ファイルを変更する関数"