~ruther/guix-local

756e336fa008c2469b4a7317ad5c641ed48f25d6 — Maxim Cournoyer 3 years ago 8ca3490
Revert "guix: git: Avoid touching the network unless needed in 'reference-available?'."

This reverts commit a789dd58656d5f7f1b8edf790d77753fc71670af, 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>
1 files changed, 16 insertions(+), 2 deletions(-)

M guix/git.scm
M guix/git.scm => guix/git.scm +16 -2
@@ 360,8 360,22 @@ 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."
  (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