But actually, if a program wants to reason about it’s version (aka
--version), then version information (or mostly nowadays a git tag) is part of the input and should also be part of the hermetic evaluation.
In the actual implementation it’s in the form of a text field still part of the input.
But this input needs to be manually updated.
This is bad for the “most up to date” packaging system out there.
And I thought since people will do
github:foo/bar/v1.2.3 they already express their intent about one particular version.
The only thing I could see really breaking the deal is that references can be updated. So essentially they are weak guarantees. Hm…
On the other hand,
self.rev (as a strong guarantee) must be present for
self.ref to be even thinkable of.
Re caching: in the end, people will probably request
github:foo/bar/v1.2.3 most of the time, anyways. Not sure about implications for CI, though.