changeset 102536:97eebd9d88a8

* vc-git.el (vc-git-previous-revision, vc-git-next-revision): Fall back to original commit if vc-git-symbolic-commit fails to find a symbolic name. (vc-git-symbolic-commit): Don't limit search to tags. Treat "undefined" as an error. (Bug #2110)
author Alexandre Julliard <julliard@winehq.org>
date Fri, 13 Mar 2009 20:04:11 +0000
parents 915f463d82d4
children 6837adfb2772
files lisp/ChangeLog lisp/vc-git.el
diffstat 2 files changed, 42 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Fri Mar 13 19:59:44 2009 +0000
+++ b/lisp/ChangeLog	Fri Mar 13 20:04:11 2009 +0000
@@ -1,3 +1,11 @@
+2009-03-13  Alexandre Julliard  <julliard@winehq.org>
+
+	* vc-git.el (vc-git-previous-revision, vc-git-next-revision):
+	Fall back to original commit if vc-git-symbolic-commit fails to
+	find a symbolic name.
+	(vc-git-symbolic-commit): Don't limit search to tags. Treat
+	"undefined" as an error. (Bug #2110)
+
 2009-03-13  D. Goel  <deego3@gmail.com>
 
 	* ibuf-ext.el: 
--- a/lisp/vc-git.el	Fri Mar 13 19:59:44 2009 +0000
+++ b/lisp/vc-git.el	Fri Mar 13 20:04:11 2009 +0000
@@ -576,19 +576,19 @@
 (defun vc-git-previous-revision (file rev)
   "Git-specific version of `vc-previous-revision'."
   (if file
-      (let ((default-directory (file-name-directory (expand-file-name file)))
-            (file (file-name-nondirectory file)))
-        (vc-git-symbolic-commit
-         (with-temp-buffer
-           (and
-            (vc-git--out-ok "rev-list" "-2" rev "--" file)
-            (goto-char (point-max))
-            (bolp)
-            (zerop (forward-line -1))
-            (not (bobp))
-            (buffer-substring-no-properties
-             (point)
-             (1- (point-max)))))))
+      (let* ((default-directory (file-name-directory (expand-file-name file)))
+             (file (file-name-nondirectory file))
+             (prev-rev (with-temp-buffer
+                         (and
+                          (vc-git--out-ok "rev-list" "-2" rev "--" file)
+                          (goto-char (point-max))
+                          (bolp)
+                          (zerop (forward-line -1))
+                          (not (bobp))
+                          (buffer-substring-no-properties
+                           (point)
+                           (1- (point-max)))))))
+        (or (vc-git-symbolic-commit prev-rev) prev-rev))
     (with-temp-buffer
       (and
        (vc-git--out-ok "rev-parse" (concat rev "^"))
@@ -609,18 +609,19 @@
              (bobp)
              (buffer-substring-no-properties
               (point)
-              (1- (point-max)))))))
-    (and current-rev
-	 (vc-git-symbolic-commit
-	  (with-temp-buffer
-	    (and
-	     (vc-git--out-ok "rev-list" "HEAD" "--" file)
-	     (goto-char (point-min))
-	     (search-forward current-rev nil t)
-	     (zerop (forward-line -1))
-	     (buffer-substring-no-properties
-	      (point)
-	      (progn (forward-line 1) (1- (point))))))))))
+              (1- (point-max))))))
+         (next-rev
+          (and current-rev
+               (with-temp-buffer
+                 (and
+                  (vc-git--out-ok "rev-list" "HEAD" "--" file)
+                  (goto-char (point-min))
+                  (search-forward current-rev nil t)
+                  (zerop (forward-line -1))
+                  (buffer-substring-no-properties
+                   (point)
+                   (progn (forward-line 1) (1- (point)))))))))
+    (or (vc-git-symbolic-commit next-rev) next-rev)))
 
 (defun vc-git-delete-file (file)
   (vc-git-command nil 0 file "rm" "-f" "--"))
@@ -731,13 +732,14 @@
   "Translate COMMIT string into symbolic form.
 Returns nil if not possible."
   (and commit
-       (with-temp-buffer
-	 (and
-	  (vc-git--out-ok "name-rev" "--name-only" "--tags" commit)
-	  (goto-char (point-min))
-	  (= (forward-line 2) 1)
-	  (bolp)
-	  (buffer-substring-no-properties (point-min) (1- (point-max)))))))
+       (let ((name (with-temp-buffer
+                     (and
+                      (vc-git--out-ok "name-rev" "--name-only" commit)
+                      (goto-char (point-min))
+                      (= (forward-line 2) 1)
+                      (bolp)
+                      (buffer-substring-no-properties (point-min) (1- (point-max)))))))
+         (and name (not (string= name "undefined")) name))))
 
 (provide 'vc-git)