comparison Hg.tex @ 11:03d0ebf7ce0b

More speeling fixes. Thanks Dirk.
author Jim Hague <jim.hague@acm.org>
date Fri, 22 May 2009 21:14:57 +0100
parents 2e4d690ffabb
children b8b1e594670d
comparison
equal deleted inserted replaced
10:2e4d690ffabb 11:03d0ebf7ce0b
48 you'll at least have become vaguely aware in the last few years of the 48 you'll at least have become vaguely aware in the last few years of the
49 growing maturity of the latest group of version control systems 49 growing maturity of the latest group of version control systems
50 offering funky new stuff. These are the distributed version control 50 offering funky new stuff. These are the distributed version control
51 systems (DVCS). There is more to them than just their headline 51 systems (DVCS). There is more to them than just their headline
52 attributes, being able to check history and do checkins while 52 attributes, being able to check history and do checkins while
53 disconnected from a central server, but these are damm useful to start 53 disconnected from a central server, but these are damn useful to start
54 with. 54 with.
55 55
56 When I first heard about DVCS, it wasn't immediately obvious to me (to 56 When I first heard about DVCS, it wasn't immediately obvious to me (to
57 put it mildly) how they would work. After years of using a centralised 57 put it mildly) how they would work. After years of using a centralised
58 version control system, I had rough mental model of what went on. But 58 version control system, I had rough mental model of what went on. But
511 or merge, as you please. 511 or merge, as you please.
512 512
513 In practice this is more manageable then you might think. Consider a 513 In practice this is more manageable then you might think. Consider a
514 typical Mercurial usage, where the 'master' repo sits on a known 514 typical Mercurial usage, where the 'master' repo sits on a known
515 server, and everyone pulls changes from the master and pushes their 515 server, and everyone pulls changes from the master and pushes their
516 own efforts to the master. But default Mercurial won't let you push if 516 own efforts to the master. By default Mercurial won't let you push if
517 the receiving repo will gain an extra head as a result, so you 517 the receiving repo will gain an extra head as a result, so you
518 typically pull (and do any required merging) just before 518 typically pull (and do any required merging) just before
519 pushing. Subversion users will recognised this pattern. Subversion 519 pushing. Subversion users will recognise this pattern. Subversion
520 won't let you commit a change if your working copy is not at the very 520 won't let you commit a change if your working copy is not at the very
521 latest revision, so the Subversion user will update, and merge if 521 latest revision, so the Subversion user will update, and merge if
522 necessary, just before committing. 522 necessary, just before committing.
523 523
524 What, then, about a branch in the conventional sense of '1.0 524 What, then, about a branch in the conventional sense of '1.0
659 head that it already present in the target repo, and get any remaining 659 head that it already present in the target repo, and get any remaining
660 changes after that point. These changes are then copied over and 660 changes after that point. These changes are then copied over and
661 applied. 661 applied.
662 662
663 The Mercurial revlog format has proved remarkably durable. Since the 663 The Mercurial revlog format has proved remarkably durable. Since the
664 first release of Mercurial in April 2005, these have been a total of 5 664 first release of Mercurial in April 2005, there have been a total of 5
665 changes to the file format. However, of those, all but one have been 665 changes to the file format. However, of those, all but one have been
666 changes to the handling of file names. The most recent change, in 666 changes to the handling of file names. The most recent change, in
667 October 2008, and its predecessor in December 2006, were both 667 October 2008, and its predecessor in December 2006, were both
668 introduced purely to cope with Windows specific issues. The one change 668 introduced purely to cope with Windows specific issues. The one change
669 that touched the data structures described above was in April 2006. The 669 that touched the data structures described above was in April 2006. The
684 By this stage, I hope you can see that distributing version control 684 By this stage, I hope you can see that distributing version control
685 works by introducing branches where development takes place in 685 works by introducing branches where development takes place in
686 parallel. Mercurial treats these branches as arising naturally from 686 parallel. Mercurial treats these branches as arising naturally from
687 the commits made and transferred between repositories. Both Git and 687 the commits made and transferred between repositories. Both Git and
688 Bazaar take a slightly different viewpoint, and explicitly generate a 688 Bazaar take a slightly different viewpoint, and explicitly generate a
689 fresh branch for work in a particular repositories. But in both cases 689 fresh branch for work in a particular repository. But in both cases
690 the underlying principle of identifying changes by a globally unique 690 the underlying principle of identifying changes by a globally unique
691 identifier and resolving parallel development by merges between 691 identifier and resolving parallel development by merges between
692 overlapping changes is the same. And all three can be used in a truly 692 overlapping changes is the same. And all three can be used in a truly
693 distributed manner, with full history and the ability to commit being 693 distributed manner, with full history and the ability to commit being
694 available locally. 694 available locally.