comparison Hg.txt @ 7:8660df02d8a9

More subediting.
author Jim Hague <jim.hague@acm.org>
date Tue, 31 Mar 2009 12:09:11 +0100
parents a942bf7bc2ab
children abca12aaa38d
comparison
equal deleted inserted replaced
6:a942bf7bc2ab 7:8660df02d8a9
73 yourself. There was also a lack of Windows support for Git at the 73 yourself. There was also a lack of Windows support for Git at the
74 time. 74 time.
75 75
76 o Speed. Mercurial is fast. In the same ballpark as Git. Bazaar 76 o Speed. Mercurial is fast. In the same ballpark as Git. Bazaar
77 wasn't, and although it has improved significantly, has, in my 77 wasn't, and although it has improved significantly, has, in my
78 estimation, added user complexity in the process, and is still off the 78 estimation, added user complexity in the process, and at the time
79 pace for some operations. 79 of writing is still off the pace for some operations.
80 80
81 o Documentation. At the time, Bryan O'Sullivan's excellent Mercurial 81 o Documentation. At the time, Bryan O'Sullivan's excellent Mercurial
82 book (http://hgbook.red-bean.com) was a clear winner for best 82 book (http://hgbook.red-bean.com) was a clear winner for best
83 documentation. 83 documentation.
84 :::: 84 ::::
196 directory a file occupies is tracked, but effectively only as a 196 directory a file occupies is tracked, but effectively only as a
197 component of the file name. This has the slightly unexpected result 197 component of the file name. This has the slightly unexpected result
198 that you can't record an empty directory in your repository. 198 that you can't record an empty directory in your repository.
199 199
200 (Footnote: I tripped over this converting a work Subversion 200 (Footnote: I tripped over this converting a work Subversion
201 repository. One possibility is to create a placemaker file in the 201 repository. One possibility is to create a placeholder file in the
202 directory. In the event I created the directory (which receives build 202 directory. In the event I created the directory (which receives build
203 products) as part of the build instead.) 203 products) as part of the build instead.)
204 204
205 Given this, and the status output above that suggests strongly that 205 Given this, and the status output above that suggests strongly that
206 Mercurial treats a rename as a copy followed by a delete, you may be 206 Mercurial treats a rename as a copy followed by a delete, you may be
303 you use 'bzr revert -r' to bring the working copy to a past revision, 303 you use 'bzr revert -r' to bring the working copy to a past revision,
304 make a change and commit, then your latest version will be the past 304 make a change and commit, then your latest version will be the past
305 revision plus your change. Perhaps that's what Mercurial did? 305 revision plus your change. Perhaps that's what Mercurial did?
306 306
307 No. What Mercurial did is central to Mercurial's view of the 307 No. What Mercurial did is central to Mercurial's view of the
308 world. You took your working copy back to an old changeset, and the 308 world. You took your working copy back to an old changeset, and then
309 committed a fresh change based at that changeset. Mercurial actually 309 committed a fresh change based at that changeset. Mercurial actually
310 did just what you asked it to do, no more and no less. Let's see the 310 did just what you asked it to do, no more and no less. Let's see the
311 initial evidence. 311 initial evidence.
312 312
313 $ hg heads 313 $ hg heads
484 484
485 That's simple, as in 'most things are simple once you know the 485 That's simple, as in 'most things are simple once you know the
486 answer'. I found the explanation helpful, so this section attempts 486 answer'. I found the explanation helpful, so this section attempts
487 the 10,000ft (FL100 if you prefer) view of Mercurial. 487 the 10,000ft (FL100 if you prefer) view of Mercurial.
488 488
489 (Foornote: Bryan O'Sullivan's excellent Mercurial book has a chapter 489 (Foornote: For the curious, Bryan O'Sullivan's excellent Mercurial book
490 on the subject, and the Mercurial website has a fair amount of detail 490 has a chapter on the subject, and the Mercurial website has a fair amount
491 too. This is 'research', OK?) 491 of detail too.)
492 492
493 First remember that any file or component can only have one or two 493 First remember that any file or component can only have one or two
494 parents. You can't merge more than one other branch at once. 494 parents. You can't merge more than one other branch at once.
495 495
496 We start with the basic building block, which Mercurial calls a 496 We start with the basic building block, which Mercurial calls a
632 identifier and resolving parallel development by merges between 632 identifier and resolving parallel development by merges between
633 overlapping changes is the same. And all three can be used in a truly 633 overlapping changes is the same. And all three can be used in a truly
634 distributed manner, with full history and the ability to commit being 634 distributed manner, with full history and the ability to commit being
635 available locally. 635 available locally.
636 636
637 I want now to reflect on the consequences all this has for that 637 So instead of chatter on about workflows, I want instead to reflect on
638 all-important question of whether a DVCS is a suitable vehicle for 638 the consequences all this has for that all-important question of
639 your data. 639 whether a DVCS is a suitable vehicle for your data.
640 640
641 The first is a minor and rather obvious point. If you want to store 641 The first is a minor and rather obvious point. If you want to store
642 files that are both very large and which change often in your DVCS, 642 files that are very large and which change often in your DVCS, then
643 then all the compression in the world is unlikely to stop the storage 643 all the compression in the world is unlikely to stop the storage
644 requirements for the full project history from becoming 644 requirements for the full project history from becoming uncomfortably
645 uncomfortably large. 645 large, particularly if the files are not very compressible to start
646 with.
646 647
647 The second, and main, point is that there is an important question you 648 The second, and main, point is that there is an important question you
648 need to ask about your data. We've seen that a DVCS relies on 649 need to ask about your data. We've seen that a DVCS relies on
649 branching and merging to weave its magic. So take a close look at your 650 branching and merging to weave its magic. So take a close look at your
650 data, and ask: 651 data, and ask: