bgneal@1
|
1 .. role:: strike
|
bgneal@1
|
2 :class: strike
|
bgneal@1
|
3
|
bgneal@0
|
4 Introduction to Distributed Version Control with Mercurial
|
bgneal@0
|
5 ==========================================================
|
bgneal@0
|
6
|
bgneal@0
|
7 ----
|
bgneal@0
|
8
|
bgneal@1
|
9 (Sublimal Message)
|
bgneal@1
|
10 ==================
|
bgneal@1
|
11
|
bgneal@1
|
12 (We should be using this at work... )
|
bgneal@1
|
13 -------------------------------------
|
bgneal@1
|
14
|
bgneal@1
|
15 (Seriously... )
|
bgneal@1
|
16
|
bgneal@1
|
17 ----
|
bgneal@1
|
18
|
bgneal@1
|
19
|
bgneal@0
|
20 # whoami
|
bgneal@0
|
21 ========
|
bgneal@0
|
22
|
bgneal@0
|
23 Brian Neal <bgneal1@rockwellcollins.com>
|
bgneal@0
|
24
|
bgneal@0
|
25 Started at Rockwell Collins in July 1999
|
bgneal@0
|
26
|
bgneal@1
|
27 Perhaps you've recognized me from the following programs:
|
bgneal@0
|
28
|
bgneal@0
|
29 - UMS (July 1999 - Spring 2000)
|
bgneal@0
|
30 - Surgical Strike - (Spring - Fall 2000)
|
bgneal@0
|
31 - JTRS 2B - (Fall 2000 - Summer 2001)
|
bgneal@0
|
32 - SCAMP SEP - (Summer 2001 - October 2004)
|
bgneal@0
|
33 - TTNT (January 2005 - Present)
|
bgneal@0
|
34
|
bgneal@0
|
35 ----
|
bgneal@0
|
36
|
bgneal@0
|
37 Brief History of Version Control Tools
|
bgneal@0
|
38 ======================================
|
bgneal@0
|
39
|
bgneal@0
|
40 First Generation
|
bgneal@0
|
41 ----------------
|
bgneal@0
|
42
|
bgneal@1
|
43 - No networking!
|
bgneal@1
|
44 - Concurrency method: locks
|
bgneal@0
|
45 - Examples:
|
bgneal@0
|
46
|
bgneal@0
|
47 - SCCS - 1972
|
bgneal@0
|
48 - RCS - 1982
|
bgneal@0
|
49
|
bgneal@0
|
50 ----
|
bgneal@0
|
51
|
bgneal@0
|
52 Brief History of Version Control Tools
|
bgneal@0
|
53 ======================================
|
bgneal@0
|
54
|
bgneal@0
|
55 Second Generation
|
bgneal@0
|
56 -----------------
|
bgneal@0
|
57
|
bgneal@0
|
58 - Client/Server networking; CVCS (Centralized Version Control)
|
bgneal@1
|
59 - Concurrency method: merge before commit
|
bgneal@0
|
60 - Examples:
|
bgneal@0
|
61
|
bgneal@0
|
62 - CVS - 1990
|
bgneal@0
|
63 - IBM Rational ClearCase - 1992
|
bgneal@0
|
64 - Visual SourceSafe - 1994
|
bgneal@0
|
65 - Perforce - 1995
|
bgneal@0
|
66 - SVN - 2000
|
bgneal@0
|
67
|
bgneal@0
|
68 ----
|
bgneal@0
|
69
|
bgneal@0
|
70 Brief History of Version Control Tools
|
bgneal@0
|
71 ======================================
|
bgneal@0
|
72
|
bgneal@0
|
73 Third Generation
|
bgneal@0
|
74 ----------------
|
bgneal@0
|
75
|
bgneal@0
|
76 - Distributed networking; DVCS (Distributed Version Control)
|
bgneal@1
|
77 - Concurrency method: commit then merge
|
bgneal@1
|
78 - Examples:
|
bgneal@0
|
79
|
bgneal@0
|
80 - Bitkeeper - 2000
|
bgneal@0
|
81 - Darcs - 2003
|
bgneal@0
|
82 - Monotone - 2003
|
bgneal@0
|
83 - Git - 2005
|
bgneal@0
|
84 - **Mercurial** - 2005
|
bgneal@0
|
85 - Fossil - 2006
|
bgneal@0
|
86 - Bazaar - 2007
|
bgneal@1
|
87 - Veracity - 2011
|
bgneal@1
|
88
|
bgneal@1
|
89 ----
|
bgneal@1
|
90
|
bgneal@1
|
91 What is a CVCS Again?
|
bgneal@1
|
92 =====================
|
bgneal@1
|
93
|
bgneal@1
|
94 .. image:: images/cvcs.png
|
bgneal@1
|
95
|
bgneal@1
|
96 ----
|
bgneal@1
|
97
|
bgneal@1
|
98 What is a CVCS Again?
|
bgneal@1
|
99 =====================
|
bgneal@1
|
100
|
bgneal@1
|
101 Basic SVN commands:
|
bgneal@1
|
102
|
bgneal@1
|
103 - add, remove, copy, move, mkdir
|
bgneal@1
|
104 - checkout, commit, update, revert
|
bgneal@1
|
105 - merge, resolved, diff
|
bgneal@1
|
106 - status
|
bgneal@1
|
107 - lock, unlock
|
bgneal@1
|
108
|
bgneal@1
|
109 ----
|
bgneal@1
|
110
|
bgneal@1
|
111 So what's a DVCS look like?
|
bgneal@1
|
112 ===========================
|
bgneal@1
|
113
|
bgneal@1
|
114 .. image:: images/dvcs.png
|
bgneal@1
|
115
|
bgneal@1
|
116 All repositories are peers. By convention only, one repository is designated the master.
|
bgneal@1
|
117 It is possible for all peers to exchange changes.
|
bgneal@1
|
118
|
bgneal@1
|
119 ----
|
bgneal@1
|
120
|
bgneal@1
|
121 So what's a DVCS look like?
|
bgneal@1
|
122 ===========================
|
bgneal@1
|
123
|
bgneal@1
|
124 Mercurial (hg) vs SVN commands:
|
bgneal@1
|
125
|
bgneal@1
|
126 - add, remove, copy, move, :strike:`mkdir`
|
bgneal@1
|
127 - :strike:`checkout`, commit, update, revert
|
bgneal@1
|
128 - merge, resolve, diff
|
bgneal@1
|
129 - status
|
bgneal@1
|
130 - :strike:`lock, unlock`
|
bgneal@1
|
131
|
bgneal@1
|
132 Additional "distributed commands":
|
bgneal@1
|
133
|
bgneal@1
|
134 - clone, push, pull
|
bgneal@1
|
135 - incoming, outgoing
|
bgneal@1
|
136 - serve
|
bgneal@1
|
137
|