annotate text/workflows.txt @ 104:03591004ed44

workflows: Added plan for sharing via email and via shared repo (bitbucket).
author Arne Babenhauserheide <bab@draketo.de>
date Wed, 22 Apr 2009 13:10:11 +0200
parents 2bbea4b68181
children cdcc94ca41e7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
102
fa153f85e455 workflows: Changed the title to 'Learning Mercurial in Workflows'.
Arne Babenhauserheide <bab@draketo.de>
parents: 101
diff changeset
1 = Learning Mercurial in Workflows =
97
991719e0dbf5 Begun a workflow text.
Arne Babenhauserheide <bab@draketo.de>
parents:
diff changeset
2
991719e0dbf5 Begun a workflow text.
Arne Babenhauserheide <bab@draketo.de>
parents:
diff changeset
3 With Mercurial you can use a multitude of different workflows. This page shows some of them, including their use cases.
991719e0dbf5 Begun a workflow text.
Arne Babenhauserheide <bab@draketo.de>
parents:
diff changeset
4
991719e0dbf5 Begun a workflow text.
Arne Babenhauserheide <bab@draketo.de>
parents:
diff changeset
5 It is intended to make it easier for you to create your own workflow.
991719e0dbf5 Begun a workflow text.
Arne Babenhauserheide <bab@draketo.de>
parents:
diff changeset
6
103
2bbea4b68181 workflows: minor text polishing.
Arne Babenhauserheide <bab@draketo.de>
parents: 102
diff changeset
7 To write this page we gathered [real life workflows](wiki - workflows), so every more complex workflow in here has proven itself in real life usage. We begin with basic workflows and then go on to more complex examples.
99
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
8
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
9 <!--Structure:
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
10 * For whom? -> Why?
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
11 * What do you need? -> Resources + extensions
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
12 * Single Developer workflow
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
13 * Sharing changes. -->
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
14
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
15 <!-- Plan
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
16
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
17 * Simple workflows without extensions
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
18
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
19 * Complex Workflows, including collaborative patch development and similar.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
20
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
21 * Smoothing workflows with extensions -> i.e. shelve before merging.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
22
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
23 -->
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
24
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
25 == Sysadmin workflow ==
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
26
101
7bcdd8b947fe workflows: small fixes.
Arne Babenhauserheide <bab@draketo.de>
parents: 100
diff changeset
27 === Use Case ===
7bcdd8b947fe workflows: small fixes.
Arne Babenhauserheide <bab@draketo.de>
parents: 100
diff changeset
28
99
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
29 The first workflow is also the easiest one: You're a sysadmin and you want to use Mercurial to be able to look back when you did which changes.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
30
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
31 This workflow only requires an installed Mercurial and write access to some file storage (you almost definitely have that :) ). It shows the basic technics for more complex workflows.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
32
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
33 === Workflow ===
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
34
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
35 ==== Initialize the project ====
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
36
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
37 <code>$ hg init project</code>
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
38
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
39 ==== Add files and track them ====
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
40
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
41 <code>$ cd project
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
42 $ (add files)
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
43 $ hg add </code>
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
44
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
45 Note: You can also go into an existing directory with files and init the repository there.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
46
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
47 $ cd project
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
48 $ hg init
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
49
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
50 You can also just add specific files instead of all files in the directory. Mercurial will then track only these files and won't know about the others. The following tells mercurial to track all files beginning with "file0" as well as file10, file11 and file12.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
51
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
52 $ hg add file0* file10 file11 file12
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
53
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
54 ==== Save changes ====
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
55
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
56 $ (do some changes)
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
57
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
58 see which files changed, which have been added or removed, and which aren't tracked yet.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
59
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
60 $ hg status
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
61
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
62 see the exact changes.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
63
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
64 $ hg diff
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
65
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
66 commit the changes.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
67
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
68 $ hg commit
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
69
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
70 now an editor pops up and asks you for a commit message. Upon saving and closing the editor, your changes have been stored by Mercurial.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
71
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
72 ==== Check your history ====
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
73
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
74 $ hg log
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
75
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
76 This prints a list of changesets along with their data, the user who committed them (you) and their commit message.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
77
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
78 == Lone developer with linear history ==
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
79
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
80 === Use case ===
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
81
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
82 The second workflow is still very easy: You're a lone developer and you want to use Mercurial to keep track of your own changes.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
83
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
84 It works just like the sysadmin workflow, with the difference that you go back to earlied changes at times.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
85
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
86 To start a new project, you initialize a repository, add your files and commit whenever you finished a part of your work (atomic commits).
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
87
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
88 Also you check your history from time to time, so see how you progressed.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
89
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
90 === Workflow ===
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
91
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
92 ==== Basics from sysadmin ====
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
93
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
94 Init your project, add files, see changes and commit them.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
95
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
96 <code>$ hg init project
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
97 $ cd project
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
98 $ (add files)
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
99 $ hg add # tell Mercurial to track all files
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
100 $ (do some changes)
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
101 $ hg diff # see changes
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
102 $ hg commit # save changes
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
103 $ hg log # see history
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
104
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
105 ==== Seeing an earlier revision ====
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
106
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
107 Different from the sysadmin workflow, you'll want to go back in history at times and undo some changes, for example because it introduced a bug.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
108
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
109 To look at a previous version of your code, you can use update. Let's assume that you want to see revision 3.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
110
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
111 $ hg update 3
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
112
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
113 Now your code is back at revision 3, the fourth commit (Mercurial starts couting at 0).
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
114
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
115 To update to the most recent revision, you can use "tip" as revision name.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
116
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
117 $ hg update tip
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
118
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
119 Note: If at any place any command complains, your best bet is to read what it tells you and follow that advice.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
120
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
121 Note: Instead of "hg update" you can also use the shorthand "hg up". Similarly you can abbreviate "hg commit" to "hg ci".
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
122
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
123 ==== Fixing errors in earlier revisions ====
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
124
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
125 When you find a bug in some earlier revision you have two options: eaither you can fix it in the current code, or you can go back in history and fix the code exactly where you did it.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
126
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
127 To do so, you first update to the old revision, fix the bug and commit it. Afterwards you merge this revision and commit the merge. Don't worry, though: Merging in mercurial is fast and painless, as you'll see in an instant.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
128
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
129 Let's assume the bug was introduced in revision 3.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
130
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
131 $ hg update 3
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
132 $ (fix the bug)
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
133 $ hg commit
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
134
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
135 Now the fix is already stored in history. We just need to merge it with the current version of your code.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
136
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
137 $ hg merge
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
138
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
139 If there are conflicts use "hg resolve" - that's also what merge tells you to do in case of conflicts.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
140
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
141 $ hg commit
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
142
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
143 At this point, your fix is merged with all your other work, and you can just go on coding. Additionally the history shows clearly where you fixed the bug, so you'll always be able to check where the bug was.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
144
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
145
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
146 So now you can initialize repositories, save changes,
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
147
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
148 == Seperate features ==
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
149
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
150 === Use Case ===
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
151
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
152 At times you'll be working on several features in parallel. If you want to avoid mixing incomplete code versions, you can create clones of your local repository and work on each feature in its own code directory.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
153
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
154 After finishing your feature you then "pull" it back into your main directory and "merge" the changes.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
155
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
156 === Workflow ===
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
157
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
158 $ hg clone project feature1
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
159 $ cd feature1
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
160 $ (do some changes and commits)
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
161 $ cd ../project
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
162 $ hg pull ../feature1
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
163
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
164 Now you have the history of feature1 inside your project, but they aren't yet visible. Instead they are only stored inside the .hg directory inside the project.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
165
101
7bcdd8b947fe workflows: small fixes.
Arne Babenhauserheide <bab@draketo.de>
parents: 100
diff changeset
166 From now on we'll use the name "repository" for a directory which has a .hg directory with Mercurial history.
7bcdd8b947fe workflows: small fixes.
Arne Babenhauserheide <bab@draketo.de>
parents: 100
diff changeset
167
99
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
168 If you didn't do any changes in the project, while you were working on feature1, you can just update, but it is more likely that you'll have done some changes. In that case, it's time for merging.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
169
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
170 Merge feature1 into the project code:
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
171
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
172 $ hg merge
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
173
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
174 If there are conflicts use "hg resolve" - that's also what merge tells you to do in case of conflicts.
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
175
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
176 $ hg commit -m "merged feature1"
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
177
101
7bcdd8b947fe workflows: small fixes.
Arne Babenhauserheide <bab@draketo.de>
parents: 100
diff changeset
178 You can create an arbitrary number of clones and also carry them around on USB sticks. Also you can use them to synchronize your work at home and at work.
99
71ff3b94b20d Added workflows sysadmin, lone developer and seperate features.
Arne Babenhauserheide <bab@draketo.de>
parents: 97
diff changeset
179
104
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
180 == Sharing changes ==
100
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
181
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
182 === Use Case ===
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
183
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
184 Now we go one step further: You are no longer alone, and you want to share your changes with others and include their changes.
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
185
104
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
186 The basic requirement for that is that you have to be able to see the changes of others.
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
187
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
188 Mercurial allows you to do that very easily by including a simple webserver from which you can pull changes just as you can pull changes from local clones.
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
189
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
190 There are a few other ways to share changes, though. Instead of using the builtin webserver, you can also send the changes by email or setup a shared repository, to where you "push" changes instead of pulling them.
100
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
191
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
192 === Workflow ===
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
193
104
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
194 ==== Using the builtin webserver ====
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
195
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
196 This is the easiest way to quickly share changes.
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
197
100
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
198 First the one who wants to share his changes creates the webserver
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
199
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
200 $ hg serve
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
201
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
202 Now all others can point their browsers to his IP address (i.e. 192.168.178.100) at port 8000. They will then see all his history there and can sdecide if they want to pull his changes.
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
203
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
204 $ firefox http://192.168.178.100:8000
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
205
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
206 If they decide to include the changes, they just pull from the same URL
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
207
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
208 $ hg pull http://192.168.178.100:8000
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
209
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
210 At this point you all can work as if you had pulled from a local repository. All the data is now in your individual repositories. You can merge the changes and work with them without needing any connection to the served repository.
6e29cdea7b3a Workflows: Added basic sharing of changes.
Arne Babenhauserheide <bab@draketo.de>
parents: 99
diff changeset
211
104
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
212 ==== Sending changes by email ====
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
213
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
214 ==== Using a shared repository ====
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
215
03591004ed44 workflows: Added plan for sharing via email and via shared repo (bitbucket).
Arne Babenhauserheide <bab@draketo.de>
parents: 103
diff changeset
216 -> bitbucket