Hacker News new | ask | show | jobs
by nrvn 384 days ago
I have been using the "bare git at $HOMEDIR"[0] approach for several years.

Benefits:

1. no extra tools.

2. one off task for setting up the git repo and alias `dotfiles='/usr/bin/git --git-dir=${HOME}/.config/dotfiles --work-tree=${HOME}'`

3. all files are where they are, no symlinks, copies, etc.

Caveats:

1. $HOME/.gitignore just ignores everything because it contains a single "*" char[1]. So adding new files must be done with dotfiles add -f ~/.newfile to track.

Refs:

[0] - https://www.atlassian.com/git/tutorials/dotfiles [1] - https://github.com/nrvnrvn/dotfiles/blob/main/.gitignore

2 comments

I like this a lot. The caveat is not that bad because anyway with stow or other solutions you still need to add things manually.

I believe one could even add stuff like `!.bashrc` to the gitignore so it can keep track of these files automatically. Hence we could have template .gitignore for most common use cases.

I don’t do the * in the gitignore because I use the confit alias and disable showing untracked files. That way I can use the .gitignore in the home as my global gitignore

I love the bare repo method though. I’ve been using it for several years and haven’t had a need for another

You can use ~/.config/git/ignore (core.excludesFile).
Is that an automatic/default setting or did you just pick that path and you have to set the ignore filename in .gitconfig? Because, I know I could name it ~/.gitignore_global too.
That's the default path, you can change it. Original comment has the config variable.
that's pretty cool. I didn't realize that. when I first started that wasn't how it was being used so I never picked up on it. Using .config/git/ saves me a couple of lines in the config file.