annotate lisp/pcvs-parse.el @ 98182:19ec1646fe6c

The Rmail/mbox merge has been abandoned in favor of a restart using the current rmail.el file. A comprehensive list of changes will be supplied when pmail.el is morphed back into rmail.el The current status is that pmail.el supports basic Rmail navigation (no summary support) and shows the current message in a special buffer using buffer-swap-text. No decoding is done yet. That is the next step.
author Paul Reilly <pmr@pajato.com>
date Mon, 15 Sep 2008 20:56:53 +0000
parents ee5932bf781d
children d42aff5ca541
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38422
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37337
diff changeset
1 ;;; pcvs-parse.el --- the CVS output parser
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
2
56721
fcf62a4ca08d (cvs-parse-table, cvs-parse-commit): Try to adapt to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
3 ;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
79721
73661ddc7ac7 Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 79433
diff changeset
4 ;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
5
70292
2b77fa42947f Update my email address.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 70014
diff changeset
6 ;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
7 ;; Keywords: pcl-cvs
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
8
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
10
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
11 ;; GNU Emacs is free software: you can redistribute it and/or modify
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
13 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
14 ;; (at your option) any later version.
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
15
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
19 ;; GNU General Public License for more details.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
20
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
23
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
24 ;;; Commentary:
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
25
36612
4d41a2e49d39 (cvs-parse-table): Add another ignored message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34652
diff changeset
26 ;;; Bugs:
4d41a2e49d39 (cvs-parse-table): Add another ignored message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34652
diff changeset
27
4d41a2e49d39 (cvs-parse-table): Add another ignored message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34652
diff changeset
28 ;; - when merging a modified file, if the merge says that the file already
4d41a2e49d39 (cvs-parse-table): Add another ignored message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34652
diff changeset
29 ;; contained in the changes, it marks the file as `up-to-date' although
4d41a2e49d39 (cvs-parse-table): Add another ignored message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34652
diff changeset
30 ;; it might still contain further changes.
4d41a2e49d39 (cvs-parse-table): Add another ignored message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34652
diff changeset
31 ;; Example: merging a zero-change commit.
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
32
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
33 ;;; Code:
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
34
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
35 (eval-when-compile (require 'cl))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
36
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
37 (require 'pcvs-util)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
38 (require 'pcvs-info)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
39
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
40 ;; imported from pcvs.el
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
41 (defvar cvs-execute-single-dir)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
42
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
43 ;; parse vars
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
44
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
45 (defcustom cvs-update-prog-output-skip-regexp "$"
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
46 "*A regexp that matches the end of the output from all cvs update programs.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
47 That is, output from any programs that are run by CVS (by the flag -u
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
48 in the `modules' file - see cvs(5)) when `cvs update' is performed should
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
49 terminate with a line that this regexp matches. It is enough that
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
50 some part of the line is matched.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
51
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
52 The default (a single $) fits programs without output."
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
53 :group 'pcl-cvs
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
54 :type '(regexp :value "$"))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
55
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
56 (defcustom cvs-parse-ignored-messages
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
57 '("Executing ssh-askpass to query the password.*$"
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
58 ".*Remote host denied X11 forwarding.*$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
59 "*A list of regexps matching messages that should be ignored by the parser.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
60 Each regexp should match a whole set of lines and should hence be terminated
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
61 by `$'."
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
62 :group 'pcl-cvs
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
63 :type '(repeat regexp))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
64
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
65 ;; a few more defvars just to shut up the compiler
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
66 (defvar cvs-start)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
67 (defvar cvs-current-dir)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
68 (defvar cvs-current-subdir)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
69 (defvar dont-change-disc)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
70
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
71 ;;;; The parser
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
72
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
73 (defconst cvs-parse-known-commands
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
74 '("status" "add" "commit" "update" "remove" "checkout" "ci")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
75 "List of CVS commands whose output is understood by the parser.")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
76
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
77 (defun cvs-parse-buffer (parse-spec dont-change-disc &optional subdir)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
78 "Parse current buffer according to PARSE-SPEC.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
79 PARSE-SPEC is a function of no argument advancing the point and returning
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
80 either a fileinfo or t (if the matched text should be ignored) or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
81 nil if it didn't match anything.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
82 DONT-CHANGE-DISC just indicates whether the command was changing the disc
37337
00d515266792 (cvs-parse-run-table): Remove misleading text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36612
diff changeset
83 or not (useful to tell the difference between `cvs-examine' and `cvs-update'
00d515266792 (cvs-parse-run-table): Remove misleading text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36612
diff changeset
84 output.
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
85 The path names should be interpreted as relative to SUBDIR (defaults
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
86 to the `default-directory').
37337
00d515266792 (cvs-parse-run-table): Remove misleading text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36612
diff changeset
87 Return a list of collected entries, or t if an error occurred."
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
88 (goto-char (point-min))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
89 (let ((fileinfos ())
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
90 (cvs-current-dir "")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
91 (case-fold-search nil)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
92 (cvs-current-subdir (or subdir "")))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
93 (while (not (or (eobp) (eq fileinfos t)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
94 (let ((ret (cvs-parse-run-table parse-spec)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
95 (cond
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
96 ;; it matched a known information message
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
97 ((cvs-fileinfo-p ret) (push ret fileinfos))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
98 ;; it didn't match anything at all (impossible)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
99 ((and (consp ret) (cvs-fileinfo-p (car ret)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
100 (setq fileinfos (append ret fileinfos)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
101 ((null ret) (setq fileinfos t))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
102 ;; it matched something that should be ignored
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
103 (t nil))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
104 (nreverse fileinfos)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
105
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
106
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
107 ;; All those parsing macros/functions should return a success indicator
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
108 (defsubst cvs-parse-msg () (buffer-substring cvs-start (1- (point))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
109
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
110 ;;(defsubst COLLECT (exp) (push exp *result*))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
111 ;;(defsubst PROG (e) t)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
112 ;;(defmacro SEQ (&rest seqs) (cons 'and seqs))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
113
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
114 (defmacro cvs-match (re &rest matches)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
115 "Try to match RE and extract submatches.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
116 If RE matches, advance the point until the line after the match and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
117 then assign the variables as specified in MATCHES (via `setq')."
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
118 (cons 'cvs-do-match
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
119 (cons re (mapcar (lambda (match)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
120 `(cons ',(first match) ,(second match)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
121 matches))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
122
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
123 (defun cvs-do-match (re &rest matches)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
124 "Internal function for the `cvs-match' macro.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
125 Match RE and if successful, execute MATCHES."
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
126 ;; Is it a match?
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
127 (when (looking-at re)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
128 (goto-char (match-end 0))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
129 ;; Skip the newline (unless we already are at the end of the buffer).
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
130 (when (and (eolp) (< (point) (point-max))) (forward-char))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
131 ;; assign the matches
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
132 (dolist (match matches t)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
133 (let ((val (cdr match)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
134 (set (car match) (if (integerp val) (match-string val) val))))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
135
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
136 (defmacro cvs-or (&rest alts)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
137 "Try each one of the ALTS alternatives until one matches."
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
138 `(let ((-cvs-parse-point (point)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
139 ,(cons 'or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
140 (mapcar (lambda (es)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
141 `(or ,es (ignore (goto-char -cvs-parse-point))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
142 alts))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
143 (def-edebug-spec cvs-or t)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
144
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
145 ;; This is how parser tables should be executed
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
146 (defun cvs-parse-run-table (parse-spec)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
147 "Run PARSE-SPEC and provide sensible default behavior."
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
148 (unless (bolp) (forward-line 1)) ;this should never be needed
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
149 (let ((cvs-start (point)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
150 (cvs-or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
151 (funcall parse-spec)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
152
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
153 (dolist (re cvs-parse-ignored-messages)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
154 (when (cvs-match re) (return t)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
155
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
156 ;; This is a parse error. Create a message-type fileinfo.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
157 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
158 (cvs-match ".*$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
159 (cvs-create-fileinfo 'MESSAGE cvs-current-dir " "
37337
00d515266792 (cvs-parse-run-table): Remove misleading text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36612
diff changeset
160 ;; (concat " Unknown msg: '"
00d515266792 (cvs-parse-run-table): Remove misleading text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36612
diff changeset
161 (cvs-parse-msg) ;; "'")
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
162 :subtype 'ERROR)))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
163
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
164
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
165 (defun cvs-parsed-fileinfo (type path &optional directory &rest keys)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
166 "Create a fileinfo.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
167 TYPE can either be a type symbol or a cons of the form (TYPE . SUBTYPE).
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
168 PATH is the filename.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
169 DIRECTORY influences the way PATH is interpreted:
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
170 - if it's a string, it denotes the directory in which PATH (which should then be
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
171 a plain file name with no directory component) resides.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
172 - if it's nil, the PATH should not be trusted: if it has a directory
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
173 component, use it, else, assume it is relative to the current directory.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
174 - else, the PATH should be trusted to be relative to the root
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
175 directory (i.e. if there is no directory component, it means the file
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
176 is inside the main directory).
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
177 The remaining KEYS are passed directly to `cvs-create-fileinfo'."
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
178 (let ((dir directory)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
179 (file path))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
180 ;; only trust the directory if it's a string
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
181 (unless (stringp directory)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
182 ;; else, if the directory is true, the path should be trusted
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
183 (setq dir (or (file-name-directory path) (if directory "")))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
184 (setq file (file-name-nondirectory path)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
185
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
186 (let ((type (if (consp type) (car type) type))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
187 (subtype (if (consp type) (cdr type))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
188 (when dir (setq cvs-current-dir dir))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
189 (apply 'cvs-create-fileinfo type
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
190 (concat cvs-current-subdir (or dir cvs-current-dir))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
191 file (cvs-parse-msg) :subtype subtype keys))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
192
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
193 ;;;; CVS Process Parser Tables:
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
194 ;;;;
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
195 ;;;; The table for status and update could actually be merged since they
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
196 ;;;; don't conflict. But they don't overlap much either.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
197
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
198 (defun cvs-parse-table ()
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
199 "Table of message objects for `cvs-parse-process'."
50990
b51c3d855e30 (cvs-parse-table): Remove unused var `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50957
diff changeset
200 (let (c file dir path base-rev subtype)
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
201 (cvs-or
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47210
diff changeset
202
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
203 (cvs-parse-status)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
204 (cvs-parse-merge)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
205 (cvs-parse-commit)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
206
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
207 ;; this is not necessary because the fileinfo merging will remove
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
208 ;; such duplicate info and luckily the second info is the one we want.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
209 ;; (and (cvs-match "M \\(.*\\)$" (path 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
210 ;; (cvs-parse-merge path))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47210
diff changeset
211
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
212 ;; Normal file state indicator.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
213 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
214 (cvs-match "\\([MARCUPNJ?]\\) \\(.*\\)$" (c 1) (path 2))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
215 ;; M: The file is modified by the user, and untouched in the repository.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
216 ;; A: The file is "cvs add"ed, but not "cvs ci"ed.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
217 ;; R: The file is "cvs remove"ed, but not "cvs ci"ed.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
218 ;; C: Conflict
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
219 ;; U: The file is copied from the repository.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
220 ;; P: The file was patched from the repository.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
221 ;; ?: Unknown file.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
222 (let ((code (aref c 0)))
29565
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
223 (cvs-parsed-fileinfo
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
224 (case code
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
225 (?M 'MODIFIED)
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
226 (?A 'ADDED)
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
227 (?R 'REMOVED)
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
228 (?? 'UNKNOWN)
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
229 (?C
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
230 (if (not dont-change-disc) 'CONFLICT
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
231 ;; This is ambiguous. We should look for conflict markers in the
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
232 ;; file to decide between CONFLICT and NEED-MERGE. With CVS-1.10
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
233 ;; servers, this should not be necessary, because they return
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
234 ;; a complete merge output.
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
235 (with-temp-buffer
79433
855c06f0c064 (cvs-parse-table): Ignore errors when looking up files
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78542
diff changeset
236 (ignore-errors (insert-file-contents path))
29565
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
237 (goto-char (point-min))
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
238 (if (re-search-forward "^<<<<<<< " nil t)
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
239 'CONFLICT 'NEED-MERGE))))
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
240 (?J 'NEED-MERGE) ;not supported by standard CVS
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
241 ((?U ?P)
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
242 (if dont-change-disc 'NEED-UPDATE
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
243 (cons 'UP-TO-DATE (if (eq code ?U) 'UPDATED 'PATCHED)))))
a5845156564d (cvs-parse-table): Look for conflict markers in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28256
diff changeset
244 path 'trust)))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
245
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
246 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
247 (cvs-match "pcl-cvs: descending directory \\(.*\\)$" (dir 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
248 (setq cvs-current-subdir dir))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
249
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
250 ;; A special cvs message
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
251 (and
43974
36f11755a3d6 (cvs-parse-table): Be a bit more lenient.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39419
diff changeset
252 (let ((case-fold-search t))
36f11755a3d6 (cvs-parse-table): Be a bit more lenient.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39419
diff changeset
253 (cvs-match "cvs[.a-z]* [a-z]+: "))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
254 (cvs-or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
255
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
256 ;; CVS is descending a subdirectory
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
257 ;; (status says `examining' while update says `updating')
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
258 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
259 (cvs-match "\\(Examining\\|Updating\\) \\(.*\\)$" (dir 2))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
260 (let ((dir (if (string= "." dir) "" (file-name-as-directory dir))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
261 (cvs-parsed-fileinfo 'DIRCHANGE "." dir)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
262
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
263 ;; [-n update] A new (or pruned) directory appeared but isn't traversed
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
264 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
265 (cvs-match "New directory `\\(.*\\)' -- ignored$" (dir 1))
47210
47f646d9e151 (cvs-parse-table): Create a `need-update'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45998
diff changeset
266 ;; (cvs-parsed-fileinfo 'MESSAGE " " (file-name-as-directory dir))
50990
b51c3d855e30 (cvs-parse-table): Remove unused var `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50957
diff changeset
267 ;; These messages either correspond to a true new directory
b51c3d855e30 (cvs-parse-table): Remove unused var `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50957
diff changeset
268 ;; that an update will bring in, or to a directory that's empty
b51c3d855e30 (cvs-parse-table): Remove unused var `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50957
diff changeset
269 ;; on the current branch (either because it only exists in other
b51c3d855e30 (cvs-parse-table): Remove unused var `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50957
diff changeset
270 ;; branches, or because it's been removed).
b51c3d855e30 (cvs-parse-table): Remove unused var `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50957
diff changeset
271 (if (ignore-errors
70014
876ca9433460 (cvs-parse-table): Use `with-temp-buffer' to avoid leaving temporary
Romain Francoise <romain@orebokech.com>
parents: 68651
diff changeset
272 (with-temp-buffer
79433
855c06f0c064 (cvs-parse-table): Ignore errors when looking up files
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78542
diff changeset
273 (ignore-errors
855c06f0c064 (cvs-parse-table): Ignore errors when looking up files
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78542
diff changeset
274 (insert-file-contents
855c06f0c064 (cvs-parse-table): Ignore errors when looking up files
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78542
diff changeset
275 (expand-file-name ".cvsignore" (file-name-directory dir))))
50990
b51c3d855e30 (cvs-parse-table): Remove unused var `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50957
diff changeset
276 (goto-char (point-min))
b51c3d855e30 (cvs-parse-table): Remove unused var `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50957
diff changeset
277 (re-search-forward
b51c3d855e30 (cvs-parse-table): Remove unused var `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50957
diff changeset
278 (concat "^" (regexp-quote (file-name-nondirectory dir)) "/$")
b51c3d855e30 (cvs-parse-table): Remove unused var `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50957
diff changeset
279 nil t)))
b51c3d855e30 (cvs-parse-table): Remove unused var `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50957
diff changeset
280 t ;The user requested to ignore those messages.
b51c3d855e30 (cvs-parse-table): Remove unused var `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50957
diff changeset
281 (cvs-parsed-fileinfo '(NEED-UPDATE . NEW-DIR) dir t)))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
282
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
283 ;; File removed, since it is removed (by third party) in repository.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
284 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
285 (cvs-or
78542
889170c201e6 (cvs-parse-table): Handle additional instance of optional quotes
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
286 ;; some cvs versions output quotes around these files
889170c201e6 (cvs-parse-table): Handle additional instance of optional quotes
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
287 (cvs-match "warning: `\\(.*\\)' is not (any longer) pertinent$" (file 1))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
288 (cvs-match "warning: \\(.*\\) is not (any longer) pertinent$" (file 1))
72430
c5805198a585 (cvs-parse-table): Accept the new `...' format for removed files.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 70292
diff changeset
289 (cvs-match "`\\(.*\\)' is no longer in the repository$" (file 1))
c5805198a585 (cvs-parse-table): Accept the new `...' format for removed files.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 70292
diff changeset
290 (cvs-match "\\(.*\\) is no longer in the repository$" (file 1)))
49689
278d7d142185 (cvs-parse-table): "no longer in repo" does not
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49597
diff changeset
291 (cvs-parsed-fileinfo
278d7d142185 (cvs-parse-table): "no longer in repo" does not
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49597
diff changeset
292 (if dont-change-disc '(NEED-UPDATE . REMOVED) 'DEAD) file))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
293
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
294 ;; [add]
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
295 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
296 (cvs-or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
297 (cvs-match "scheduling file `\\(.*\\)' for addition.*$" (path 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
298 (cvs-match "re-adding file \\(.*\\) (in place of .*)$" (path 1)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
299 (cvs-parsed-fileinfo 'ADDED path))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
300
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
301 ;; [add] this will also show up as a `U <file>'
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
302 (and
86562
5253774a34e8 (cvs-parse-table): Adjust regexp for resurrections.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79433
diff changeset
303 (cvs-match "`?\\(.*?\\)'?, version \\(.*\\), resurrected$"
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
304 (path 1) (base-rev 2))
47210
47f646d9e151 (cvs-parse-table): Create a `need-update'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45998
diff changeset
305 ;; FIXME: resurrection only brings back the original version,
47f646d9e151 (cvs-parse-table): Create a `need-update'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45998
diff changeset
306 ;; not the latest on the branch, so `up-to-date' is not always
47f646d9e151 (cvs-parse-table): Create a `need-update'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45998
diff changeset
307 ;; what we want.
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
308 (cvs-parsed-fileinfo '(UP-TO-DATE . RESURRECTED) path nil
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
309 :base-rev base-rev))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
310
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
311 ;; [remove]
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
312 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
313 (cvs-match "removed `\\(.*\\)'$" (path 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
314 (cvs-parsed-fileinfo 'DEAD path))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
315
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
316 ;; [remove,merge]
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
317 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
318 (cvs-match "scheduling `\\(.*\\)' for removal$" (file 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
319 (cvs-parsed-fileinfo 'REMOVED file))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
320
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
321 ;; [update] File removed by you, but not cvs rm'd
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
322 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
323 (cvs-match "warning: \\(.*\\) was lost$" (path 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
324 (cvs-match (concat "U " (regexp-quote path) "$"))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
325 (cvs-parsed-fileinfo (if dont-change-disc
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
326 'MISSING
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
327 '(UP-TO-DATE . UPDATED))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
328 path))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47210
diff changeset
329
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
330 ;; Mode conflicts (rather than contents)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
331 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
332 (cvs-match "conflict: ")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
333 (cvs-or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
334 (cvs-match "removed \\(.*\\) was modified by second party$"
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
335 (path 1) (subtype 'REMOVED))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
336 (cvs-match "\\(.*\\) created independently by second party$"
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
337 (path 1) (subtype 'ADDED))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
338 (cvs-match "\\(.*\\) is modified but no longer in the repository$"
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
339 (path 1) (subtype 'MODIFIED)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
340 (cvs-match (concat "C " (regexp-quote path)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
341 (cvs-parsed-fileinfo (cons 'CONFLICT subtype) path))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
342
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
343 ;; Messages that should be shown to the user
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
344 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
345 (cvs-or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
346 (cvs-match "move away \\(.*\\); it is in the way$" (file 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
347 (cvs-match "warning: new-born \\(.*\\) has disappeared$" (file 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
348 (cvs-match "sticky tag .* for file `\\(.*\\)' is not a branch$"
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
349 (file 1)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
350 (cvs-parsed-fileinfo 'MESSAGE file))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47210
diff changeset
351
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
352 ;; File unknown.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
353 (and (cvs-match "use `.+ add' to create an entry for \\(.*\\)$" (path 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
354 (cvs-parsed-fileinfo 'UNKNOWN path))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
355
28256
06cfa273543d * pcvs.el: Add a minimal leading commentary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
356 ;; [commit]
06cfa273543d * pcvs.el: Add a minimal leading commentary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
357 (and (cvs-match "Up-to-date check failed for `\\(.+\\)'$" (file 1))
06cfa273543d * pcvs.el: Add a minimal leading commentary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
358 (cvs-parsed-fileinfo 'NEED-MERGE file))
06cfa273543d * pcvs.el: Add a minimal leading commentary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
359
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
360 ;; We use cvs-execute-multi-dir but cvs can't handle it
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
361 ;; Probably because the cvs-client can but the cvs-server can't
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
362 (and (cvs-match ".* files with '?/'? in their name.*$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
363 (not cvs-execute-single-dir)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
364 (setq cvs-execute-single-dir t)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
365 (cvs-create-fileinfo
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
366 'MESSAGE "" " "
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
367 "*** Add (setq cvs-execute-single-dir t) to your .emacs ***
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
368 See the FAQ file or the variable's documentation for more info."))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47210
diff changeset
369
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
370 ;; Cvs waits for a lock. Ignored: already handled by the process filter
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
371 (cvs-match "\\[..:..:..\\] \\(waiting for\\|obtained\\) .*lock in .*$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
372 ;; File you removed still exists. Ignore (will be noted as removed).
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
373 (cvs-match ".* should be removed and is still there$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
374 ;; just a note
56721
fcf62a4ca08d (cvs-parse-table, cvs-parse-commit): Try to adapt to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
375 (cvs-match "use ['`].+ commit' to \\sw+ th\\sw+ files? permanently$")
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
376 ;; [add,status] followed by a more complete status description anyway
45998
124e2db60fc7 (cvs-parse-table): Handle `nothing known about' with more care.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43974
diff changeset
377 (and (cvs-match "nothing known about \\(.*\\)$" (path 1))
124e2db60fc7 (cvs-parse-table): Handle `nothing known about' with more care.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43974
diff changeset
378 (cvs-parsed-fileinfo 'DEAD path 'trust))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
379 ;; [update] problem with patch
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
380 (cvs-match "checksum failure after patch to .*; will refetch$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
381 (cvs-match "refetching unpatchable files$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
382 ;; [commit]
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
383 (cvs-match "Rebuilding administrative file database$")
36612
4d41a2e49d39 (cvs-parse-table): Add another ignored message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34652
diff changeset
384 ;; ???
4d41a2e49d39 (cvs-parse-table): Add another ignored message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34652
diff changeset
385 (cvs-match "--> Using per-directory sticky tag `.*'")
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47210
diff changeset
386
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
387 ;; CVS is running a *info program.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
388 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
389 (cvs-match "Executing.*$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
390 ;; Skip by any output the program may generate to stdout.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
391 ;; Note that pcl-cvs will get seriously confused if the
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
392 ;; program prints anything to stderr.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
393 (re-search-forward cvs-update-prog-output-skip-regexp))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
394
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
395 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
396 (cvs-match "cvs[.ex]* \\[[a-z]+ aborted\\]:.*$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
397 (cvs-parsed-fileinfo 'MESSAGE ""))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47210
diff changeset
398
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
399 ;; sadly you can't do much with these since the path is in the repository
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
400 (cvs-match "Directory .* added to the repository$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
401 )))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
402
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
403
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
404 (defun cvs-parse-merge ()
50990
b51c3d855e30 (cvs-parse-table): Remove unused var `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50957
diff changeset
405 (let (path base-rev head-rev type)
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
406 ;; A merge (maybe with a conflict).
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
407 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
408 (cvs-match "RCS file: .*$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
409 ;; Squirrel away info about the files that were retrieved for merging
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
410 (cvs-match "retrieving revision \\([0-9.]+\\)$" (base-rev 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
411 (cvs-match "retrieving revision \\([0-9.]+\\)$" (head-rev 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
412 (cvs-match "Merging differences between [0-9.]+ and [0-9.]+ into \\(.*\\)$"
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
413 (path 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
414
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
415 ;; eat up potential conflict warnings
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
416 (cvs-or (cvs-match "\\(rcs\\)?merge:?\\( warning\\)?: \\(overlaps\\|conflicts\\) \\(or other problems \\)?during merge$" (type 'CONFLICT)) t)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
417 (cvs-or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
418 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
419 (cvs-match "cvs[.ex]* [a-z]+: ")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
420 (cvs-or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
421 (cvs-match "conflicts found in \\(.*\\)$" (path 1) (type 'CONFLICT))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
422 (cvs-match "could not merge .*$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
423 (cvs-match "restoring \\(.*\\) from backup file .*$" (path 1))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
424 t)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
425
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
426 ;; Is it a succesful merge?
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
427 ;; Figure out result of merging (ie, was there a conflict?)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
428 (let ((qfile (regexp-quote path)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
429 (cvs-or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
430 ;; Conflict
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
431 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
432 (cvs-match (concat "C \\(.*" qfile "\\)$") (path 1) (type 'CONFLICT))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
433 ;; C might be followed by a "suprious" U for non-mergeable files
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
434 (cvs-or (cvs-match (concat "U \\(.*" qfile "\\)$")) t))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
435 ;; Successful merge
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
436 (cvs-match (concat "M \\(.*" qfile "\\)$") (path 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
437 ;; The file already contained the modifications
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
438 (cvs-match (concat "^\\(.*" qfile
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
439 "\\) already contains the differences between .*$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
440 (path 1) (type '(UP-TO-DATE . MERGED)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
441 t)
36612
4d41a2e49d39 (cvs-parse-table): Add another ignored message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34652
diff changeset
442 ;; FIXME: PATH might not be set yet. Sometimes the only path
4d41a2e49d39 (cvs-parse-table): Add another ignored message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34652
diff changeset
443 ;; information is in `RCS file: ...' (yuck!!).
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
444 (cvs-parsed-fileinfo (if dont-change-disc 'NEED-MERGE
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
445 (or type '(MODIFIED . MERGED))) path nil
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
446 :merge (cons base-rev head-rev))))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
447
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
448 (defun cvs-parse-status ()
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
449 (let (nofile path base-rev head-rev type)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
450 (and
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
451 (cvs-match
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
452 "===================================================================$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
453 (cvs-match "File: \\(no file \\)?\\(.*[^ \t]\\)[ \t]+Status: "
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
454 (nofile 1) (path 2))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
455 (cvs-or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
456 (cvs-match "Needs \\(Checkout\\|Patch\\)$"
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
457 (type (if nofile 'MISSING 'NEED-UPDATE)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
458 (cvs-match "Up-to-date$"
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
459 (type (if nofile '(UP-TO-DATE . REMOVED) 'UP-TO-DATE)))
43974
36f11755a3d6 (cvs-parse-table): Be a bit more lenient.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39419
diff changeset
460 (cvs-match "File had conflicts on merge$" (type 'MODIFIED))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
461 (cvs-match ".*[Cc]onflict.*$" (type 'CONFLICT))
51736
3c7354593959 (cvs-parse-status): Ignore extra fields from CVSNT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50990
diff changeset
462 (cvs-match "Locally Added$" (type 'ADDED))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
463 (cvs-match "Locally Removed$" (type 'REMOVED))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
464 (cvs-match "Locally Modified$" (type 'MODIFIED))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
465 (cvs-match "Needs Merge$" (type 'NEED-MERGE))
47210
47f646d9e151 (cvs-parse-table): Create a `need-update'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45998
diff changeset
466 (cvs-match "Entry Invalid" (type '(NEED-MERGE . REMOVED)))
51736
3c7354593959 (cvs-parse-status): Ignore extra fields from CVSNT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50990
diff changeset
467 (cvs-match ".*$" (type 'UNKNOWN)))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
468 (cvs-match "$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
469 (cvs-or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
470 (cvs-match " *Version:[ \t]*\\([0-9.]+\\).*$" (base-rev 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
471 ;; NOTE: there's no date on the end of the following for server mode...
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
472 (cvs-match " *Working revision:[ \t]*-?\\([0-9.]+\\).*$" (base-rev 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
473 ;; Let's not get all worked up if the format changes a bit
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
474 (cvs-match " *Working revision:.*$"))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
475 (cvs-or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
476 (cvs-match " *RCS Version:[ \t]*\\([0-9.]+\\)[ \t]*.*$" (head-rev 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
477 (cvs-match " *Repository revision:[ \t]*\\([0-9.]+\\)[ \t]*\\(.*\\)$"
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
478 (head-rev 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
479 (cvs-match " *Repository revision:.*"))
51736
3c7354593959 (cvs-parse-status): Ignore extra fields from CVSNT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50990
diff changeset
480 (cvs-or (cvs-match " *Expansion option:.*") t) ;Optional CVSNT thingie.
3c7354593959 (cvs-parse-status): Ignore extra fields from CVSNT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50990
diff changeset
481 (cvs-or (cvs-match " *Commit Identifier:.*") t) ;Optional CVSNT thingie.
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
482 (cvs-or
51736
3c7354593959 (cvs-parse-status): Ignore extra fields from CVSNT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50990
diff changeset
483 (and ;; Sometimes those fields are missing.
3c7354593959 (cvs-parse-status): Ignore extra fields from CVSNT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50990
diff changeset
484 (cvs-match " *Sticky Tag:[ \t]*\\(.*\\)$") ; FIXME: use it.
3c7354593959 (cvs-parse-status): Ignore extra fields from CVSNT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50990
diff changeset
485 (cvs-match " *Sticky Date:[ \t]*\\(.*\\)$") ; FIXME: use it.
3c7354593959 (cvs-parse-status): Ignore extra fields from CVSNT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50990
diff changeset
486 (cvs-match " *Sticky Options:[ \t]*\\(.*\\)$")) ; FIXME: use it.
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
487 t)
51736
3c7354593959 (cvs-parse-status): Ignore extra fields from CVSNT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50990
diff changeset
488 (cvs-or (cvs-match " *Merge From:.*") t) ;Optional CVSNT thingie.
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
489 (cvs-match "$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
490 ;; ignore the tags-listing in the case of `status -v'
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
491 (cvs-or (cvs-match " *Existing Tags:\n\\(\t.*\n\\)*$") t)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
492 (cvs-parsed-fileinfo type path nil
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
493 :base-rev base-rev
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
494 :head-rev head-rev))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
495
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
496 (defun cvs-parse-commit ()
56721
fcf62a4ca08d (cvs-parse-table, cvs-parse-commit): Try to adapt to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
497 (let (path file base-rev subtype)
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
498 (cvs-or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
499
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
500 (and
56721
fcf62a4ca08d (cvs-parse-table, cvs-parse-commit): Try to adapt to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
501 (cvs-or
fcf62a4ca08d (cvs-parse-table, cvs-parse-commit): Try to adapt to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
502 (cvs-match "\\(Checking in\\|Removing\\) \\(.*\\);$" (path 2))
fcf62a4ca08d (cvs-parse-table, cvs-parse-commit): Try to adapt to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
503 t)
fcf62a4ca08d (cvs-parse-table, cvs-parse-commit): Try to adapt to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
504 (cvs-match ".*,v <-- \\(.*\\)$" (file 1))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
505 (cvs-or
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
506 ;; deletion
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
507 (cvs-match "new revision: delete; previous revision: \\([0-9.]*\\)$"
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
508 (subtype 'REMOVED) (base-rev 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
509 ;; addition
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
510 (cvs-match "initial revision: \\([0-9.]*\\)$"
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
511 (subtype 'ADDED) (base-rev 1))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
512 ;; update
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
513 (cvs-match "new revision: \\([0-9.]*\\); previous revision: .*$"
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
514 (subtype 'COMMITTED) (base-rev 1)))
56721
fcf62a4ca08d (cvs-parse-table, cvs-parse-commit): Try to adapt to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
515 (cvs-or (cvs-match "done$") t)
57462
c6d72c23a106 (cvs-parse-commit): Fix parsing for new commit message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56721
diff changeset
516 ;; In cvs-1.12.9 commit messages have been changed and became
c6d72c23a106 (cvs-parse-commit): Fix parsing for new commit message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56721
diff changeset
517 ;; ambiguous. More specifically, the `path' above is not given.
c6d72c23a106 (cvs-parse-commit): Fix parsing for new commit message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56721
diff changeset
518 ;; We assume here that in future releases the corresponding info will
c6d72c23a106 (cvs-parse-commit): Fix parsing for new commit message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56721
diff changeset
519 ;; be put into `file'.
39391
81cef0e070fa (cvs-parse-commit): Remove the temp files used by VC.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
520 (progn
81cef0e070fa (cvs-parse-commit): Remove the temp files used by VC.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
521 ;; Try to remove the temp files used by VC.
57462
c6d72c23a106 (cvs-parse-commit): Fix parsing for new commit message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56721
diff changeset
522 (vc-delete-automatic-version-backups (expand-file-name (or path file)))
39391
81cef0e070fa (cvs-parse-commit): Remove the temp files used by VC.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
523 ;; it's important here not to rely on the default directory management
81cef0e070fa (cvs-parse-commit): Remove the temp files used by VC.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
524 ;; because `cvs commit' might begin by a series of Examining messages
81cef0e070fa (cvs-parse-commit): Remove the temp files used by VC.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
525 ;; so the processing of the actual checkin messages might begin with
81cef0e070fa (cvs-parse-commit): Remove the temp files used by VC.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
526 ;; a `current-dir' set to something different from ""
56721
fcf62a4ca08d (cvs-parse-table, cvs-parse-commit): Try to adapt to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
527 (cvs-parsed-fileinfo (cons 'UP-TO-DATE subtype)
57462
c6d72c23a106 (cvs-parse-commit): Fix parsing for new commit message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56721
diff changeset
528 (or path file) 'trust
39391
81cef0e070fa (cvs-parse-commit): Remove the temp files used by VC.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
529 :base-rev base-rev)))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47210
diff changeset
530
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
531 ;; useless message added before the actual addition: ignored
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
532 (cvs-match "RCS file: .*\ndone$"))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
533
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
534
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
535 (provide 'pcvs-parse)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
536
56721
fcf62a4ca08d (cvs-parse-table, cvs-parse-commit): Try to adapt to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
537 ;; arch-tag: 35418375-1a23-40a0-957d-96b0262f91d6
38422
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37337
diff changeset
538 ;;; pcvs-parse.el ends here