My last brush with source control was years ago with Microsoft’s Visual SourceSafe. Circa 2003, I found it very lacking and poor performing. We were mandated to use it to house our source (classic ASP and early .NET), we ran monthly log reviews against the repository. It wasn’t pleasant to work with.
Around this time, we installed Aldon change management system on our IBM iSeries (that is what our box was called at the time; IBM has rebranded it to System i, which has to be one of the most unfriendly Google search terms ever). Aldon is a centralized RCS, written to take advantage of the unique features of the iSeries / System i. It uses the familiar checkout/checkin process, but has worked very well. We’ve had no problems with it.
So I’m trending back into extracuricular programming and has happy to see projects like Git and Mercurial (ha!) reach the next stage of source versioning. I was aware when Linus Torvalds switched to BitKeeper, it made big waves in the open source community. And was not totally surprised when Bitkeeper changed their agreement with the Linux kernel dev community and discontinued the free repository. Chillingly ironic that Linus wasn’t offered a professional account, given that Bitkeeper was inspired by the desire to streamline Linus’ workflow with source code management.
Anyway, like I said in an earlier post, I was looking for a new blogging and hosting solution and came across Octopress and GitHub. And happily, GitHub can host static sites, which is fine with me since many blogs are 95% essentially static content.
Now I’m learning about Git and love it so far. Learning about Ruby again, it’s been quite a few years since I used it. One of the first projects I wanted to try was writing RPG (IBM Report Program Generator) and UIM (IBM User Interface Manager tag language) lexers for Pygments. Alas, to learn that Pygments is written in Python (yes, the Py… is a dead giveaway), and adding insult to injury, the main repository is in Mercurial (ha! again). To be an effective contributor, I should be familar with Hg. The saving grace is it seems the syntax (git|hg clone, git|hg add, git|hg commit) is seemingly identical. Unsurprising that both projects started as a reaction to the BitKeeper debacle and probably the two projects (Git and Mercurial) feeding off each other and performing the same functions as a DSCM.
That was the really long way of saying I found the following helpful learning about Git. I’m interested in hearing if the same source tree can be managed by both Git and Mercurial, with each SCM ignoring the other’s .git or .hg directories. Hmmm.
edit: I just found this link which confirms my thought processes: http://programmers.stackexchange.com/questions/104786/having-a-git-repo-and-mercurial-in-the-same-directory:
Just put .hg in .gitignore (and .git in .hgignore) and you are more than good to go.
The only real downside is storing the repository twice… but disk is cheap. Remember to push the source to both remotes, that’s what a shell script is for. So I can go about pushing the same source to GitHub and BitBucket. Cool!
Subreddit for Git
http://www.reddit.com/r/gitStackOverflow question differences between Mercurial and Git
http://stackoverflow.com/questions/35837/what-is-the-difference-between-mercurial-and-gitMercurial: The Definitive Guide
http://hgbook.red-bean.com/read/Introduction to Git by Randal Schwartz (video)
http://vimeo.com/35778382Introduction to Git by Scott Chacon (video)
http://www.youtube.com/watch?v=ZDR433b0HJY
Oh, and why Mercurial gets a “ha” from me? Mercurial goes by the abbreviation Hg (the symbol for Mercury), and that happens to be my initials as well! Maybe I should go by the alias hydrargyrum.
–Hg