aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Tournier <zimon.toutoune@gmail.com>2023-08-17 16:09:16 +0200
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2023-08-29 15:23:58 -0400
commita789dd58656d5f7f1b8edf790d77753fc71670af (patch)
tree325def1f13c519cdc8763e18907a73a251a8445e
parent790e5bf0c5c8cadb6855ee5025823aba2c810361 (diff)
downloadguix-a789dd58656d5f7f1b8edf790d77753fc71670af.tar.gz
guix-a789dd58656d5f7f1b8edf790d77753fc71670af.zip
guix: git: Avoid touching the network unless needed in 'reference-available?'.
* guix/git/scm (reference-available?): Use the resolve-reference procedure to determine whether the reference exists in the local Git checkout. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
-rw-r--r--guix/git.scm13
1 files changed, 2 insertions, 11 deletions
diff --git a/guix/git.scm b/guix/git.scm
index dbc3b7caa7..ebe2600209 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -360,17 +360,8 @@ dynamic extent of EXP."
(define (reference-available? repository ref)
"Return true if REF, a reference such as '(commit . \"cabba9e\"), is
definitely available in REPOSITORY, false otherwise."
- (match ref
- ((or ('commit . commit)
- ('tag-or-commit . (? commit-id? commit)))
- (let ((len (string-length commit))
- (oid (string->oid commit)))
- (false-if-git-not-found
- (->bool (if (< len 40)
- (object-lookup-prefix repository oid len OBJ-COMMIT)
- (commit-lookup repository oid))))))
- (_
- #f)))
+ (false-if-git-not-found
+ (->bool (resolve-reference repository ref))))
(define (clone-from-swh url tag-or-commit output)
"Attempt to clone TAG-OR-COMMIT (a string), which originates from URL, using