This week I decided to convert my Ledger repository over to Git. Previously I’d been using Subversion for about 4 years, and CVS for 1 year before that. There was a brief flirt with Darcs, and Mercurial, but neither ever attracted me enough to convert the repository officially.
Why did I choose Git? Actually, I’d looked at Git before, maybe a year ago, and decided it was too complex and funky. But some recent articles — and new versions of Git — prompted me to look again. Yes, it still looks complex, but then again, UNIX is complex and I’ve never stopped loving that since I made my first terminal connection. In fact, when you look at Git in terms of the UNIX philosophy, rather than as a single application, it starts making a whole lot more sense. (It was written by a UNIX-ish kernel developer, after all).
Migrating my official repository represented a special challenge, because I decided I wanted my entire history, not just the Subversion parts of it. I mean, I wanted to pull the CVS repo out of the archives and thread it along with the Subversion repo into a nice, coherent history going all the way back to version 0.1.
With other tools — even Mercurial — I would have shied away from such an undertaking. But Git not only made it possible, it was even straightforward and rather fun to do. This article chronicles my adventures at manually pasting together a version control history, and how powerfully Git was able to handle this task — which would have been patently impossible using CVS or Subversion.
Read More...Over the Christmas break I went on Bahá’í pilgrimage to the holy sites in Haifa, Israel. It was a nine day stay in Haifa, with three extra days spent traveling and resting in Tel Aviv.
Three of us went: my wife and I, and my mother-in-law. We wanted to avoid the confusion of who pays for what, so we just pooled all our money together, assigned me as the accountant, and after the trip I was supposed to figure out exactly how much each person owed, less what they originally put into the pot. These finances were further complicated by having to deal with three currencies (USD, Euros, and New Israeli Shekels), and the use of both cash in two currencies, Traveler’s Checks in US dollars, and my MasterCard.
This is just such a case where my double-entry accounting tool, Ledger, ought to shine. Imagine keeping track of all those details in Quicken — which doesn’t even support multiple currencies in a “cash” type account! (At least, it didn’t the last time I used Quicken).
Anyway, not only did my general ledger happily balance to zero at the end (and, because of the double-entry book-keeping, found many errors in my paper register), but I knew exactly how much to pay each person back, and even how much money I lost due to the conversion from dollars to shekels and back again. All this accounting work was done today using the Common Lisp version of Ledger (CL-Ledger), and took just under 3 hours to complete with 65 entries total and 172 transactions.