# HG changeset patch # User Alexandre Julliard # Date 1236974651 0 # Node ID 97eebd9d88a80c823475b9648be2118d982c61a2 # Parent 915f463d82d404ad597746156107e54edbe3420a * 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) diff -r 915f463d82d4 -r 97eebd9d88a8 lisp/ChangeLog --- 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 + + * 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 * ibuf-ext.el: diff -r 915f463d82d4 -r 97eebd9d88a8 lisp/vc-git.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)