guix_mirror_bot pushed a commit to branch master
in repository guix.

commit 66463356ce5868d3551ea7014acb34543972a5d8
Author: Romain GARBAGE <romain.garb...@inria.fr>
AuthorDate: Mon Sep 22 11:24:31 2025 +0200

    git: Create/update remote references locally when needed.
    
    This allows ‘update-cached-checkout’ to fetch symbolic references such as
    those created by the AGit workflow with Forgejo instances.
    
    * guix/git.scm (update-cached-checkout): Create/update remote references
    locally.
    
    Change-Id: Ice761d09eebc4f1275381a4eefbdd679d9b95127
    Signed-off-by: Ludovic Courtès <l...@gnu.org>
---
 guix/git.scm | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/guix/git.scm b/guix/git.scm
index 517e3b8ff0..f6543d5222 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -593,16 +593,20 @@ current settings unchanged."
      ;; left unchanged when cloning and pulling.
      (set-config-string config "core.autocrlf" "input")
 
-     ;; Only fetch remote if it has not been cloned just before.
+     ;; When using symrefs, fetch remote again even if it has been cloned just
+     ;; before as the requested reference are not fetched when cloning.
      (when (and cache-exists?
+                (not (null? symref-list))
                 (not (reference-available? repository ref)))
        (remote-fetch (remote-lookup repository "origin")
                      #:fetch-options (make-default-fetch-options
                                       #:verify-certificate?
                                       verify-certificate?)
-                     ;; Symbolic references are not fetched from the remote by
-                     ;; default.
-                     #:refspecs symref-list))
+                     ;; Build refspecs from symbolic references so they are
+                     ;; created locally and updated if necessary.
+                     #:refspecs (map (lambda (ref)
+                                       (string-append "+" ref ":" ref))
+                                     symref-list)))
      (when recursive?
        (update-submodules repository #:log-port log-port
                           #:fetch-options

Reply via email to