annotate CONTRIBUTE.md @ 61:a93f4e3313e9

misc: add a raw option in POST data The previous paster.sh implementation was grep'ing the Location header which could fail if followlocation is enabled because multiple location can be returned by the HTTP server. And obviously while here, add the followlocation option.
author David Demelier <markand@malikania.fr>
date Thu, 26 May 2022 10:44:10 +0200
parents 32b063f6bb2c
children
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
13
32b063f6bb2c misc: update documentation
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
2 =========================
0
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.