bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#21457: 25.0.50; vc-test-git03-working-revision test fails


From: Eli Zaretskii
Subject: bug#21457: 25.0.50; vc-test-git03-working-revision test fails
Date: Sat, 12 Sep 2015 12:02:24 +0300

> From: Glenn Morris <rgm@gnu.org>
> Cc: 21457@debbugs.gnu.org
> Date: Fri, 11 Sep 2015 16:34:45 -0400
> 
> Glenn Morris wrote:
> 
> > Perhaps it should use (min (point-max) (+ (point-min) 40)).
> 
> Scratch that, better to test for an actual hash, "[0-9a-f]\\{40\\}".

But it doesn't return a hash in a repo that was just initted, it
returns "HEAD".  Try this:

  $ mkdir ttt
  $ cd ttt
  $ git init
  Initialized empty Git repository in D:/gnu/git/ttt/.git/
  $ git rev-parse HEAD
  HEAD
  fatal: ambiguous argument 'HEAD': unknown revision or path not in the working 
tree.
  Use '--' to separate paths from revisions, like this:
  'git <command> [<revision>...] -- [<file>...]'
  $ echo $?
  128

IOW, it returns "HEAD" and exits with an error status.  Maybe the
problem started when I upgraded Git to 2.5.1 lately.

The patches below make this work for me.  The first one should
probably be applied regardless, as without it vc-git--rev-parse is not
safe to call in some borderline cases.

diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 8a0f554..af2b39f 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -1137,7 +1137,9 @@ (defun vc-git--rev-parse (rev)
   (with-temp-buffer
     (and
      (vc-git--out-ok "rev-parse" rev)
-     (buffer-substring-no-properties (point-min) (+ (point-min) 40)))))
+     (buffer-substring-no-properties (point-min)
+                                     (min (1- (point-max))
+                                          (+ (point-min) 40))))))
 
 (defun vc-git-next-revision (file rev)
   "Git-specific version of `vc-next-revision'."
diff --git a/test/automated/vc-tests.el b/test/automated/vc-tests.el
index a7242e9..3476846 100644
--- a/test/automated/vc-tests.el
+++ b/test/automated/vc-tests.el
@@ -367,12 +367,15 @@ (defun vc-test--working-revision (backend)
 
          ;; nil: CVS Mtn RCS SCCS
          ;; "0": Bzr Hg SRC SVN
-         ;; "master": Git
+         ;; "master" or "HEAD": Git
+          (message "%s: %s"
+                   backend
+                   (vc-working-revision default-directory backend))
          (should (eq (vc-working-revision default-directory)
                      (vc-working-revision default-directory backend)))
          (should
           (member
-           (vc-working-revision default-directory) '(nil "0" "master")))
+           (vc-working-revision default-directory) '(nil "0" "master" "HEAD")))
 
          (let ((tmp-name (expand-file-name "foo" default-directory)))
            ;; Check initial working revision, should be nil until
@@ -380,22 +383,22 @@ (defun vc-test--working-revision (backend)
 
            ;; nil: CVS Mtn RCS SCCS SVN
            ;; "0": Bzr Hg SRC
-           ;; "master": Git
+           ;; "master" or "HEAD: Git
            (should (eq (vc-working-revision tmp-name)
                        (vc-working-revision tmp-name backend)))
            (should
-            (member (vc-working-revision tmp-name) '(nil "0" "master")))
+            (member (vc-working-revision tmp-name) '(nil "0" "master" "HEAD")))
 
            ;; Write a new file.  Check working revision.
            (write-region "foo" nil tmp-name nil 'nomessage)
 
            ;; nil: CVS Mtn RCS SCCS SVN
            ;; "0": Bzr Hg SRC
-           ;; "master": Git
+           ;; "master" or "HEAD": Git
            (should (eq (vc-working-revision tmp-name)
                        (vc-working-revision tmp-name backend)))
            (should
-            (member (vc-working-revision tmp-name) '(nil "0" "master")))
+            (member (vc-working-revision tmp-name) '(nil "0" "master" "HEAD")))
 
            ;; Register a file.  Check working revision.
            (vc-register
@@ -403,11 +406,11 @@ (defun vc-test--working-revision (backend)
 
            ;; nil: Mtn RCS SCCS
            ;; "0": Bzr CVS Hg SRC SVN
-           ;; "master": Git
+           ;; "master" or "HEAD": Git
            (should (eq (vc-working-revision tmp-name)
                        (vc-working-revision tmp-name backend)))
            (should
-            (member (vc-working-revision tmp-name) '(nil "0" "master")))
+            (member (vc-working-revision tmp-name) '(nil "0" "master" "HEAD")))
 
            ;; Unregister the file.  Check working revision.
            (condition-case nil
@@ -416,13 +419,13 @@ (defun vc-test--working-revision (backend)
 
                  ;; nil: RCS
                  ;; "0": Bzr Hg
-                 ;; "master": Git
+                 ;; "master" or "HEAD": Git
                  ;; unsupported: CVS Mtn SCCS SRC SVN
                  (should (eq (vc-working-revision tmp-name)
                              (vc-working-revision tmp-name backend)))
                  (should
                   (member
-                   (vc-working-revision tmp-name) '(nil "0" "master"))))
+                   (vc-working-revision tmp-name) '(nil "0" "master" "HEAD"))))
              (vc-not-supported t))))
 
       ;; Save exit.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]