time-machine: Also validate the reference from a channels file.

* guix/scripts/time-machine.scm (guix-time-machine)
<validate-guix-channel>: Update doc.  Fall-back to use the Guix channel
reference when REF is #f.

Reported-by: Simon Tournier <zimon.toutoune@gmail.com>
Co-authored-by: Simon Tournier <zimon.toutoune@gmail.com>
This commit is contained in:
Maxim Cournoyer 2023-09-05 17:04:12 -04:00
parent 756e336fa0
commit c3d48d024b
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -164,13 +164,20 @@ (define-command (guix-time-machine . args)
(define (validate-guix-channel channels) (define (validate-guix-channel channels)
"Finds the Guix channel among CHANNELS, and validates that REF as "Finds the Guix channel among CHANNELS, and validates that REF as
captured from the closure, a git reference specification such as a commit hash captured from the closure, a git reference specification such as a commit hash
or tag associated to CHANNEL, is valid and new enough to satisfy the 'guix or tag associated to the channel, is valid and new enough to satisfy the 'guix
time-machine' requirements. A `formatted-message' condition is raised time-machine' requirements. If the captured REF variable is #f, the reference
otherwise." validate is the one of the Guix channel found in CHANNELS. A
`formatted-message' condition is raised otherwise."
(let* ((guix-channel (find guix-channel? channels)) (let* ((guix-channel (find guix-channel? channels))
(guix-channel-commit (channel-commit guix-channel))
(guix-channel-branch (channel-branch guix-channel))
(guix-channel-ref (if guix-channel-commit
`(tag-or-commit . ,guix-channel-commit)
`(branch . ,guix-channel-branch)))
(reference (or ref guix-channel-ref))
(checkout commit relation (update-cached-checkout (checkout commit relation (update-cached-checkout
(channel-url guix-channel) (channel-url guix-channel)
#:ref (or ref '()) #:ref reference
#:starting-commit #:starting-commit
%oldest-possible-commit))) %oldest-possible-commit)))
(unless (memq relation '(ancestor self)) (unless (memq relation '(ancestor self))