X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/1913a2b35da45eeeb71ef851975be7d57c11de78..791ffe1ce251f03d8cd51b4f67b56b975bd12083:/lisp/pcvs-parse.el diff --git a/lisp/pcvs-parse.el b/lisp/pcvs-parse.el index 2053d8f5bd..deb11936c8 100644 --- a/lisp/pcvs-parse.el +++ b/lisp/pcvs-parse.el @@ -1,17 +1,17 @@ ;;; pcvs-parse.el --- the CVS output parser ;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -;; 2000, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. -;; Author: Stefan Monnier +;; Author: Stefan Monnier ;; Keywords: pcl-cvs ;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -19,9 +19,7 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -45,7 +43,7 @@ ;; parse vars (defcustom cvs-update-prog-output-skip-regexp "$" - "*A regexp that matches the end of the output from all cvs update programs. + "A regexp that matches the end of the output from all cvs update programs. That is, output from any programs that are run by CVS (by the flag -u in the `modules' file - see cvs(5)) when `cvs update' is performed should terminate with a line that this regexp matches. It is enough that @@ -58,7 +56,7 @@ The default (a single $) fits programs without output." (defcustom cvs-parse-ignored-messages '("Executing ssh-askpass to query the password.*$" ".*Remote host denied X11 forwarding.*$") - "*A list of regexps matching messages that should be ignored by the parser. + "A list of regexps matching messages that should be ignored by the parser. Each regexp should match a whole set of lines and should hence be terminated by `$'." :group 'pcl-cvs @@ -235,7 +233,7 @@ The remaining KEYS are passed directly to `cvs-create-fileinfo'." ;; servers, this should not be necessary, because they return ;; a complete merge output. (with-temp-buffer - (insert-file-contents path) + (ignore-errors (insert-file-contents path)) (goto-char (point-min)) (if (re-search-forward "^<<<<<<< " nil t) 'CONFLICT 'NEED-MERGE)))) @@ -271,9 +269,10 @@ The remaining KEYS are passed directly to `cvs-create-fileinfo'." ;; on the current branch (either because it only exists in other ;; branches, or because it's been removed). (if (ignore-errors - (with-current-buffer - (find-file-noselect (expand-file-name - ".cvsignore" (file-name-directory dir))) + (with-temp-buffer + (ignore-errors + (insert-file-contents + (expand-file-name ".cvsignore" (file-name-directory dir)))) (goto-char (point-min)) (re-search-forward (concat "^" (regexp-quote (file-name-nondirectory dir)) "/$") @@ -284,8 +283,11 @@ The remaining KEYS are passed directly to `cvs-create-fileinfo'." ;; File removed, since it is removed (by third party) in repository. (and (cvs-or + ;; some cvs versions output quotes around these files + (cvs-match "warning: `\\(.*\\)' is not (any longer) pertinent$" (file 1)) (cvs-match "warning: \\(.*\\) is not (any longer) pertinent$" (file 1)) - (cvs-match "\\(.*\\) is no longer in the repository$" (file 1))) + (cvs-match "`\\(.*\\)' is no longer in the repository$" (file 1)) + (cvs-match "\\(.*\\) is no longer in the repository$" (file 1))) (cvs-parsed-fileinfo (if dont-change-disc '(NEED-UPDATE . REMOVED) 'DEAD) file)) @@ -298,7 +300,7 @@ The remaining KEYS are passed directly to `cvs-create-fileinfo'." ;; [add] this will also show up as a `U ' (and - (cvs-match "\\(.*\\), version \\(.*\\), resurrected$" + (cvs-match "`?\\(.*?\\)'?, version \\(.*\\), resurrected$" (path 1) (base-rev 2)) ;; FIXME: resurrection only brings back the original version, ;; not the latest on the branch, so `up-to-date' is not always