summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-07-26 11:09:56 +0200
committerLudovic Courtès <ludo@gnu.org>2019-07-26 11:21:36 +0200
commit177fecb57c0c9e15249bf6a49244c9dc6eb8439c (patch)
treeeee85cf5f6b1f14171a5cc07ed21f721e7bdd300
parentc4c2449fea9b7fd78f61ffb9bbe19ab2ef6c8b41 (diff)
git: <git-checkout> allows tags in its 'commit' field.
Fixes <https://bugs.gnu.org/36371>. Reported by Tobias Geerinckx-Rice <me@tobias.gr>. * guix/git.scm (git-checkout-compiler): Pass 'tag-or-commit' to 'latest-repository-commit*'. * doc/guix.texi (Package Transformation Options): Update '--with-commit' documentation accordingly. * tests/guix-build-branch.sh: Add test.
-rw-r--r--doc/guix.texi2
-rw-r--r--guix/git.scm4
-rw-r--r--tests/guix-build-branch.sh8
3 files changed, 10 insertions, 4 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index c2da4ce173..96448c24e5 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -8048,7 +8048,7 @@ guix build --with-branch=guile-sqlite3=master cuirass
@item --with-commit=@var{package}=@var{commit}
This is similar to @code{--with-branch}, except that it builds from
@var{commit} rather than the tip of a branch. @var{commit} must be a valid
-Git commit SHA1 identifier.
+Git commit SHA1 identifier or a tag.
@end table
@node Additional Build Options
diff --git a/guix/git.scm b/guix/git.scm
index fb2df2de07..85252629fc 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -330,7 +330,7 @@ Log progress and checkout info to LOG-PORT."
git-checkout?
(url git-checkout-url)
(branch git-checkout-branch (default "master"))
- (commit git-checkout-commit (default #f))
+ (commit git-checkout-commit (default #f)) ;#f | tag | commit
(recursive? git-checkout-recursive? (default #f)))
(define* (latest-repository-commit* url #:key ref recursive? log-port)
@@ -369,7 +369,7 @@ Log progress and checkout info to LOG-PORT."
(($ <git-checkout> url branch commit recursive?)
(latest-repository-commit* url
#:ref (if commit
- `(commit . ,commit)
+ `(tag-or-commit . ,commit)
`(branch . ,branch))
#:recursive? recursive?
#:log-port (current-error-port)))))
diff --git a/tests/guix-build-branch.sh b/tests/guix-build-branch.sh
index e64782c831..0cec7c75db 100644
--- a/tests/guix-build-branch.sh
+++ b/tests/guix-build-branch.sh
@@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
-# Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
#
# This file is part of GNU Guix.
#
@@ -52,5 +52,11 @@ guix gc -R "$v0_1_0_drv" | grep guile-gcrypt-git.9e3eacd
test "$v0_1_0_drv" != "$latest_drv"
test "$v0_1_0_drv" != "$orig_drv"
+v0_1_0_drv="`guix build guix --with-commit=guile-gcrypt=v0.1.0 -d`"
+guix gc -R "$v0_1_0_drv" | grep guile-gcrypt-git.v0.1.0
+guix gc -R "$v0_1_0_drv" | grep guile-gcrypt-8fe64e8 # this is the *tag* ID
+test "$v0_1_0_drv" != "$latest_drv"
+test "$v0_1_0_drv" != "$orig_drv"
+
if guix build guix --with-commit=guile-gcrypt=000 -d
then false; else true; fi