Ignore a Scratchwork Folder
I wanted to share a small trick that has helped me be a little more productive this year.
Here’s the TL;DR:
$ echo 'DevScratch/' >> ~/.gitignore
$ git config --global core.excludesFile ~/.gitignore
# (put some notes and scratchwork in the DevScratch folder of whatever repo I'm in)
(Actually I use
willtmp, but your name’s probably not Will.)
This trick solves a problem that I’ve had with file organization since forever: where do I keep my scratchwork? (By “scratwork,” I just mean notes, snippets, shell scripts that test for the presence of a particular bug, ideas, etc.) If it’s in the same folder as the actual git repo, it shows up in diffs, might accidentally get committed, etc. If I don’t keep it in the same folder as the git repo, it wanders the wasteland of my hard drive and gets lost.
Where I keep my scratwork right now, is I do this:
- Create and configure a global gitignore file.
- Put a distinctive directory name in there, like
- In all my local repos, create a directory called
- Scratchwork goes in
This approach has a few advantages:
- Contextual Organization: My scratch files stay neatly associated with the relevant repository.
- Uncluttered Git Diffs: These files won’t appear in
git diff, making it easier for me to see what I’m committing and what’s actually changed.
- Prevention of Accidental Commits: Globally ignored, the
DevScratchfolder reduces the risk of committing temporary or experimental work.
The main drawback I’ve found is that I sometimes accidentally match a file
glob from the parent repo. For example, if something in
test_*.py, it might get invoked by the unit test runner. For that reason, I
have a tendancy for everything in
DevScratch either to be a shell script, or
to be a markdown file with code snippets in it. My absolute favorite thing to
put in the
DevScratch folder is a single shell script called
repro.sh that reproduces
the bug I’m currently trying to fix, but that idea deserves its own post.
So the next time you need to take temporary notes about a complex bug you’re trying to fix, or write little shell scripts to check on things, but that definitely shouldn’t be committed to the main repo, consider adding them to a globally gitignored scratchwork folder.
Till next week, happy learning!