On 31.12.2021 04:15, Liliana Marie Prikler wrote: > [...] Obviously, when > travelling back in time, we want Guix' "1.2.3" to be whatever it was by > that point, but on the other hand, we also want a recently pulled Guix > to have a reasonably recent "v1.2.3" if it claims to have "1.2.3". [...]
I think here lies the crux of the disagreement. As far as I understand, Guix doesn't intend to support the notion that one version string could represent two different actual versions of a program throughout time. Rather, I think, the reason Guix keeps both the tag and commit ref is simply that the tag could disappear from the repo. (In my experience, that's easy to do by accident when you clone a repo and push it to a new location. You have to fetch and push the tags explicitly.) If a tag ever *was* changed to point to a different commit, meaning that the same version string now represents a different actual version, then I think Guix would give that version a new name, such as "1.2.3-new" or whatever. I don't know if this ever actually happened, but I think this is how Guix would probably want to deal with it if it does. Having one string represent two different actual versions is just really terrible and I don't see Guix ever supporting such a practice. [tangent follows] (A software developer might argue that two different commits actually are the same version of the software, say for instance because only a minor change in the build system or README file or such was made, i.e. files that are considered "not part of the end-product," but in Guix land I think we wouldn't let that fare. Maybe an exception would be made if it was proven that the actual package produced by Guix from both commits will always be bit-identical. Even then, better not.) P.S. I hope I'm actually helping to add clarity to the thread instead of more confusion by adding my voice. I was just skimming the ML, found this thread interesting, and thought I might be able to add clarity, because it seemed a little confusing. :-) -- Taylan