From a789dd58656d5f7f1b8edf790d77753fc71670af Mon Sep 17 00:00:00 2001 From: Simon Tournier Date: Thu, 17 Aug 2023 16:09:16 +0200 Subject: [PATCH] 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 --- guix/git.scm | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/guix/git.scm b/guix/git.scm index dbc3b7caa7c..ebe2600209d 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