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.
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).