diff lisp/vc-git.el @ 106472:6e0f1038bc44

Support showing a single log entry from vc-annotate. * vc.el (print-log): Add a new argument: START-REVISION. (vc-print-log-internal): Add a new optional argument and pass it to the backend. (vc-print-log, vc-print-root-log): Adjust callers. * vc-annotate.el (vc-annotate-show-log-revision-at-line): If a buffer already displays the requested log entry, use it. Otherwise display only the log entry in question. * vc-svn.el (vc-svn-print-log): * vc-mtn.el (log-view-file-re): * vc-hg.el (vc-hg-state): * vc-git.el (vc-git-print-log): Add support for new argument START-REVISION. (vc-git-show-log-entry): Return t on success. * vc-bzr.el (vc-bzr-print-log): Add support new argument START-REVISION. (vc-bzr-show-log-entry): Return t on success. * vc-rcs.el (vc-rcs-print-log): * vc-sccs.el (vc-sccs-print-log): * vc-cvs.el (vc-cvs-print-log): Add new argument, ignore it.
author Dan Nicolaescu <dann@ics.uci.edu>
date Mon, 07 Dec 2009 09:02:11 +0000
parents 67d9cb4f16c3
children 88a0c109936e
line wrap: on
line diff
--- a/lisp/vc-git.el	Mon Dec 07 06:56:40 2009 +0000
+++ b/lisp/vc-git.el	Mon Dec 07 09:02:11 2009 +0000
@@ -77,7 +77,7 @@
 ;; - merge-news (file)                     see `merge'
 ;; - steal-lock (file &optional revision)          NOT NEEDED
 ;; HISTORY FUNCTIONS
-;; * print-log (files buffer &optional shortlog limit)   OK
+;; * print-log (files buffer &optional shortlog start-revision limit)   OK
 ;; - log-view-mode ()                              OK
 ;; - show-log-entry (revision)                     OK
 ;; - comment-history (file)                        ??
@@ -540,7 +540,7 @@
 
 ;;; HISTORY FUNCTIONS
 
-(defun vc-git-print-log (files buffer &optional shortlog limit)
+(defun vc-git-print-log (files buffer &optional shortlog start-revision limit)
   "Get change log associated with FILES."
   (let ((coding-system-for-read git-commits-coding-system))
     ;; `vc-do-command' creates the buffer, but we need it before running
@@ -559,6 +559,7 @@
 		  '("--graph" "--decorate"
 		    "--date=short" "--pretty=format:%d%h  %ad  %s" "--abbrev-commit"))
 		(when limit (list "-n" (format "%s" limit)))
+		(when start-revision (list start-revision))
 		'("--")))))))
 
 (defvar log-view-message-re)
@@ -615,14 +616,17 @@
 REVISION may have the form BRANCH, BRANCH~N,
 or BRANCH^ (where \"^\" can be repeated)."
   (goto-char (point-min))
-  (when revision
-    (search-forward (format "\ncommit %s" revision) nil t
-		    (cond ((string-match "~\\([0-9]\\)$" revision)
-			   (1+ (string-to-number (match-string 1 revision))))
-			  ((string-match "\\^+$" revision)
-			   (1+ (length (match-string 0 revision))))
-			  (t nil))))
-  (beginning-of-line))
+  (let (found)
+    (when revision
+      (setq found
+	    (search-forward (format "\ncommit %s" revision) nil t
+			    (cond ((string-match "~\\([0-9]\\)$" revision)
+				   (1+ (string-to-number (match-string 1 revision))))
+				  ((string-match "\\^+$" revision)
+				   (1+ (length (match-string 0 revision))))
+				  (t nil)))))
+    (beginning-of-line)
+    found))
 
 (defun vc-git-diff (files &optional rev1 rev2 buffer)
   "Get a difference report using Git between two revisions of FILES."