summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-04-02 21:33:48 +0200
committerLudovic Courtès <ludo@gnu.org>2020-04-02 23:15:11 +0200
commitefa578ecaece67366b4b0e2266de7c2faaa4ae54 (patch)
tree54fa472cea3661ce83915a0f3cc83a0ace4a45db
parent70c128dc33a914c82112df295d06eac2806788e2 (diff)
downloadguix-efa578ecaece67366b4b0e2266de7c2faaa4ae54.tar.gz
git: Don't try to resolve tags with 'tag-lookup'.
Fixes <https://bugs.gnu.org/40377>.
Reported by Brice Waegeneire <brice@waegenei.re>.

* guix/git.scm (switch-to-ref): In the 'tag case, remove call to
'tag-lookup'.
-rw-r--r--guix/git.scm9
1 files changed, 4 insertions, 5 deletions
diff --git a/guix/git.scm b/guix/git.scm
index b1ce3ea451..5fffd429bd 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -182,11 +182,10 @@ OID (roughly the commit hash) corresponding to REF."
         (('tag    . tag)
          (let ((oid (reference-name->oid repository
                                          (string-append "refs/tags/" tag))))
-           ;; Get the commit that the tag at OID refers to.  This is not
-           ;; strictly needed, but it's more consistent to always return the
-           ;; OID of a commit.
-           (object-lookup repository
-                          (tag-target-id (tag-lookup repository oid))))))))
+           ;; OID may point to a "tag" object, but it can also point directly
+           ;; to a "commit" object, as surprising as it may seem.  Return that
+           ;; object, whatever that is.
+           (object-lookup repository oid))))))
 
   (reset repository obj RESET_HARD)
   (object-id obj))