1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
| | ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;;
;;; Authenticate a range of commits.
;;;
(use-modules (git)
(guix base16)
(guix git)
(guix git-authenticate)
(guix channels)
(guix i18n)
((guix openpgp)
#:select (openpgp-public-key-fingerprint
openpgp-format-fingerprint))
(guix progress)
(srfi srfi-1)
(srfi srfi-26)
(ice-9 match)
(ice-9 format)
(ice-9 pretty-print))
\f
(define %commits-with-bad-signature
;; Commits with a known-bad signature.
'("6a34f4ccc8a5d4a48e25ad3c9c512f8634928b91")) ;2016-12-29
(define %unsigned-commits
;; Commits lacking a signature.
'())
\f
;;;
;;; Entry point.
;;;
(define (git-authenticate args)
(let loop ((args args))
(match args
((_ start end)
(authenticate-channel (car %default-channels) "." end
;; Require users to have a local 'keyring'
;; branch.
#:keyring-reference-prefix ""))
((command start)
(let* ((repository (repository-open "."))
(head (repository-head repository))
(end (oid->string (reference-target head))))
(repository-close! repository)
(loop (list command start end))))
(_
(format (current-error-port)
(G_ "Usage: git-authenticate START [END]
Authenticate commits START to END or the current head.\n"))))))
|