guix_mirror_bot pushed a commit to branch master
in repository guix.

commit 99f85246e199bb9c98a3a0deebe3a257c7ce5ae1
Author: Ludovic Courtès <[email protected]>
AuthorDate: Sun Jun 8 20:02:42 2025 +0200

    git authenticate: Do nothing when invoked from the keyring branch.
    
    Fixes <https://issues.guix.gnu.org/78283>.
    
    * guix/scripts/git/authenticate.scm (guix-git-authenticate): Call
    ‘current-branch’ and do nothing if it returns the keyring branch.
    
    Reported-by: Vagrant Cascadian <[email protected]>
    Change-Id: I66c2a3f4babf68ac1df0913db6bc708ac0c7968e
---
 guix/scripts/git/authenticate.scm | 55 +++++++++++++++++++++++----------------
 1 file changed, 32 insertions(+), 23 deletions(-)

diff --git a/guix/scripts/git/authenticate.scm 
b/guix/scripts/git/authenticate.scm
index 5f05428461..c80fde42b4 100644
--- a/guix/scripts/git/authenticate.scm
+++ b/guix/scripts/git/authenticate.scm
@@ -351,26 +351,35 @@ expected COMMIT and SIGNER~%")))
                            (file (call-with-input-file file
                                    read-authorizations))))
             (cache-key   (or (assoc-ref options 'cache-key)
-                             (repository-cache-key repository))))
-       (define stats
-         (authenticate-repository repository (string->oid commit)
-                                  (openpgp-fingerprint* signer)
-                                  #:end end
-                                  #:keyring-reference keyring
-                                  #:historical-authorizations history
-                                  #:cache-key cache-key
-                                  #:make-reporter make-reporter))
-
-       (if (configured? repository)
-           (maybe-upgrade-hooks repository)
-           (begin
-             (record-configuration repository
-                                   #:commit commit #:signer signer
-                                   #:keyring-reference keyring)
-             (install-hooks repository)))
-
-       (when (and show-stats? (not (null? stats)))
-         (show-stats stats))
-
-       (info (G_ "successfully authenticated commit ~a~%")
-             (oid->string end))))))
+                             (repository-cache-key repository)))
+            (branch      (current-branch repository)))
+       ;; Since the keyring branch is not authenticated, exit successfully
+       ;; when invoked on it.  This exit status is what the 'post-merge' hook
+       ;; expects when running 'git pull' on that branch, and what the
+       ;; 'pre-push' hook expects when running 'git push' on that branch.
+       (if (and branch (string=? branch keyring))
+           (info (G_ "current branch '~a' is the keyring branch; \
+doing nothing~%")
+                 branch)
+           (let ((stats
+                  (authenticate-repository repository (string->oid commit)
+                                           (openpgp-fingerprint* signer)
+                                           #:end end
+                                           #:keyring-reference keyring
+                                           #:historical-authorizations history
+                                           #:cache-key cache-key
+                                           #:make-reporter make-reporter)))
+
+             (if (configured? repository)
+                 (maybe-upgrade-hooks repository)
+                 (begin
+                   (record-configuration repository
+                                         #:commit commit #:signer signer
+                                         #:keyring-reference keyring)
+                   (install-hooks repository)))
+
+             (when (and show-stats? (not (null? stats)))
+               (show-stats stats))
+
+             (info (G_ "successfully authenticated commit ~a~%")
+                   (oid->string end))))))))

Reply via email to