Keep settings in branch
I begin to use git for software development.
I have a project on github. This project also involves some user-settings stored in dedicated settings-files.
- Will the history be gone after rebasing in git
- data versioning with git : custom diff for specific files
- git merge and rebase two repositories
- How to version control data stored in mysql
- How to determine master, origin, head
- Include utility repository in main project repository and allow customization
On github the settings should be empty (like this)
### Settings: ## Your name $name = ""; ## Your email adress $email = ""; ## and so on
However, I also have the project running on my computer (or server). My personal version of the project should have all settings filled out.
I would like to have two branches for that. The personal branch should contain all my settings. The master branch should be the one where I develop the software and which I upload to github.
I would like to merge the master branch into the personal branch from time to time to keep my system up-to-date. However, whenever I try to merge the branches, my personal settings get lost.
Is there a way to do this or am I just doing something wrong (what)?
3 Solutions collect form web for “Keep settings in branch”
In your personal branch, you could keep:
- the GitHub config file unchanged (with no value), but with a different name (
- a “value file” with your personal value
- a “smudge” script able to generate the actual config file using the template one and your personal values
That script is triggered on any
git checkout as a content filter driver.
That way, you can merge
master onto your personal branch as many time as you want, your config values will not be modified.
You can create a setting file like
setting-sample, and modify
.gitignore to ignore the real setting file (i.e.
setting). So the empty setting file will be kept in remote repo, and your personal setting file will be kept in your local repo.
You may commit the empty settings file and then commit a .gitignore file pointing to the original file, so in that case, the users would download the file but git will ignore the changes that users make.