I was wondering if there are any source control systems that allow administrators to define custom keywords which are replaced on check in with different behaviours (i.e. similar to $Id$ or $Author$ etc.)
I’m only familiar with SVN and CVS which have a set list of keywords, but there would be applications for something like $LineNo$ or $MyLicenceText$. I’m sure there would be other use cases. The idea would be to create a plugin architecture where the behaviour of a keyword could be defined or modified.
So my question is – is there a tool (commerical or open source) that already has something like that?
Edit: Doing it as a part of the build is a valid way of solving the problem, however would cause issues if a developer did not do a build prior to check-in. Imagine for something like $LineNo$, if the build was not in sync with the source exactly, the value could easily be incorrect. For keywords with more static behaviour though (like $MyLicenceText$) replacement on build is a valid solution.
You could look at the
filterattribute that you can set with a.gitattributesfile in Git. This lets you define two transformations, known as smudge and clean, which let you transform a file in any arbitrary way when you check it out and transform it back again when you check it in.