It's very common to have at least one configuration file in any project. Every time I share project with
git update-index --assume-unchanged ...
Filter drivers are the "automatic" way of implementing option 3, as detailed in "when you have secret key in your project, how can pushing to GitHub be possible?":
smudge script will, on checkout:
From there the developers can make any kind of modification they want to those config files.
It won't matter, because the
clean script will, on commit, restore the content of that file to its original (template) value. No accidental push there.