I've used svn and git, but something still doesn't feel right. I still like "cp -pr" and "diff -r" for version control. I waste disk space with whole directory copies, but I eventually "rm -rf" the really old ones. I don't trust automatic merges so I do them manually, yanking and pasting between vim edit panels. I am a paleolithic relic.
I do this too, partly because when I have branches and revisions as actual directories and files, I can use the usual Unix tools on them, instead of having to use a parallel set of tools provided by the version control system.
I have another reason for the old-fashioned approach. I do hedge fund accounting for a living. With my software tools I can reproduce every result ever created for a fund from original input, even going back several years. I have translators for various brokerage feeds that I've had to maintain and adapt for years -- and this is no small feat considering that information technology people in the financial industry can't do a complete, consistent, or stable data feed to save their lives.
Whenever I make a change, either to a translator or even the core accounting code, I make a copy of the library. I then have to go back and run all funds, including my test funds, as a regression test using the new modified library. I have to do that one fund at a time, testing to make sure no catastrophic differences have arisen. So during this interim period, I have some funds running on the new code and some funds running on the old code. BOTH versions have to be "live" at the same time.
I also have to keep backups of the data as well, both inputs and outputs, so I can "diff" those easily. I'm sure as heck not gonna put that into git.
So I'm not just stick in the mud trying to be contrary -- I have work to do, and it needs to be as reliable as a Swiss watch.
Oh yes, it's dangerous, and I rarely use it. It's funny, I just cd'ed into my ~/version/loom and saw a directory "58" sitting there dated 2008-08-17. I'll probably keep that one. Then there's "86.12.before_prune" dated 2009-05-20. I could "rm -rf" that one pretty safely, since my prompt shows my current directory as "~/version/loom". Here goes!
I don't know, maybe if you're old-fashioned you won't like the trash metaphor, but I love it. And every so often I just do
trash-empty 30
to clean out anything older than a month.
I like the trash metaphor. I haven't formalized it yet, but often I will simply "mv" things to ~/old or ~/tmp and let it rot there for a few months. Thanks for the tip, I'll check it out.
I quite like the way Gmail handles this issue. Stuff just goes stale and drops of the first page of your inbox. But it's still there --- and I now feel that it's barbaric to delete emails.
By the way there's another trick I sometimes use when I really really want to delete a directory but I also really really don't want to make a mistake:
cd ~/somewhere
mv the_thing_i_want_to_delete ~/tmp/go_away
cd ~/tmp
rm -rf go_away
I'll also use Tab to command-complete the "go_away", and pause slightly before pressing Enter.
Sometimes I'll even just let it sit there in ~/tmp for a few months before clobbering it.