Shopify SCM

Posted by tobi — 04:21 PM Feb 17

So we went from Darcs -> SVN -> Mercurial -> Git in just over 3 years and without losing a single commit in the process. 4th one is a real winner though. If you don’t use git yet you should really check it out.

If you are unfamiliar with GIT, I recommend watching Peepcode’s introduction. We have a site-license for peepcode at jadedPixel and often run the latest screencasts on the big LCD in the office during lunch break. Its great.

Comments

  • Allan Odgaard 17 Feb 18:29

    Can you elaborate on what made you move away from Mercurial?

    I have embraced Git, but it can be very daunting to new users, not just because it is distributed, but also because of the implementation/interface, like the presence of an index tree/cache, not having monotonically increasing revision numbers, etc.

    So I am looking at Mercurial as an alternative which, although not as powerful, would not have the same steep learning curve nor allow users to shoot themselves in the foot (e.g. by rebasing after a push — something I have found a surprising amount of users do).

    So far though I have no real experience with Mercurial, so I would be interested to hear yours.

  • tobi 17 Feb 20:49

    Allan,

    we used mercurial pretty intensively for about 6 months on the project or about 1.5k checkins.

    What you say is true: It is a lot easier to learn and a very gentle introduction into the distributed SCM world. It has some disagreeable defaults as well ( pull -> merge / update split ) but overall its commands are pretty forgiving and when you come from subversion most commands do what you expect ( git revert is a huge gotcha ).

    There were two reasons which finally lead us to switch to git, one minor and one major.

    The minor reason was speed. Git is simply faster and at 5k checkins it really shows.

    The major reason was something hard to predict when coming from subversion: Once you fully embrace the the world of branches you want more than simply multiple directory branching which mercurial offers.

    In mercurial every checkout is a branch. To create a new branch you clone one checkout into another and build a tree of sorts. When compared to gits multiple branches in the same repository approach it simply does not stack up in every day programming. In our project it is not unheard of that 10 branches exist at the same time and git makes this a lot more natural.

  • Peter McKinnon 27 Feb 14:48

    Tobi:

    FYI: Your blog isn’t rendering correctly on my browser (IE7)....

    Also, I the manager of the Ottawa Adobe Flex Users Group – I would like to invite you to speak on Ruby on Rails & Shopify. Our next speaker for March 5th will talk about Adobe Flex and Ruby integration.

    www.ottawaflex.com

Commenting are now closed…