From 21751ba6afd242262fd90e694ffb9f2fe911ac8a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20Spiegel?= Date: Wed, 14 Nov 2001 13:51:53 +0000 Subject: [PATCH] (vc-cvs-diff-tree): New function. --- lisp/vc-cvs.el | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/lisp/vc-cvs.el b/lisp/vc-cvs.el index 4a6ae5275b1..0ebade2c675 100644 --- a/lisp/vc-cvs.el +++ b/lisp/vc-cvs.el @@ -5,7 +5,7 @@ ;; Author: FSF (see vc.el for full credits) ;; Maintainer: Andre Spiegel -;; $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." -- 2.39.2