Version control of dotfiles with machine-specific changesets

bash, dotfiles, git, git-config

Solution

you might want to split out host-specific settings into a non-tracked file. the `include`-statement is available in git>=1.7.10.

something like following could do the trick:

 [include]
 path = ~/.gitconfig.local

i guess, what would be really nifty, would be something like:

 [include]
 path = ~/.gitconfig.${HOSTNAME}.local

and then track both `.gitconfig.foo.local` and `.gitconfig.bar.local` in the repository, but the former get's used on host `foo` and the latter on host `bar`. unfortunately variable-expansion is currently not supported.

alternatively you might set your GIT_CONFIG environment-variable to a system-specific value in your `.bash_profile`/`.profile`/`.bashrc`

finally, git uses `${prefix}/etc/gitconfig` for host-wide configuration, probably you can use this for host-wide configuration.

Problem

I store dotfiles in a git repo, however I do have different set of local changes for `.gitconfig` (which is under version control) - it may be different environment (autocrlf true) or different username. Right now every time I checkout the repo I go for: ``` git stash save && git pull && git stash apply ``` Which doesn't seem like a best practice to me. How should I go about having different set of local changes on different machines? What's the cleanest and the most explicit way? Or am I even addressing the wrong problem to begin with?

Original source

Related problems