~ruther/guix-local

99f85246e199bb9c98a3a0deebe3a257c7ce5ae1 — Ludovic Courtès 1 year, 1 month ago 0ec5cab
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 <vagrant@debian.org>
Change-Id: I66c2a3f4babf68ac1df0913db6bc708ac0c7968e
1 files changed, 32 insertions(+), 23 deletions(-)

M guix/scripts/git/authenticate.scm
M guix/scripts/git/authenticate.scm => guix/scripts/git/authenticate.scm +32 -23
@@ 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))))))))