channels: 'latest-channel-instance' authenticates Git checkouts.
authorLudovic Courtès <ludo@gnu.org>
Mon, 8 Jun 2020 10:01:24 +0000 (12:01 +0200)
committerLudovic Courtès <ludo@gnu.org>
Tue, 16 Jun 2020 14:10:47 +0000 (16:10 +0200)
commit43badf261f4688c8a7a7a9004a4bff8acb205835
tree9e170e9088dc39219f2c7043972a1c9c61681b00
parent1e2b9bf2d4ed4edc9ed70c51f414bb2890074a21
channels: 'latest-channel-instance' authenticates Git checkouts.

Fixes <https://bugs.gnu.org/22883>.

* guix/channels.scm (<channel>)[introduction]: New field.
(<channel-introduction>): New record type.
(%guix-channel-introduction): New variable.
(%default-channels): Use it.
(<channel-metadata>)[keyring-reference]: New field.
(%default-keyring-reference): New variable.
(read-channel-metadata, read-channel-metadata-from-source): Initialize
the 'keyring-reference' field.
(commit-short-id, verify-introductory-commit)
(authenticate-channel): New procedures.
(latest-channel-instance): Call 'authenticate-channel' when CHANNEL has
an introduction.
* tests/channels.scm (gpg+git-available?, commit-id-string): New
procedures.
("authenticate-channel, wrong first commit signer"):
("authenticate-channel, .guix-authorizations"): New tests.
* doc/guix.texi (Invoking guix pull): Mention authentication.
.dir-locals.el
doc/guix.texi
guix/channels.scm
tests/channels.scm