Unix version control lore: what, ident
dotat.at
dotat.at
This was at Bell Labs Columbus Ohio. Also, I think it was COFF and not ELF. Used System V r2.
That's a nice feature for adding "foo -version", or similar, to show the users what their binaries were built from.
[0]: https://github.com/peterldowns/localias/blob/main/Justfile#L...
It was easy enough to replace with a short script, and I use a variation of that to this date
https://git-scm.com/book/en/v2/Customizing-Git-Git-Attribute... look under "Keyword Expansion" halfway down the page.
I don't see this, or binary .ident strings as e.g. clashing with idempotent builds.
They were very useful when you were looking at a source file, to see what version of that file you had.
Git had something similar with Git Attributes[3], but AFAIK, they were just references to blob ids, so they never really took off.
For git, I now use tags (and versioning based on tags), that more or less replaced svn/cvs keyword substitution in the git ecosystem.
[1] - https://svnbook.red-bean.com/en/1.7/svn.advanced.props.speci...
[2] - https://www.gnu.org/software/trans-coord/manual/cvs/html_nod...
[3] - https://git-scm.com/book/en/v2/Customizing-Git-Git-Attribute...
As the article says, it's not as easy a fit for Git.
The embedded version etc. strings could also make reproducible builds slightly more tricky than they already are.
Even if they're not worth the trouble for current software, they could be a big timesaver for archaeology/reconstruction of old software.
(My scripts have some cruft for marking builds from dirty source trees, in which case they are not reproducible – but in that case it’s OK.)
<git commit id>:path/in/repo/to/file.ext
to be able to retrieve the exact source file contents used to build something.It is very useful if the same code compiles to the same binary if no changes occurred.
But having the date and time or a version control comment change a binary may lead to unnecessary churn with dependencies, packages, and integrity checks.
The worst ones are the ones that expand the log messages, when they are implemented in such a way that it becomes permanent.
A wall of short commit messages condensed into a block comment don't help anyone understand anything, without the actual changes to refer to.
Keywords are supposed to help someone who works outside of the context of the version control, but that's ironically the person who is trying to apply a patch that is failing because of the expanded cruft, whereas the person working in the version control system may have a way to do the merge on unexpanded artifacts.