Revert "guix: git: Avoid touching the network unless needed in 'reference-available?'."

This reverts commit a789dd5865, which broke
e.g.:

  guix time-machine -C <(echo %default-channels) -- describe

Add an explanatory comment as suggested.

Reported-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Maxim Cournoyer 2023-09-05 16:30:22 -04:00
parent 8ca3490062
commit 756e336fa0
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -360,8 +360,22 @@ (define-syntax-rule (false-if-git-not-found exp)
(define (reference-available? repository ref)
"Return true if REF, a reference such as '(commit . \"cabba9e\"), is
definitely available in REPOSITORY, false otherwise."
(false-if-git-not-found
(->bool (resolve-reference repository ref))))
;; Note: this must not rely on 'resolve-reference', as that procedure always
;; resolves the references for branch names such as master. The semantic we
;; want here is that unless the reference is exact (e.g. a commit), the
;; reference should not be considered available, has it could have changed
;; on the remote.
(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)))
(define (clone-from-swh url tag-or-commit output)
"Attempt to clone TAG-OR-COMMIT (a string), which originates from URL, using