git-authenticate: Cache takes a key parameter.

* guix/git-authenticate.scm (authenticated-commit-cache-file)
(cache-authenticated-commit, previously-authenticated-commits): Add
'key' parameter and honor it.
* build-aux/git-authenticate.scm (git-authenticate): Pass
"channels/guix" as the key.
This commit is contained in:
Ludovic Courtès 2020-06-08 11:50:57 +02:00
parent 33391ee5c1
commit a450b4343b
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 15 additions and 14 deletions

View file

@ -295,33 +295,33 @@ The OpenPGP keyring is loaded from KEYRING-REFERENCE in REPOSITORY."
;;; Caching.
;;;
(define (authenticated-commit-cache-file)
(define (authenticated-commit-cache-file key)
"Return the name of the file that contains the cache of
previously-authenticated commits."
(string-append (cache-directory) "/authentication/channels/guix"))
previously-authenticated commits for KEY."
(string-append (cache-directory) "/authentication/" key))
(define (previously-authenticated-commits)
"Return the previously-authenticated commits as a list of commit IDs (hex
strings)."
(define (previously-authenticated-commits key)
"Return the previously-authenticated commits under KEY as a list of commit
IDs (hex strings)."
(catch 'system-error
(lambda ()
(call-with-input-file (authenticated-commit-cache-file)
(call-with-input-file (authenticated-commit-cache-file key)
read))
(lambda args
(if (= ENOENT (system-error-errno args))
'()
(apply throw args)))))
(define (cache-authenticated-commit commit-id)
"Record in ~/.cache COMMIT-ID and its closure as authenticated (only
COMMIT-ID is written to cache, though)."
(define (cache-authenticated-commit key commit-id)
"Record in ~/.cache, under KEY, COMMIT-ID and its closure as
authenticated (only COMMIT-ID is written to cache, though)."
(define %max-cache-length
;; Maximum number of commits in cache.
200)
(let ((lst (delete-duplicates
(cons commit-id (previously-authenticated-commits))))
(file (authenticated-commit-cache-file)))
(cons commit-id (previously-authenticated-commits key))))
(file (authenticated-commit-cache-file key)))
(mkdir-p (dirname file))
(with-atomic-file-output file
(lambda (port)