Subject: bug#41908: guix time-machine fails; XXXX is not related to introductory commit of channel 'guix'

From: zimoun <[email-masked]>
Date: Sat, 20 Jun 2020 01:22:17 +0200

Hi Ludo,

On Fri, 19 Jun 2020 at 23:17, Ludovic Courtès <[email-masked]> wrote:

> (+Cc: Marius.)

Not sure you +CC'ed Marius. So I did.

> I think ‘commit-relation’ is right: the two commits are unrelated.
>
> AIUI, commit 36640207c9543e48cd6daa92930f023f80065a5d was made on master
> (May 29) after commit 9edb3f66fd807b096b48283debdcddccfea34bad (May
> 26).  Thus, they really existed in different branches, and they’re
> unrelated.
>
> So we probably need to choose another introductory commit, one on
> ‘master’, and that has to be the merge commit for ‘staging’
> (8ab70bae52f8d4b6356ec3b8a88cebf9debe8520, June 13!).
>
> That sucks because that means that any branch forked before that is not
> mergeable.  That includes at least ‘core-updates’ (but there are few
> commits there, so it can be rebased, I think.)
>
> I don’t think we can relax the relation check with the introductory
> commit or we’d allow jumping anywhere.

I do not know if I add noise but below what I observed and it is not
what I am expecting.

For the record, the commit history.  Maybe I misread, well I think the
first 2 commits used for pulling and the 5 others used for time-machine
are/were each on the same branch, i.e. they are related (direct path),
and the 2 groups (pull vs time-machine) are/were not in the same branch.
And I do not think the issue comes from the branching.

--8<---------------cut here---------------start------------->8---
559491ea5b * gnu: Transmission: Clean up the package definition.
e7a7a483bc * gnu: papirus-icon-theme: Update to 20200602.
[...]
41a2d6a8b9 * gnu: emacs-evil: Update to 1.14.0.
[...]
e70e097882 * size: Document that positional arguments can be store items.
[...]
b56cbe8974 * syscalls: Properly match %HOST-TYPE.
36640207c9 * quirks: Build 'compute-guix-derivation' modules with 2.2 when needed.
60b81ec2f3 * gnu: emacs-2048-game: Update home page.
--8<---------------cut here---------------end--------------->8---

This first sequence appears expected:

--8<---------------cut here---------------start------------->8---
guix pull --commit=e7a7a483bc -p /tmp/a
cat ~/.cache/guix/authentication/channels/guix
cat: /home/simon/.cache/guix/authentication/channels/guix: No such file or directory

/tmp/a/bin/guix time-machine --commit=36640207c9 -- help
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
Authenticating channel 'guix', commits 9edb3f6 to 3664020 (664 new commits)...
cat ~/.cache/guix/authentication/channels/guix
;; List of previously-authenticated commits.

("36640207c9543e48cd6daa92930f023f80065a5d")

/tmp/a/bin/guix time-machine --commit=b56cbe8974 -- help
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
Authenticating channel 'guix', commits 9edb3f6 to b56cbe8 (1 new commits)...
cat ~/.cache/guix/authentication/channels/guix
;; List of previously-authenticated commits.

("b56cbe8974c328a6c7bc28906478ef1b191ada4c"
 "36640207c9543e48cd6daa92930f023f80065a5d")
--8<---------------cut here---------------end--------------->8---

Then this one is not for me:

--8<---------------cut here---------------start------------->8---
/tmp/a/bin/guix time-machine --commit=60b81ec2f3 -- help
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
guix time-machine: error: '60b81ec2f324c18d026e9ae05199493bc644960b' is not related to introductory commit of channel 'guix'

/tmp/a/bin/guix time-machine --commit=b56cbe8974 -- help
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
guix time-machine: error: 'b56cbe8974c328a6c7bc28906478ef1b191ada4c' is not related to introductory commit of channel 'guix'

/tmp/a/bin/guix time-machine --commit=36640207c9 -- help
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
guix time-machine: error: '36640207c9543e48cd6daa92930f023f80065a5d' is not related to introductory commit of channel 'guix'
--8<---------------cut here---------------end--------------->8---

Why I cannot go to 60b81ec2f3?  I mean I cannot go before the first
time-machine I did which is unexpected for me.

Why I cannot re-do the same time-machine twice?

I pull again but it is not the point. :-)

--8<---------------cut here---------------start------------->8---
guix pull --commit=559491ea5b -p /tmp/b
cat ~/.cache/guix/authentication/channels/guix
;; List of previously-authenticated commits.

("b56cbe8974c328a6c7bc28906478ef1b191ada4c"
 "36640207c9543e48cd6daa92930f023f80065a5d")

/tmp/b/bin/guix time-machine --commit=36640207c9 -- help
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
guix time-machine: error: '36640207c9543e48cd6daa92930f023f80065a5d' is not related to introductory commit of channel 'guix'

/tmp/b/bin/guix time-machine --commit=41a2d6a8b9 -- help
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
Authenticating channel 'guix', commits 9edb3f6 to 41a2d6a (7 new commits)...
cat ~/.cache/guix/authentication/channels/guix
;; List of previously-authenticated commits.

("41a2d6a8b9294a6eb8e97aaefd569e755f5f461e"
 "b56cbe8974c328a6c7bc28906478ef1b191ada4c"
 "36640207c9543e48cd6daa92930f023f80065a5d")

/tmp/b/bin/guix time-machine --commit=e70e097882 -- help
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
guix time-machine: error: 'e70e097882699865f63eabc5fb29b4fe4468a97b' is not related to introductory commit of channel 'guix'
--8<---------------cut here---------------end--------------->8---

Well, again it is not expected for me that 36640207c9 is not reachable
even it is already authenticated.  But it is similar than previously, I
guess.

However, because 41a2d6a8b9 is descendant, then it is reachable.  The
surprise to me is that e70e097882 which is in direct relation between
the two authenticated commits 41a2d6a8b9 and b56cbe8974 is not
reachable.

BTW, from a security perspective, it is easy to cheat by removing some
commits so the file ~/.cache/guix/authentication/channels/guix should be
protected: read-only and only writable by the daemon.

Cheers,
simon