Romain Francoise <[EMAIL PROTECTED]> writes:

> The format changed and Emacs doesn't know how to parse it.  It's a
> bug.

This wasn't the most constructive reply I ever sent, so I've done my
homework and created a dpatch to fix this.  Beware, it's a new-style
dpatch, you need to tighten the build-dep: dpatch >= 2.0.9.

It's been minimally tested, I don't use the Debian package so I didn't
have all my environment but it appears to fix everything.  Please test.

Cheers,

-- 
  ,''`.
 : :' :        Romain Francoise <[EMAIL PROTECTED]>
 `. `'         http://people.debian.org/~rfrancoise/
   `-
#! /bin/sh /usr/share/dpatch/dpatch-run
## pcl-cvs-format.dpatch by Romain Francoise <[EMAIL PROTECTED]>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Port changes from upstream CVS to support the new format used
## DP: used by CVS.
## DP: Upstream changes by Stefan Monnier.

@DPATCH@
diff -urNad emacs21-21.3+1/lisp/pcvs-parse.el 
/tmp/dpep.SXISqR/emacs21-21.3+1/lisp/pcvs-parse.el
--- emacs21-21.3+1/lisp/pcvs-parse.el   2001-09-24 18:39:23.000000000 +0200
+++ /tmp/dpep.SXISqR/emacs21-21.3+1/lisp/pcvs-parse.el  2005-01-24 
19:15:31.000000000 +0100
@@ -351,7 +351,7 @@
        ;; File you removed still exists.  Ignore (will be noted as removed).
        (cvs-match ".* should be removed and is still there$")
        ;; just a note
-       (cvs-match "use '.+ commit' to \\sw+ th\\sw+ files? permanently$")
+       (cvs-match "use ['`].+ commit' to \\sw+ th\\sw+ files? permanently$")
        ;; [add,status] followed by a more complete status description anyway
        (cvs-match "nothing known about .*$")
        ;; [update] problem with patch
@@ -467,12 +467,14 @@
                          :head-rev head-rev))))
 
 (defun cvs-parse-commit ()
-  (let (path base-rev subtype)
+  (let (path file base-rev subtype)
     (cvs-or
 
      (and
-      (cvs-match "\\(Checking in\\|Removing\\) \\(.*\\);$" (path 2))
-      (cvs-match ".*,v  <--  .*$")
+      (cvs-or
+       (cvs-match "\\(Checking in\\|Removing\\) \\(.*\\);$" (path 2))
+       t)
+      (cvs-match ".*,v  <--  \\(.*\\)$" (file 1))
       (cvs-or
        ;; deletion
        (cvs-match "new revision: delete; previous revision: \\([0-9.]*\\)$"
@@ -483,15 +485,20 @@
        ;; update
        (cvs-match "new revision: \\([0-9.]*\\); previous revision: .*$"
                  (subtype 'COMMITTED) (base-rev 1)))
-      (cvs-match "done$")
+      (cvs-or (cvs-match "done$") t)
+      ;; In cvs-1.12.9 commit messages have been changed and became
+      ;; ambiguous.  More specifically, the `path' above is not given.
+      ;; We assume here that in future releases the corresponding info will
+      ;; be put into `file'.
       (progn
        ;; Try to remove the temp files used by VC.
-       (vc-delete-automatic-version-backups (expand-file-name path))
+       (vc-delete-automatic-version-backups (expand-file-name (or path file)))
        ;; it's important here not to rely on the default directory management
        ;; because `cvs commit' might begin by a series of Examining messages
        ;; so the processing of the actual checkin messages might begin with
        ;; a `current-dir' set to something different from ""
-       (cvs-parsed-fileinfo (cons 'UP-TO-DATE subtype) path 'trust
+       (cvs-parsed-fileinfo (cons 'UP-TO-DATE subtype)
+                            (or path file) 'trust
                             :base-rev base-rev)))
      
      ;; useless message added before the actual addition: ignored

Reply via email to