
Keep TODOs in git - beghbali
https://coderwall.com/p/r2g2rq
======
evincarofautumn
This is a bad idea. I can come up with a TODO at any time; I especially _do_
when I’m in the middle of something and have staged local changes. In that
case, this:

    
    
        git commit --allow-empty -m "TODO: $*"
    

Will do the wrong thing—committing my staged changes even if I didn’t want
that, and giving them a wrong commit message. If the change is small, I might
not notice. _If_ I were going to involve Git in my task tracking, I would much
prefer something like this:

    
    
        todo() {
          touch TODO
          printf "%s\n%s\n\n" "$(date)" "$*" | cat - TODO > TODO.tmp
          mv TODO.tmp TODO
          $(git config core.editor) TODO
        }

~~~
merlincorey
Before reading the article, I thought it was going to be about keeping a TODO
file in your revision control so that you can see when things are
added/removed by reviewing the history.

~~~
binarymax
I do this with tdl and add the .tdldb file to my commits. Works great!

~~~
dpcx
Funny that neither Google nor Bing know what "tdl" is on the first page of
results; luckily, tdldb makes it work.

------
eeperson
Why not just use 'git notes'? This seems like exactly the sort of use case
that feature is for.

~~~
Tobu
Would notes survive a rebase workflow? (not that the original tip's empty
commit does, which is quite a flaw)

~~~
eeperson
It appears that the notes survive a rebase but they don't point to anything in
your history. They continue to point to a commit before the rebase.

~~~
Tobu
Too bad. As I understand it that's because rebase relies on the patch format
as the full representation of a commit; but that excludes the commit's notes.
replacement refs and grafts survive it in squashed form because they are part
of the graph traversal.

------
kamaal
Nice,

But I've checked nearly everything thing out. Online kanban boards, Trello,
Asana, Org-Mode you name it...

Its extremely hard to beat the flexibility of a diary and pencil/pen. You can
doodle, scratch, draw, record, take notes, maintain time, review history,
write a lesson, work out problems... The list is endless... You can do all
this in a easy extremely distraction less tool. And to be frank maintaining a
diary gives me a great deal of discipline in fighting procrastination. Diaries
also are great progress indicators.

Most successful people I know maintain diaries. Diaries and Pens are here to
stay.

------
emmelaich
For a more fancy mature solution, consider <http://bugseverywhere.org/>

Git (and dvcs generally) is a nice hammer to hit all sorts of things that look
like storage/content/versioning nails.

~~~
alexabramov
Interesting. I was looking for a demo but bugs.bugseverywhere.org is currently
down.

------
ultimoo
clever code: keeping an empty todo commit in the repo tree.

clear code: keeping a textual todo or org mode file committed in the repo.

While this is another fun and a clever trick that can be done with git and it
delights the geek within me, I wouldn't do this while collaborating on
production code with a team.

------
emillon
For that purpose I use ticgit which creates an unrelated branch in a git
repository to store data. There's even a web client if you want to go fancy.

<https://github.com/schacon/ticgit>

~~~
Tobu
The last commit is two years old and points to:
<https://github.com/jeffWelling/ticgit>

------
micahmcfarland
Wow, nice tip. Seems like combining this with Sublime Todo
(<https://github.com/robcowie/SublimeTODO>) would make for a really good
setup.

------
baghali
The best TODO tool for me is pen & a paper. Silence is also the best music I
have found to listen to while working :)

------
ricardobeat
Anyone using <http://todotxt.com/>?

------
general_failure
I pretty much always have a file called TODO in version control.

~~~
j-m-o
Agreed, at least for independent projects.

I could use all sorts of git tricks that could do the same thing, but
sometimes it's nice to just keep an easy, version controlled text file I can
knock things off of.

That said, I frequently sprinkle in '//TODO: ...' or '//XXX:' in source code
comments when I'm in the middle of hacking. It's pretty easy to aggregate
those back into my main todo list when I'm done.

------
EugeneOZ
Bad advice. Keep tasks in issue tracker.

