What is the right way to maintain a “version for the server” – with only config files changed, in Git?

You could keep versioned:

  • two “value config files”, with the right values for each environment
  • a template config file, with value placeholder in it (for instance, @@PORT_NUMBER@@)
  • a script able to generate the actual config file depending on the current environment
  • a content filter driver which, on checkout, will trigger the script in order to generate the right config file.

content filter driver

Note: that supposes your template config file has a recognizable content (the filter doesn’t have a name or path of the file). See “Git equivalent of subversion’s $URL$ keyword expansion” for more on the limitation of git content filter driver).

Leave a Comment