Scan for todos in a git diff
When I'm working on a feature or refactor, I often leave @todo
comments to remain in flow and deal with other points later.
I don't mind committing them to my feature branch, as long as I work them away before merging in.
On large branches, it can be easy to forget about that todo I left in there a few days ago.
class PodcastController{ public function process(Podcast $podcast): void { $podcast->process(); // @todo Broadcast event to trigger webhooks return $podcast; }
Before I merge, I pipe git diff
into a grep
call to scan for changes that include @todo
.
git --no-pager diff main..feature-branch | grep -i "^\+[^$]*@todo"
+ // @todo Broadcast event to trigger webhooks
If you want to double check your changes before comitting, you can use the same command with git diff HEAD
.
git --no-pager diff HEAD | grep -i "^\+[^$]*@todo"
Pouring this in a bash function
Here's a quick bash function to scan for todos:
function todos() { git --no-pager diff ${1:"HEAD"} | grep -i "^\+[^$]*@todo"}
Use it without an argument to look for todos you haven't committed yet, or pass the revisions you want to compare between.
# Look at current changestodos # Look for todos added between main and feature-branchtodos main..feature-branch