Ten-Year Anniversary of Using Darcs and Git for My Emacs Config

| Comments

I just happened to take a look at the log of my Emacs configuration Git repository yesterday. I don’t know what made me page through the entire log, but I was very excited to see that the oldest log entry was dated March 13, 2004. That’s ten years to the day!

commit 0bfa6223629f72065f65fd44c2741d48a9019f07
Author: thehead <thehead@patshead.com>
Date:   Thu May 13 16:31:21 2004 -0400

    Initial Import

That was the day that I migrated my Emacs configuration files from CVS to Darcs. I didn’t import my CVS history. Having history is handy when I mess something up and can’t figure out what I did wrong. Only recent history is useful for that. I didn’t think that ancient history was worth the trouble of importing one commit at a time into Darcs.

I miss Darcs

At the time, Git didn’t exist yet. It was still over a year from its first release. I had already chosen Darcs as my preferred “next generation” version control system. Back in 2004, I still had a separate laptop and desktop. We didn’t have Wi-Fi hotspots in every coffee shop, and we didn’t have convenient things like Seafile or Dropbox to keep our files in sync.

Distributed version control with Darcs was an amazing upgrade, and storing configuration files in Darcs was very convenient. I didn’t have to hope that I remembered to check out my projects before I left home or worry about finding an Internet connection if I forgot.

I was a late adopter of Git. I didn’t migrate my Darcs repositories to Git until March 2011. In my opinion, Darcs has a much more user-friendly command-line interface, and I also preferred the Darcs concept of “every copy is a separate branch.”

If you switch branches often, Git will be faster and more convenient, but it was handy knowing that each copy of each Darcs repository automatically acted like a distinct branch. Combining that feature with Darcs’s excellent merging made it easy to commit small, host-specific changes to local repositories.

Finally giving in to peer pressure

I had to give up on Darcs. Git may be a pain in the neck in comparison, but there’s just too much friction when the rest of the world has decided to use Git. It looks like I converted my Emacs repository three years ago.

I’m surprised so much time has passed already. I think I’m still less comfortable with Git today than I was just a few months into using Darcs. Git is not only less intuitive than Darcs, but I run into merge conflicts much more often than I ever did with Darcs. Git’s merging feels like a hammer compared to the scalpel of Darcs’s “patch theory.”

Do you keep your configuration files in version control? Are you also using Git?