Introduction to Mercurial, or "Why we're switching from SVN no matter what"
Getting in touch with your Mercurial side: How you’ll be happier, more productive, and less ragey. Adam Pah With contributions from: Dan McClary Irmak SirerMonday, January 28, 13 1
So what is Mercurial? • Mercurial is a Distributed Version Control System (DVCS) • Mercurial (along with Git and Bazaar) is a part of the next generation version control systems • These systems have been designed to address problems, annoyances, and failings in SVNMonday, January 28, 13 2
So why are we switching? • SVN is frustrating when you try to use it in a more advanced fashion or in a large collaboration. • Sometimes it’s just frustrating when it’s only you. • SVN is slow once repositories get large. • This leads to using it less or only once a stopping point in the work is reached, defeating the purpose of version control. • SVN is not smart. • SVN could not merge it’s way out of a paper bag, let alone keep track of constantly changing ﬁles. • Did I mention that SVN is frustrating?Monday, January 28, 13 3
Differences between SVN and Mercurial: Paradigm SVNSource: http://www.hginit.comMonday, January 28, 13 4
Differences between SVN and Mercurial: Paradigm MercurialSource: http://www.hginit.comMonday, January 28, 13 5
Differences: Nitty Gritty • SVN keeps revisions of each commit • Mercurial keeps changesets at each commit • So what is the difference? • If you and I were both working on the same repository, we both makes lots of changes and go our own way. • When we inevitably have to put everything back together SVN looks at the both of our last revisions and tries to mash them together. • This typically does not work. • Mercurial keeps track of every change in each ﬁle. • When we merge back together it just sums all the changes in the changesets on its own and applies them the best it can.Monday, January 28, 13 6
Differences: Nitty Gritty • But wait a minute!!!! Merging is the devil! SVN taught me that over and over again. • Mercurial is different, it accepts merging and does it intelligently. • This is for two main reasons: • Keeping track of changesets is one integral reason, it has more of an idea what has changed • Separating commits from pushing to others forces it to have a more robust tool set to merge. Branching and merging are the common tools of a Mercurial workﬂow.Monday, January 28, 13 7
Mercurial Workﬂows All aloneMonday, January 28, 13 8
Mercurial Workﬂows Anarchy Irmak Adam DanMonday, January 28, 13 9
Mercurial Workﬂows Centralized Store Text Irmak Dan AdamMonday, January 28, 13 10
A conﬁg all to myself • Just like vi or emacs, mercurial has a conﬁguration ﬁle in your home directory • You can edit this ﬁle at ~/.hgrc • You will need to set your username and e-mail in it (Mercurial won’t work without it) • You can also enable new extensions in this ﬁle, such as hg fetch or hg convertMonday, January 28, 13 11
A particular slide catching your eye?
Clipping is a handy way to collect important slides you want to go back to later.