]> git.eshelyaron.com Git - emacs.git/commitdiff
(vc-cvs-diff-tree): New function.
authorAndré Spiegel <spiegel@gnu.org>
Sun, 21 Oct 2001 12:21:29 +0000 (12:21 +0000)
committerAndré Spiegel <spiegel@gnu.org>
Sun, 21 Oct 2001 12:21:29 +0000 (12:21 +0000)
lisp/vc-cvs.el

index 4a6ae5275b1cd3e65ec6d115363ff1aa63c9aaa9..0ebade2c675a879b718181fb80df278e6849daa9 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author:      FSF (see vc.el for full credits)
 ;; Maintainer:  Andre Spiegel <spiegel@gnu.org>
 
-;; $Id: vc-cvs.el,v 1.23 2001/07/04 15:51:18 monnier Exp $
+;; $Id: vc-cvs.el,v 1.24 2001/08/28 17:06:36 spiegel Exp $
 
 ;; This file is part of GNU Emacs.
 
@@ -523,6 +523,30 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
           1 ;; async diff, pessimistic assumption
         status))))
 
+(defun vc-cvs-diff-tree (dir &optional rev1 rev2)
+  "Diff all files at and below DIR."
+  (with-current-buffer "*vc-diff*"
+    (setq default-directory dir)
+    (if (vc-cvs-stay-local-p dir)
+        ;; local diff: do it filewise, and only for files that are modified
+        (vc-file-tree-walk
+         dir
+         (lambda (f)
+           (vc-exec-after
+            `(let ((coding-system-for-read (vc-coding-system-for-diff ',f)))
+               ;; possible optimization: fetch the state of all files
+               ;; in the tree via vc-cvs-dir-state-heuristic
+               (unless (vc-up-to-date-p ',f)
+                 (message "Looking at %s" ',f)
+                 (vc-diff-internal ',f ',rel1 ',rel2))))))
+      ;; cvs diff: use a single call for the entire tree
+      (let ((coding-system-for-read
+             (or coding-system-for-read 'undecided)))
+        (apply 'vc-do-command "*vc-diff*" 1 "cvs" nil "diff"
+               (and rel1 (concat "-r" rel1))
+               (and rel2 (concat "-r" rel2))
+               (vc-diff-switches-list cvs))))))
+
 (defun vc-cvs-annotate-command (file buffer &optional version)
   "Execute \"cvs annotate\" on FILE, inserting the contents in BUFFER.
 Optional arg VERSION is a version to annotate from."