There are other reasons why it's a _horrible_ idea, like the fact that it
can mess up binary files etc (so if you do keyword substitution, you also
need to suddenly care _deeply_ whether a file is binary or not).
The whole notion of keyword substitution is just totally idiotic. It's
trivial to do "outside" of the actual content tracking, if you want to
have it when doing release trees as tar-balls etc.
So:
- inside of the SCM, keyword substitution is pointless, since you have
much better tools available (like "git log filename")
- outside of the SCM, keyword substitution can make sense, but doing it
should be in helper scripts or something that can easily tailor it for
the actual need of that particular project.
For example, we actually do a certain kind of keyword subtituion for the
kernel. Look at the -git snapshots: the script that generates the snapshot
diffs has a simple sequence in it to "keyword substitute" the Makefile for
the EXTRAVERSION flag, so the diff will result in the Makefile having the
knowledge of which git SHA1 version the resulting patch was, even though
the thing isn't a git tree any more:
...
git-read-tree $CURCOMM
git-checkout-index Makefile
perl -pi -e "s/EXTRAVERSION =.*/EXTRAVERSION = $EXTRAVERSION/" Makefile
git-diff-index -m -p $RELTREE | gzip -9 > $STAGE/patch-$CURNAME.gz
...
So this is how to do keyword substitution in a _sane_ way.
Sure, we could do something like this as a git script, and support it
"natively", but the fact is, keyword substitution is just stupid.
Linus
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html