mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-01-24 19:27:44 +01:00
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:
parent
8ca3490062
commit
756e336fa0
1 changed files with 16 additions and 2 deletions
18
guix/git.scm
18
guix/git.scm
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue