From 7e90241586f0bde614df343c600f2b15e99b63fd Mon Sep 17 00:00:00 2001 From: Romain GARBAGE Date: Thu, 24 Apr 2025 10:19:59 +0200 Subject: [PATCH] git: Add support for symbolic references. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The #:refspecs argument was added in Guile-Git 0.10.0. * guix/git.scm (update-cached-checkout): Define ‘symref-list’. Pass it as #:refspecs to ‘remote-fetch’. Change-Id: Ib7874e2a30f97e51fdfdc2231a3bc5a3b45a177d Signed-off-by: Ludovic Courtès --- guix/git.scm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/guix/git.scm b/guix/git.scm index da0a6685878..9975c9b92e0 100644 --- a/guix/git.scm +++ b/guix/git.scm @@ -556,7 +556,7 @@ values: the cache directory name, and the SHA1 commit (a string) corresponding to REF, and the relation of STARTING-COMMIT relative to the new commit (if provided) as returned by 'commit-relation'. -REF is pair whose key is [branch | commit | tag | tag-or-commit ] and value +REF is pair whose key is [branch | commit | symref | tag | tag-or-commit ] and value the associated data: [ | | | ]. If REF is the empty list, the remote HEAD is used. @@ -592,6 +592,11 @@ current settings unchanged." (string-append "origin/" branch)))) (_ ref))) + (define symref-list + (match ref + (('symref . symref) (list symref)) + (_ '()))) + (with-libgit2 (set-git-timeouts connection-timeout read-timeout) (let* ((cache-exists? (openable-repository? cache-directory)) @@ -606,7 +611,10 @@ current settings unchanged." (remote-fetch (remote-lookup repository "origin") #:fetch-options (make-default-fetch-options #:verify-certificate? - verify-certificate?))) + verify-certificate?) + ;; Symbolic references are not fetched from the remote by + ;; default. + #:refspecs symref-list)) (when recursive? (update-submodules repository #:log-port log-port #:fetch-options