Hi, Sunday hackers! Ludovic Courtès <l...@gnu.org> skribis:
> Jan Nieuwenhuizen <jann...@gnu.org> skribis: > >> $ guix pull --commit=559491ea5b36b89b2a2f9d48dacf6a2d7e219910 >> Updating channel 'guix' from Git repository at >> 'https://git.savannah.gnu.org/git/guix.git'... >> Building from this channel: >> guix https://git.savannah.gnu.org/git/guix.git 559491e >> [...] >> hint: Run `guix pull --news' to read all the news. >> >> 11:23:19 janneke@dundal:~/src/guix/master >> $ guix time-machine --commit=36640207c9543e48cd6daa92930f023f80065a5d -- >> environment hello >> 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' >> >> [1]11:23:25 janneke@dundal:~/src/guix/master >> git log --pretty=oneline | grep 36640207c9543e48cd6daa92930f023f80065a5d >> 36640207c9543e48cd6daa92930f023f80065a5d quirks: Build >> 'compute-guix-derivation' modules with 2.2 when needed. > > 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. Thinking more about it, I think the test that leads to the error above is in fact bogus (that’s what you were hinting at, Simon). Namely, it reads: (define commits ;; Commits to authenticate, excluding the closure of ;; AUTHENTICATED-COMMITS. (commit-difference end-commit start-commit authenticated-commits)) ;; When COMMITS is empty, it's either because AUTHENTICATED-COMMITS ;; contains END-COMMIT or because END-COMMIT is not a descendant of ;; START-COMMIT. Check that. But that’s wrong: If START-COMMIT and END-COMMIT are unrelated, then ‘commit-difference’ will return a whole lot of commits (those who are not both in the closure of START-COMMIT and that of END-COMMIT). The difference between 36640207c9543e48cd6daa92930f023f80065a5d and 9edb3f66fd807b096b48283debdcddccfea34bad is a set of 664 commits, as shown with “git log --oneline 9edb3f6..3664020 | wc -l” or by calling ‘commit-difference’. Those 664 commits are those that were made on master between 9edb3f66fd807b096b48283debdcddccfea34bad’s parent on master, and 36640207c9543e48cd6daa92930f023f80065a5d. They can be authenticated just fine. If someone passed ‘--allow-downgrades’ and tries to jump to an unrelated commit, authentication will fail on some commit. So I think the test was just enforcing an additional restriction that was unnecessary. I removed that test in e4a4287c5fb51c0e47431606df5ee78b953d71f8; we can keep the introductory commit unchanged, all is good! Let me know what you think. Thanks, Ludo’.