Mercurial > CVu-Mercurial
comparison Hg.txt @ 1:608947872f72
Add intro and some minor edits.
author | Jim Hague <jim.hague@acm.org> |
---|---|
date | Thu, 11 Dec 2008 11:17:15 +0000 |
parents | 48d338d29ce9 |
children | ee7f1e2c01a6 |
comparison
equal
deleted
inserted
replaced
0:48d338d29ce9 | 1:608947872f72 |
---|---|
21 Bugger. | 21 Bugger. |
22 | 22 |
23 Let's look into Mercurial | 23 Let's look into Mercurial |
24 ------------------------- | 24 ------------------------- |
25 | 25 |
26 Mercurial is a Distributed Version Control System (DVCS). It's one of a | 26 If you're at all interested in version control systems - and any |
27 number of DVCSs that have gained significant popularity in the | 27 software developer not using one daily is a strange beast indeed - |
28 last few years. I switched a significant work project over to Mercurial | 28 you'll at least have become vaguely aware in the last few years of the |
29 (from Subversion) over a year ago, because a customer site required | 29 growing maturity of the latest group of version control systems |
30 on-site work but could not allow access back to the company VPN. I | 30 offering funky new stuff. These are the distributed version control |
31 chose Mercurial for a variety of reasons which I won't bore you with | 31 systems (DVCS). There is more to them than just their headline |
32 here. If you must know, see the box. | 32 attributes, being able to check history and do checkins while |
33 disconnected from a central server, but these are damm useful to start | |
34 with. | |
35 | |
36 When I first heard about DVCS, it wasn't immediately obvious to me (to | |
37 put it mildly) how they would work. After years of using a centralised | |
38 version control system, I had rough mental model of what went on. But | |
39 how do you cope without the central server forcing ordering onto the | |
40 changes? | |
41 | |
42 Since then I've started using Mercurial. Mercurial is a DVCS. It's one | |
43 of three DVCSs that have gained significant popularity in the last few | |
44 years, the other two being Git and Bazaar. I switched a significant | |
45 work project over to Mercurial (from Subversion) over a year ago, | |
46 because a customer site required on-site work but could not allow | |
47 access back to the company VPN. I chose Mercurial for a variety of | |
48 reasons which I won't bore you with here. If you must know, see the | |
49 box. | |
33 | 50 |
34 What I want to do in this article is give you an insight into how a | 51 What I want to do in this article is give you an insight into how a |
35 DVCS works. OK, so specifically I'm going to be talking about | 52 DVCS works. OK, so specifically I'm going to be talking about |
36 Mercurial, but Git and Bazaar attack the problem in a similar way. But | 53 Mercurial, but Git and Bazaar attack the problem in a similar way. But |
37 first I'd better give you some idea of how you use Mercurial. | 54 first I'd better give you some idea of how you use Mercurial. |
173 At this point you may be wondering about directories. 'hg mkdir' | 190 At this point you may be wondering about directories. 'hg mkdir' |
174 perhaps? Well, no. Mercurial only tracks files. To be sure, the | 191 perhaps? Well, no. Mercurial only tracks files. To be sure, the |
175 directory a file occupies is tracked, but effectively only as a | 192 directory a file occupies is tracked, but effectively only as a |
176 component of the file name. This has the slightly unexpected result | 193 component of the file name. This has the slightly unexpected result |
177 that you can't record an empty directory in your repository. | 194 that you can't record an empty directory in your repository. |
195 | |
178 (Footnote: I tripped over this converting a work Subversion | 196 (Footnote: I tripped over this converting a work Subversion |
179 repository. One possibility is to create a placemaker file in the | 197 repository. One possibility is to create a placemaker file in the |
180 directory. In the event I created the directory (which receives build | 198 directory. In the event I created the directory (which receives build |
181 products) as part of the build instead.) | 199 products) as part of the build instead.) |
182 | 200 |
251 into a foreign repository. By default these will act on the repository | 269 into a foreign repository. By default these will act on the repository |
252 you cloned from, but you can specify any other repository. | 270 you cloned from, but you can specify any other repository. |
253 | 271 |
254 More on those in a moment. First, though, I want to show you something | 272 More on those in a moment. First, though, I want to show you something |
255 you can't do in Subversion. Start with the repository with 4 changes | 273 you can't do in Subversion. Start with the repository with 4 changes |
256 we just cloned. Let's focus on the first couple of lines. | 274 we just cloned. I want to focus on the first couple of lines, so I'll |
275 wind the working copy back to the point where only those lines exist. | |
257 | 276 |
258 $ hg update -r 1 | 277 $ hg update -r 1 |
259 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | 278 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
260 | 279 |
261 And make a change. | 280 And make a change. |
361 he started his takeoff run. | 380 he started his takeoff run. |
362 $ hg commit -m "Merge first line branch" | 381 $ hg commit -m "Merge first line branch" |
363 $ | 382 $ |
364 | 383 |
365 (Footnote: I'm no poet. The poem is, of course, 'Silly Old Baboon' by | 384 (Footnote: I'm no poet. The poem is, of course, 'Silly Old Baboon' by |
366 the late, great, Spike Milligan.) | 385 the late, great, Spike Milligan. From 'A Book of Milliganimals', |
386 Puffin, 1971.) | |
367 | 387 |
368 Here's the ASCII art again showing what just happened. Oh, and notice | 388 Here's the ASCII art again showing what just happened. Oh, and notice |
369 that Mercurial has done the right thing with regard to the rename. | 389 that Mercurial has done the right thing with regard to the rename. |
370 | 390 |
371 $ hg glog | 391 $ hg glog |