introduction to mercurial, or "why we're switching from svn no matter what"

Post on 23-Jan-2015

195 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

An introduction and justification of why we're moving away from SVN and towards mercurial.

TRANSCRIPT

Getting in touch with your Mercurial side:How you’ll be happier, more productive,and less ragey.

Adam Pah

With contributions from:Dan McClaryIrmak Sirer

1Monday, January 28, 13

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 SVN

2Monday, January 28, 13

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 files.

• Did I mention that SVN is frustrating?

3Monday, January 28, 13

Differences between SVN and Mercurial: Paradigm

Source: http://www.hginit.com

SVN

4Monday, January 28, 13

Differences between SVN and Mercurial: Paradigm

Source: http://www.hginit.com

Mercurial

5Monday, January 28, 13

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 file.

• When we merge back together it just sums all the changes in the changesets on its own and applies them the best it can.

6Monday, January 28, 13

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 workflow.

7Monday, January 28, 13

Mercurial Workflows

All alone

8Monday, January 28, 13

Mercurial Workflows

Anarchy

Adam DanIrmak

9Monday, January 28, 13

Mercurial Workflows

Centralized Store

Adam

DanIrmakText

10Monday, January 28, 13

A config all to myself

• Just like vi or emacs, mercurial has a configuration file in your home directory

• You can edit this file 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 file, such as hg fetch or hg convert

11Monday, January 28, 13

top related