Subject: Re: bug#48008: guix time-machine: error: Git error: the requested type does not match the type in the ODB

From: Ludovic Courtès <[email-masked]>
Date: Fri, 30 Apr 2021 17:53:35 +0200

Hi Oleg,

Oleg Pykhalov <[email-masked]> skribis:

> guix time-machine fails for 5b7a1cb0 (doesn't fail for the parent commit
> baab87ac).
>
> $ mv ~/.cache/guix/checkouts  ~/.cache/guix/checkouts.1
>
> $ guix time-machine --commit=5b7a1cb077931a020c0b7e3b12f12a7bda221d96 -- build hello
> Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
> guix time-machine: error: Git error: the requested type does not match the type in the ODB

What ‘guix’ is trying to tell us is that
5b7a1cb077931a020c0b7e3b12f12a7bda221d96 is not a “commit” object: it’s
a “tag” (or “annotated tag”) object.

Instead, you should run:

  guix time-machine --commit=d68de958b60426798ed62797ff7c96c327a672ac -- \
    build hello 

… where d68de958b60426798ed62797ff7c96c327a672ac is the commit this tag
points to (v1.0.1).

That said, as a user, one certainly doesn’t care about this subtlety.
It would be nice if (guix git) could automatically dereference annotated
tags, though it doesn’t seem to be that simple (there are places where
we explicitly ask for a commit object and we need to keep some sort of
“type checks” on Git objects).

Thanks,
Ludo’.