;;; pcvs-parse.el --- the CVS output parser
-;; Copyright (C) 1991,92,93,94,95,96,97,98,99,2000,2002
+;; Copyright (C) 1991,92,93,94,95,96,97,98,99,2000,02,2003
;; Free Software Foundation, Inc.
;; Author: Stefan Monnier <monnier@cs.yale.edu>
;; Keywords: pcl-cvs
-;; Revision: $Id: pcvs-parse.el,v 1.14 2003/02/04 11:56:55 lektu Exp $
;; This file is part of GNU Emacs.
(defun cvs-parse-table ()
"Table of message objects for `cvs-parse-process'."
- (let (c file dir path type base-rev subtype)
+ (let (c file dir path base-rev subtype)
(cvs-or
(cvs-parse-status)
(and
(cvs-match "New directory `\\(.*\\)' -- ignored$" (dir 1))
;; (cvs-parsed-fileinfo 'MESSAGE " " (file-name-as-directory dir))
- (cvs-parsed-fileinfo '(NEED-UPDATE . NEW-DIR) dir))
+ ;; These messages either correspond to a true new directory
+ ;; that an update will bring in, or to a directory that's empty
+ ;; 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)))
+ (goto-char (point-min))
+ (re-search-forward
+ (concat "^" (regexp-quote (file-name-nondirectory dir)) "/$")
+ nil t)))
+ t ;The user requested to ignore those messages.
+ (cvs-parsed-fileinfo '(NEED-UPDATE . NEW-DIR) dir t)))
;; File removed, since it is removed (by third party) in repository.
(and
(defun cvs-parse-merge ()
- (let (path base-rev head-rev handled type)
+ (let (path base-rev head-rev type)
;; A merge (maybe with a conflict).
(and
(cvs-match "RCS file: .*$")