[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#70132] [PATCH 04/11] git: Add ‘tag->commit’ and use it in (guix cha
From: |
Ludovic Courtès |
Subject: |
[bug#70132] [PATCH 04/11] git: Add ‘tag->commit’ and use it in (guix channels). |
Date: |
Mon, 1 Apr 2024 22:25:16 +0200 |
* guix/git.scm (tag->commit): New procedure, taken from…
(resolve-reference): … here. Use it in the ‘tag’ case.
* guix/channels.scm (resolve-channel-news-entry-tag): Use ‘tag->commit’
instead of custom code.
Change-Id: I46ea387345dc1b695ce0702991a52d0cde29e2f0
---
guix/channels.scm | 11 +++--------
guix/git.scm | 24 +++++++++++++++---------
2 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/guix/channels.scm b/guix/channels.scm
index 0b776ab211..70608561f9 100644
--- a/guix/channels.scm
+++ b/guix/channels.scm
@@ -26,6 +26,7 @@ (define-module (guix channels)
commit-difference
repository-info
commit-short-id
+ tag->commit
with-repository)
#:autoload (guix git-authenticate) (authenticate-repository)
#:autoload (guix openpgp) (openpgp-public-key-fingerprint
@@ -1148,14 +1149,8 @@ (define (resolve-channel-news-entry-tag repository entry)
cannot be found."
(if (channel-news-entry-commit entry)
entry
- (let* ((tag (channel-news-entry-tag entry))
- (reference (reference-lookup repository
- (string-append "refs/tags/" tag)))
- (target (reference-target reference))
- (oid (let ((obj (object-lookup repository target)))
- (if (= OBJ-TAG (object-type obj)) ;annotated tag?
- (tag-target-id (tag-lookup repository target))
- target))))
+ (let* ((tag (channel-news-entry-tag entry))
+ (oid (object-id (tag->commit repository tag))))
(channel-news-entry (oid->string oid) tag
(channel-news-entry-title entry)
(channel-news-entry-body entry)))))
diff --git a/guix/git.scm b/guix/git.scm
index eab84ea798..8e1d863976 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -68,6 +68,7 @@ (define-module (guix git)
commit-descendant?
commit-id?
commit-short-id
+ tag->commit
remote-refs
@@ -237,6 +238,19 @@ (define (commit-id? str)
(define commit-short-id
(compose (cut string-take <> 7) oid->string commit-id))
+(define (tag->commit repository tag)
+ "Resolve TAG in REPOSITORY and return the corresponding object, usually a
+commit."
+ (let* ((oid (reference-name->oid repository
+ (string-append "refs/tags/" tag)))
+ (obj (object-lookup repository oid)))
+ ;; OID may designate an "annotated tag" object or a "commit" object.
+ ;; Return the commit object in both cases.
+ (if (= OBJ-TAG (object-type obj))
+ (object-lookup repository
+ (tag-target-id (tag-lookup repository oid)))
+ obj)))
+
(define (resolve-reference repository ref)
"Resolve the branch, commit or tag specified by REF, and return the
corresponding Git object."
@@ -283,15 +297,7 @@ (define (resolve-reference repository ref)
;; There's no such tag, so it must be a commit ID.
(resolve `(commit . ,str)))))))
(('tag . tag)
- (let* ((oid (reference-name->oid repository
- (string-append "refs/tags/" tag)))
- (obj (object-lookup repository oid)))
- ;; OID may designate an "annotated tag" object or a "commit" object.
- ;; Return the commit object in both cases.
- (if (= OBJ-TAG (object-type obj))
- (object-lookup repository
- (tag-target-id (tag-lookup repository oid)))
- obj))))))
+ (tag->commit repository tag)))))
(define (switch-to-ref repository ref)
"Switch to REPOSITORY's branch, commit or tag specified by REF. Return the
--
2.41.0
- [bug#70132] [PATCH 00/11] Improve startup time and memory footprint for short-lived commands, Ludovic Courtès, 2024/04/01
- [bug#70132] [PATCH 03/11] channels: Move ‘commit-short-id’ to (guix git)., Ludovic Courtès, 2024/04/01
- [bug#70132] [PATCH 01/11] channels: Use SRFI-71 instead of SRFI-11., Ludovic Courtès, 2024/04/01
- [bug#70132] [PATCH 04/11] git: Add ‘tag->commit’ and use it in (guix channels).,
Ludovic Courtès <=
- [bug#70132] [PATCH 05/11] channels: Autoload (git …) modules., Ludovic Courtès, 2024/04/01
- [bug#70132] [PATCH 02/11] git: Add ‘repository-info’ and use it in (guix channels)., Ludovic Courtès, 2024/04/01
- [bug#70132] [PATCH 06/11] guix system: Autoload some more., Ludovic Courtès, 2024/04/01
- [bug#70132] [PATCH 10/11] Autoload (guix build syscalls)., Ludovic Courtès, 2024/04/01
- [bug#70132] [PATCH 11/11] Autoload (gcrypt hash)., Ludovic Courtès, 2024/04/01
- [bug#70132] [PATCH 08/11] guix: Delay loading of (gnutls)., Ludovic Courtès, 2024/04/01
- [bug#70132] [PATCH 09/11] ui: Delay use of (guix build syscalls)., Ludovic Courtès, 2024/04/01
- [bug#70132] [PATCH 07/11] utils: Don’t re-export ‘call-with-temporary-output-file’., Ludovic Courtès, 2024/04/01
- bug#70132: [PATCH 00/11] Improve startup time and memory footprint for short-lived commands, Ludovic Courtès, 2024/04/15