annotate CONTRIBUTE.md @ 2:65607ae124b1

pasterd: implement /new
author David Demelier <markand@malikania.fr>
date Tue, 04 Feb 2020 20:47:00 +0100
parents 15a06aa20298
children 32b063f6bb2c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 paster CONTRIBUTING GUIDE
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 ===============================
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
3
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 Read this guide if you want to contribute to paster. The purpose of this
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 document is to describe the steps to submit a patch.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
6
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 You may submit a patch when:
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
8
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 - You want to fix a bug / typo,
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 - You want to add a new feature,
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 - You want to change something.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
12
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 There a lot of steps before submitting a patch. First, be sure to respect the
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 style defined in the STYLE.md file. We never accept patches that do not match
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 the rules.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
16
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 Subscribe to the mailing list
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
18 -----------------------------
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
19
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 Discussion and patches are sent to the *paster@malikania.fr* mailing list.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 You need to subscribe by dropping a mail to
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 *paster+subscribe@malikania.fr* first.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 Enable patchbomb extension
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 --------------------------
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 While this step is optional, it brings the `hg email` command which makes most
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 of your submission for you.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 To enable it, add the following into your .hgrc (you may also use the hgrc file
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 from the repository in .hg/hgrc).
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
32
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 [extensions]
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 patchbomb =
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
35
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 Then, you need to specify a mail server, if you want to use smtp, you can use
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 something like this:
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
38
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 [email]
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 from = Your Name <youraddress@yourdomain.tld>
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 to = paster@malikania.fr
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 [smtp]
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 host = yourdomain.tld
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 port = 587
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 tls = starttls
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 username = your_account
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 password = your_password
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
49
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 Note: the password is optional, if not set it will be asked each time you run
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 the `hg email command`.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
52
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 More options are available, see:
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 - `hg help hgrc.email`,
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 - `hg help hgrc.smtp`,
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 - `hg help patchbomb`
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 - `hg help email`
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
59
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 ### Note to GMail users
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 By default, your GMail account may use 2-steps authentication which causes
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 troubles with the `hg email` command, you must create a specific application
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 password.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
65
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 1. Go to https://security.google.com/settings/security/apppasswords
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 2. Create an application password, it will be auto generated,
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 3. Use this password or store it directly in the `smtp.password` option.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
69
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 Use the following settings:
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
71
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 [smtp]
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 host = gmail.com
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 port = 587
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 tls = starttls
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 username = your_account@gmail.com
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 password = the_generated_application_password
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
78
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 Create your patch
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 -----------------
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 Usually, when you create a patch, you should have your own copy of paster
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 in your directory.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
84
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 The following steps assumes that you have already cloned the paster
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 repository somewhere.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
87
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 Note: the recommended way is to create one unique revision.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
89
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 ### Commit messages
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
91
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 Commit messages are written using the following syntax:
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
93
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 topic: short message less than 80 characters
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 Optional additional description if needed.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
97
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 Replace `topic` with one of the following:
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
99
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 - **cmake**: for the build system,
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 - **doc**: for the documentation,
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 - **misc**: for miscellaneous files,
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 - **release**: release management,
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 - **tests**: for the unit tests.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
105
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 ### Quick way
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
107
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 If you plan to create a very small patch that consists of several lines, you can
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 use the following way by disabling the @ bookmark to avoid moving it.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
110
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 $ hg pull # fetch last changesets
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 $ hg up @ # update to the last revision
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 $ hg book -i @ # disable the @ bookmark (optional but recommended)
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 (edit some files)
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 $ hg commit # create a unique revision
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 $ hg email -r . # send a mail about the current revision (interactive)
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
117
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 ### Bookmark way
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
119
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 We use Mercurial bookmarks as our workflow but we do share only @ bookmark
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 except when a long feature is being developed in parallel. Otherwise bookmarks
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 stay locally most of the time.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
123
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 When you start working on a new feature, you **must** always start from the @
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 bookmark.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
126
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 You can use this workflow if you plan to create a patch that consists of
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 multiple revisions.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
129
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 Example:
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
131
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 $ hg pull
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 $ hg up @
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 $ hg book feature-xyz
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 (work)
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 $ hg commit
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 (work)
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 $ hg commit
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 $ hg email -r first:last
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
140
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 Here, you must specify **first** and **last** as the initial and last revisions
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 respectively. You can check these revisions using `hg log` (also try `hg log -G`
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 or the nice TortoiseHg interface).
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
144
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 Example, I've started to work on an a feature named **feature-xyz**, the log
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 looks like this:
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
147
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 changeset: 22:3fb15d8fc454
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 bookmark: feature-xyz
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 tag: tip
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 user: François Jean <fj@gmail.com>
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 date: Thu Dec 08 16:08:40 2016 +0100
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 summary: topic: some other changes
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
154
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 changeset: 21:f27e577c5504
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 user: François Jean <fj@gmail.com>
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 date: Thu Dec 08 16:03:06 2016 +0100
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 summary: topic: some changes
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
159
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 changeset: 20:777023816ff9
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 bookmark: @
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 user: David Demelier <markand@malikania.fr>
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 date: Thu Dec 08 16:02:26 2016 +0100
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 summary: misc: fix a bug
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
165
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 The two revisions I want to export are 21 and 22, so I use `hg email -r 21:22`,
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 once done, see the section below.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
168
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 Additional topics
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 -----------------
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
171
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 ### Your patch is accepted
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
173
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 The safest choice is to just pull from the central repository and update to the
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 @ bookmark.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
176
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 $ hg pull
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 $ hg up @
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
179
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 You can also call `hg rebase` (from rebase extension) to move your revisions on
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 top of upstream. If the patches were incorporated verbatim, they will be safely
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 discarded automatically.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
183
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 $ hg pull
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 $ hg up @
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 $ hg rebase -b feature-xyz -d @
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 $ hg book -d feature-xyz
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
188
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 If you didn't created a bookmark replace **feature-xyz** with your revision
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 number.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
191
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 Finally, if you prefer to remove the revisions you have created, use `hg strip`
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 like explained in the see section below.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
194
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 ### Your patch is discarded
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
196
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 For some reasons, your patch can not be integrated within the official
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 repository, you can remove the revisions you have commited or keep them.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
199
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 If you want to remove the revisions, you can use the `hg strip` command (from
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 the strip extension).
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
202
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 Warning: it will **remove** the revisions from history so use with care.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
204
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 $ hg strip -r 21:22 # using the example above
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 $ hg book -d feature-xyz # delete the bookmark
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
207
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 Newer versions of Mercurial support `-B` argument:
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
209
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 $ hg strip -B feature-xyz # shortcut
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
211
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
212 You can just go back on the @ bookmark as it's the safest choice.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
213
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 $ hg pull # fetch changesets
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 $ hg up @ # update to @
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
216
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 ### How to merge upstream code to continue my patch
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
218
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 Sometimes when you started working on a topic, you may need to pull changes from
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 the repository. The idea is to pull the changes and rebase your work on top of
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 it.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
222
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 You must run these commands while your bookmark is active
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
224
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 $ hg up feature-xyz
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 $ hg pull -B @
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 $ hg rebase -b feature-xyz -d @
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
228
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 ### I forgot to create a bookmark and accidentally moved the @ bookmark
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
230
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 If you forgot to create a custom bookmark or disable @ before committing, you
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 may have moved the @ bookmark in your repository. The `hg pull` command can
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 recover it.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
234
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 First, we create it now to point at your local revisions (optional).
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
236
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 $ hg book feature-xyz
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
238
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 Then, put it where it should be.
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
240
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 $ hg pull -B @
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
242
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
243 Now @ will be placed to the same revision as the central repository. If some
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 changesets have been pulled, you may look at the previous topic to rebase your
15a06aa20298 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 work on top of it.