##// END OF EJS Templates
help: fix layout of pre-formatted text
Yuya Nishihara -
r31287:16539e32 default
parent child Browse files
Show More
@@ -1,188 +1,188 b''
1 Changegroups are representations of repository revlog data, specifically
1 Changegroups are representations of repository revlog data, specifically
2 the changelog data, root/flat manifest data, treemanifest data, and
2 the changelog data, root/flat manifest data, treemanifest data, and
3 filelogs.
3 filelogs.
4
4
5 There are 3 versions of changegroups: ``1``, ``2``, and ``3``. From a
5 There are 3 versions of changegroups: ``1``, ``2``, and ``3``. From a
6 high-level, versions ``1`` and ``2`` are almost exactly the same, with the
6 high-level, versions ``1`` and ``2`` are almost exactly the same, with the
7 only difference being an additional item in the *delta header*. Version
7 only difference being an additional item in the *delta header*. Version
8 ``3`` adds support for revlog flags in the *delta header* and optionally
8 ``3`` adds support for revlog flags in the *delta header* and optionally
9 exchanging treemanifests (enabled by setting an option on the
9 exchanging treemanifests (enabled by setting an option on the
10 ``changegroup`` part in the bundle2).
10 ``changegroup`` part in the bundle2).
11
11
12 Changegroups when not exchanging treemanifests consist of 3 logical
12 Changegroups when not exchanging treemanifests consist of 3 logical
13 segments::
13 segments::
14
14
15 +---------------------------------+
15 +---------------------------------+
16 | | | |
16 | | | |
17 | changeset | manifest | filelogs |
17 | changeset | manifest | filelogs |
18 | | | |
18 | | | |
19 | | | |
19 | | | |
20 +---------------------------------+
20 +---------------------------------+
21
21
22 When exchanging treemanifests, there are 4 logical segments::
22 When exchanging treemanifests, there are 4 logical segments::
23
23
24 +-------------------------------------------------+
24 +-------------------------------------------------+
25 | | | | |
25 | | | | |
26 | changeset | root | treemanifests | filelogs |
26 | changeset | root | treemanifests | filelogs |
27 | | manifest | | |
27 | | manifest | | |
28 | | | | |
28 | | | | |
29 +-------------------------------------------------+
29 +-------------------------------------------------+
30
30
31 The principle building block of each segment is a *chunk*. A *chunk*
31 The principle building block of each segment is a *chunk*. A *chunk*
32 is a framed piece of data::
32 is a framed piece of data::
33
33
34 +---------------------------------------+
34 +---------------------------------------+
35 | | |
35 | | |
36 | length | data |
36 | length | data |
37 | (4 bytes) | (<length - 4> bytes) |
37 | (4 bytes) | (<length - 4> bytes) |
38 | | |
38 | | |
39 +---------------------------------------+
39 +---------------------------------------+
40
40
41 All integers are big-endian signed integers. Each chunk starts with a 32-bit
41 All integers are big-endian signed integers. Each chunk starts with a 32-bit
42 integer indicating the length of the entire chunk (including the length field
42 integer indicating the length of the entire chunk (including the length field
43 itself).
43 itself).
44
44
45 There is a special case chunk that has a value of 0 for the length
45 There is a special case chunk that has a value of 0 for the length
46 (``0x00000000``). We call this an *empty chunk*.
46 (``0x00000000``). We call this an *empty chunk*.
47
47
48 Delta Groups
48 Delta Groups
49 ============
49 ============
50
50
51 A *delta group* expresses the content of a revlog as a series of deltas,
51 A *delta group* expresses the content of a revlog as a series of deltas,
52 or patches against previous revisions.
52 or patches against previous revisions.
53
53
54 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
54 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
55 to signal the end of the delta group::
55 to signal the end of the delta group::
56
56
57 +------------------------------------------------------------------------+
57 +------------------------------------------------------------------------+
58 | | | | | |
58 | | | | | |
59 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
59 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
60 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
60 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
61 | | | | | |
61 | | | | | |
62 +------------------------------------------------------------------------+
62 +------------------------------------------------------------------------+
63
63
64 Each *chunk*'s data consists of the following::
64 Each *chunk*'s data consists of the following::
65
65
66 +---------------------------------------+
66 +---------------------------------------+
67 | | |
67 | | |
68 | delta header | delta data |
68 | delta header | delta data |
69 | (various by version) | (various) |
69 | (various by version) | (various) |
70 | | |
70 | | |
71 +---------------------------------------+
71 +---------------------------------------+
72
72
73 The *delta data* is a series of *delta*s that describe a diff from an existing
73 The *delta data* is a series of *delta*s that describe a diff from an existing
74 entry (either that the recipient already has, or previously specified in the
74 entry (either that the recipient already has, or previously specified in the
75 bundlei/changegroup).
75 bundlei/changegroup).
76
76
77 The *delta header* is different between versions ``1``, ``2``, and
77 The *delta header* is different between versions ``1``, ``2``, and
78 ``3`` of the changegroup format.
78 ``3`` of the changegroup format.
79
79
80 Version 1 (headerlen=80)::
80 Version 1 (headerlen=80)::
81
81
82 +------------------------------------------------------+
82 +------------------------------------------------------+
83 | | | | |
83 | | | | |
84 | node | p1 node | p2 node | link node |
84 | node | p1 node | p2 node | link node |
85 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
85 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
86 | | | | |
86 | | | | |
87 +------------------------------------------------------+
87 +------------------------------------------------------+
88
88
89 Version 2 (headerlen=100)::
89 Version 2 (headerlen=100)::
90
90
91 +------------------------------------------------------------------+
91 +------------------------------------------------------------------+
92 | | | | | |
92 | | | | | |
93 | node | p1 node | p2 node | base node | link node |
93 | node | p1 node | p2 node | base node | link node |
94 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
94 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
95 | | | | | |
95 | | | | | |
96 +------------------------------------------------------------------+
96 +------------------------------------------------------------------+
97
97
98 Version 3 (headerlen=102)::
98 Version 3 (headerlen=102)::
99
99
100 +------------------------------------------------------------------------------+
100 +------------------------------------------------------------------------------+
101 | | | | | | |
101 | | | | | | |
102 | node | p1 node | p2 node | base node | link node | flags |
102 | node | p1 node | p2 node | base node | link node | flags |
103 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
103 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
104 | | | | | | |
104 | | | | | | |
105 +------------------------------------------------------------------------------+
105 +------------------------------------------------------------------------------+
106
106
107 The *delta data* consists of ``chunklen - 4 - headerlen`` bytes, which contain a
107 The *delta data* consists of ``chunklen - 4 - headerlen`` bytes, which contain a
108 series of *delta*s, densely packed (no separators). These deltas describe a diff
108 series of *delta*s, densely packed (no separators). These deltas describe a diff
109 from an existing entry (either that the recipient already has, or previously
109 from an existing entry (either that the recipient already has, or previously
110 specified in the bundle/changegroup). The format is described more fully in
110 specified in the bundle/changegroup). The format is described more fully in
111 ``hg help internals.bdiff``, but briefly:
111 ``hg help internals.bdiff``, but briefly::
112
112
113 +---------------------------------------------------------------+
113 +---------------------------------------------------------------+
114 | | | | |
114 | | | | |
115 | start offset | end offset | new length | content |
115 | start offset | end offset | new length | content |
116 | (4 bytes) | (4 bytes) | (4 bytes) | (<new length> bytes) |
116 | (4 bytes) | (4 bytes) | (4 bytes) | (<new length> bytes) |
117 | | | | |
117 | | | | |
118 +---------------------------------------------------------------+
118 +---------------------------------------------------------------+
119
119
120 Please note that the length field in the delta data does *not* include itself.
120 Please note that the length field in the delta data does *not* include itself.
121
121
122 In version 1, the delta is always applied against the previous node from
122 In version 1, the delta is always applied against the previous node from
123 the changegroup or the first parent if this is the first entry in the
123 the changegroup or the first parent if this is the first entry in the
124 changegroup.
124 changegroup.
125
125
126 In version 2 and up, the delta base node is encoded in the entry in the
126 In version 2 and up, the delta base node is encoded in the entry in the
127 changegroup. This allows the delta to be expressed against any parent,
127 changegroup. This allows the delta to be expressed against any parent,
128 which can result in smaller deltas and more efficient encoding of data.
128 which can result in smaller deltas and more efficient encoding of data.
129
129
130 Changeset Segment
130 Changeset Segment
131 =================
131 =================
132
132
133 The *changeset segment* consists of a single *delta group* holding
133 The *changeset segment* consists of a single *delta group* holding
134 changelog data. The *empty chunk* at the end of the *delta group* denotes
134 changelog data. The *empty chunk* at the end of the *delta group* denotes
135 the boundary to the *manifest segment*.
135 the boundary to the *manifest segment*.
136
136
137 Manifest Segment
137 Manifest Segment
138 ================
138 ================
139
139
140 The *manifest segment* consists of a single *delta group* holding manifest
140 The *manifest segment* consists of a single *delta group* holding manifest
141 data. If treemanifests are in use, it contains only the manifest for the
141 data. If treemanifests are in use, it contains only the manifest for the
142 root directory of the repository. Otherwise, it contains the entire
142 root directory of the repository. Otherwise, it contains the entire
143 manifest data. The *empty chunk* at the end of the *delta group* denotes
143 manifest data. The *empty chunk* at the end of the *delta group* denotes
144 the boundary to the next segment (either the *treemanifests segment* or the
144 the boundary to the next segment (either the *treemanifests segment* or the
145 *filelogs segment*, depending on version and the request options).
145 *filelogs segment*, depending on version and the request options).
146
146
147 Treemanifests Segment
147 Treemanifests Segment
148 ---------------------
148 ---------------------
149
149
150 The *treemanifests segment* only exists in changegroup version ``3``, and
150 The *treemanifests segment* only exists in changegroup version ``3``, and
151 only if the 'treemanifest' param is part of the bundle2 changegroup part
151 only if the 'treemanifest' param is part of the bundle2 changegroup part
152 (it is not possible to use changegroup version 3 outside of bundle2).
152 (it is not possible to use changegroup version 3 outside of bundle2).
153 Aside from the filenames in the *treemanifests segment* containing a
153 Aside from the filenames in the *treemanifests segment* containing a
154 trailing ``/`` character, it behaves identically to the *filelogs segment*
154 trailing ``/`` character, it behaves identically to the *filelogs segment*
155 (see below). The final sub-segment is followed by an *empty chunk* (logically,
155 (see below). The final sub-segment is followed by an *empty chunk* (logically,
156 a sub-segment with filename size 0). This denotes the boundary to the
156 a sub-segment with filename size 0). This denotes the boundary to the
157 *filelogs segment*.
157 *filelogs segment*.
158
158
159 Filelogs Segment
159 Filelogs Segment
160 ================
160 ================
161
161
162 The *filelogs segment* consists of multiple sub-segments, each
162 The *filelogs segment* consists of multiple sub-segments, each
163 corresponding to an individual file whose data is being described::
163 corresponding to an individual file whose data is being described::
164
164
165 +--------------------------------------------------+
165 +--------------------------------------------------+
166 | | | | | |
166 | | | | | |
167 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
167 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
168 | | | | | (4 bytes) |
168 | | | | | (4 bytes) |
169 | | | | | |
169 | | | | | |
170 +--------------------------------------------------+
170 +--------------------------------------------------+
171
171
172 The final filelog sub-segment is followed by an *empty chunk* (logically,
172 The final filelog sub-segment is followed by an *empty chunk* (logically,
173 a sub-segment with filename size 0). This denotes the end of the segment
173 a sub-segment with filename size 0). This denotes the end of the segment
174 and of the overall changegroup.
174 and of the overall changegroup.
175
175
176 Each filelog sub-segment consists of the following::
176 Each filelog sub-segment consists of the following::
177
177
178 +------------------------------------------------------+
178 +------------------------------------------------------+
179 | | | |
179 | | | |
180 | filename length | filename | delta group |
180 | filename length | filename | delta group |
181 | (4 bytes) | (<length - 4> bytes) | (various) |
181 | (4 bytes) | (<length - 4> bytes) | (various) |
182 | | | |
182 | | | |
183 +------------------------------------------------------+
183 +------------------------------------------------------+
184
184
185 That is, a *chunk* consisting of the filename (not terminated or padded)
185 That is, a *chunk* consisting of the filename (not terminated or padded)
186 followed by N chunks constituting the *delta group* for this file. The
186 followed by N chunks constituting the *delta group* for this file. The
187 *empty chunk* at the end of each *delta group* denotes the boundary to the
187 *empty chunk* at the end of each *delta group* denotes the boundary to the
188 next filelog sub-segment.
188 next filelog sub-segment.
@@ -1,3297 +1,3297 b''
1 Short help:
1 Short help:
2
2
3 $ hg
3 $ hg
4 Mercurial Distributed SCM
4 Mercurial Distributed SCM
5
5
6 basic commands:
6 basic commands:
7
7
8 add add the specified files on the next commit
8 add add the specified files on the next commit
9 annotate show changeset information by line for each file
9 annotate show changeset information by line for each file
10 clone make a copy of an existing repository
10 clone make a copy of an existing repository
11 commit commit the specified files or all outstanding changes
11 commit commit the specified files or all outstanding changes
12 diff diff repository (or selected files)
12 diff diff repository (or selected files)
13 export dump the header and diffs for one or more changesets
13 export dump the header and diffs for one or more changesets
14 forget forget the specified files on the next commit
14 forget forget the specified files on the next commit
15 init create a new repository in the given directory
15 init create a new repository in the given directory
16 log show revision history of entire repository or files
16 log show revision history of entire repository or files
17 merge merge another revision into working directory
17 merge merge another revision into working directory
18 pull pull changes from the specified source
18 pull pull changes from the specified source
19 push push changes to the specified destination
19 push push changes to the specified destination
20 remove remove the specified files on the next commit
20 remove remove the specified files on the next commit
21 serve start stand-alone webserver
21 serve start stand-alone webserver
22 status show changed files in the working directory
22 status show changed files in the working directory
23 summary summarize working directory state
23 summary summarize working directory state
24 update update working directory (or switch revisions)
24 update update working directory (or switch revisions)
25
25
26 (use 'hg help' for the full list of commands or 'hg -v' for details)
26 (use 'hg help' for the full list of commands or 'hg -v' for details)
27
27
28 $ hg -q
28 $ hg -q
29 add add the specified files on the next commit
29 add add the specified files on the next commit
30 annotate show changeset information by line for each file
30 annotate show changeset information by line for each file
31 clone make a copy of an existing repository
31 clone make a copy of an existing repository
32 commit commit the specified files or all outstanding changes
32 commit commit the specified files or all outstanding changes
33 diff diff repository (or selected files)
33 diff diff repository (or selected files)
34 export dump the header and diffs for one or more changesets
34 export dump the header and diffs for one or more changesets
35 forget forget the specified files on the next commit
35 forget forget the specified files on the next commit
36 init create a new repository in the given directory
36 init create a new repository in the given directory
37 log show revision history of entire repository or files
37 log show revision history of entire repository or files
38 merge merge another revision into working directory
38 merge merge another revision into working directory
39 pull pull changes from the specified source
39 pull pull changes from the specified source
40 push push changes to the specified destination
40 push push changes to the specified destination
41 remove remove the specified files on the next commit
41 remove remove the specified files on the next commit
42 serve start stand-alone webserver
42 serve start stand-alone webserver
43 status show changed files in the working directory
43 status show changed files in the working directory
44 summary summarize working directory state
44 summary summarize working directory state
45 update update working directory (or switch revisions)
45 update update working directory (or switch revisions)
46
46
47 $ hg help
47 $ hg help
48 Mercurial Distributed SCM
48 Mercurial Distributed SCM
49
49
50 list of commands:
50 list of commands:
51
51
52 add add the specified files on the next commit
52 add add the specified files on the next commit
53 addremove add all new files, delete all missing files
53 addremove add all new files, delete all missing files
54 annotate show changeset information by line for each file
54 annotate show changeset information by line for each file
55 archive create an unversioned archive of a repository revision
55 archive create an unversioned archive of a repository revision
56 backout reverse effect of earlier changeset
56 backout reverse effect of earlier changeset
57 bisect subdivision search of changesets
57 bisect subdivision search of changesets
58 bookmarks create a new bookmark or list existing bookmarks
58 bookmarks create a new bookmark or list existing bookmarks
59 branch set or show the current branch name
59 branch set or show the current branch name
60 branches list repository named branches
60 branches list repository named branches
61 bundle create a changegroup file
61 bundle create a changegroup file
62 cat output the current or given revision of files
62 cat output the current or given revision of files
63 clone make a copy of an existing repository
63 clone make a copy of an existing repository
64 commit commit the specified files or all outstanding changes
64 commit commit the specified files or all outstanding changes
65 config show combined config settings from all hgrc files
65 config show combined config settings from all hgrc files
66 copy mark files as copied for the next commit
66 copy mark files as copied for the next commit
67 diff diff repository (or selected files)
67 diff diff repository (or selected files)
68 export dump the header and diffs for one or more changesets
68 export dump the header and diffs for one or more changesets
69 files list tracked files
69 files list tracked files
70 forget forget the specified files on the next commit
70 forget forget the specified files on the next commit
71 graft copy changes from other branches onto the current branch
71 graft copy changes from other branches onto the current branch
72 grep search revision history for a pattern in specified files
72 grep search revision history for a pattern in specified files
73 heads show branch heads
73 heads show branch heads
74 help show help for a given topic or a help overview
74 help show help for a given topic or a help overview
75 identify identify the working directory or specified revision
75 identify identify the working directory or specified revision
76 import import an ordered set of patches
76 import import an ordered set of patches
77 incoming show new changesets found in source
77 incoming show new changesets found in source
78 init create a new repository in the given directory
78 init create a new repository in the given directory
79 log show revision history of entire repository or files
79 log show revision history of entire repository or files
80 manifest output the current or given revision of the project manifest
80 manifest output the current or given revision of the project manifest
81 merge merge another revision into working directory
81 merge merge another revision into working directory
82 outgoing show changesets not found in the destination
82 outgoing show changesets not found in the destination
83 paths show aliases for remote repositories
83 paths show aliases for remote repositories
84 phase set or show the current phase name
84 phase set or show the current phase name
85 pull pull changes from the specified source
85 pull pull changes from the specified source
86 push push changes to the specified destination
86 push push changes to the specified destination
87 recover roll back an interrupted transaction
87 recover roll back an interrupted transaction
88 remove remove the specified files on the next commit
88 remove remove the specified files on the next commit
89 rename rename files; equivalent of copy + remove
89 rename rename files; equivalent of copy + remove
90 resolve redo merges or set/view the merge status of files
90 resolve redo merges or set/view the merge status of files
91 revert restore files to their checkout state
91 revert restore files to their checkout state
92 root print the root (top) of the current working directory
92 root print the root (top) of the current working directory
93 serve start stand-alone webserver
93 serve start stand-alone webserver
94 status show changed files in the working directory
94 status show changed files in the working directory
95 summary summarize working directory state
95 summary summarize working directory state
96 tag add one or more tags for the current or given revision
96 tag add one or more tags for the current or given revision
97 tags list repository tags
97 tags list repository tags
98 unbundle apply one or more changegroup files
98 unbundle apply one or more changegroup files
99 update update working directory (or switch revisions)
99 update update working directory (or switch revisions)
100 verify verify the integrity of the repository
100 verify verify the integrity of the repository
101 version output version and copyright information
101 version output version and copyright information
102
102
103 additional help topics:
103 additional help topics:
104
104
105 color Colorizing Outputs
105 color Colorizing Outputs
106 config Configuration Files
106 config Configuration Files
107 dates Date Formats
107 dates Date Formats
108 diffs Diff Formats
108 diffs Diff Formats
109 environment Environment Variables
109 environment Environment Variables
110 extensions Using Additional Features
110 extensions Using Additional Features
111 filesets Specifying File Sets
111 filesets Specifying File Sets
112 glossary Glossary
112 glossary Glossary
113 hgignore Syntax for Mercurial Ignore Files
113 hgignore Syntax for Mercurial Ignore Files
114 hgweb Configuring hgweb
114 hgweb Configuring hgweb
115 internals Technical implementation topics
115 internals Technical implementation topics
116 merge-tools Merge Tools
116 merge-tools Merge Tools
117 pager Pager Support
117 pager Pager Support
118 patterns File Name Patterns
118 patterns File Name Patterns
119 phases Working with Phases
119 phases Working with Phases
120 revisions Specifying Revisions
120 revisions Specifying Revisions
121 scripting Using Mercurial from scripts and automation
121 scripting Using Mercurial from scripts and automation
122 subrepos Subrepositories
122 subrepos Subrepositories
123 templating Template Usage
123 templating Template Usage
124 urls URL Paths
124 urls URL Paths
125
125
126 (use 'hg help -v' to show built-in aliases and global options)
126 (use 'hg help -v' to show built-in aliases and global options)
127
127
128 $ hg -q help
128 $ hg -q help
129 add add the specified files on the next commit
129 add add the specified files on the next commit
130 addremove add all new files, delete all missing files
130 addremove add all new files, delete all missing files
131 annotate show changeset information by line for each file
131 annotate show changeset information by line for each file
132 archive create an unversioned archive of a repository revision
132 archive create an unversioned archive of a repository revision
133 backout reverse effect of earlier changeset
133 backout reverse effect of earlier changeset
134 bisect subdivision search of changesets
134 bisect subdivision search of changesets
135 bookmarks create a new bookmark or list existing bookmarks
135 bookmarks create a new bookmark or list existing bookmarks
136 branch set or show the current branch name
136 branch set or show the current branch name
137 branches list repository named branches
137 branches list repository named branches
138 bundle create a changegroup file
138 bundle create a changegroup file
139 cat output the current or given revision of files
139 cat output the current or given revision of files
140 clone make a copy of an existing repository
140 clone make a copy of an existing repository
141 commit commit the specified files or all outstanding changes
141 commit commit the specified files or all outstanding changes
142 config show combined config settings from all hgrc files
142 config show combined config settings from all hgrc files
143 copy mark files as copied for the next commit
143 copy mark files as copied for the next commit
144 diff diff repository (or selected files)
144 diff diff repository (or selected files)
145 export dump the header and diffs for one or more changesets
145 export dump the header and diffs for one or more changesets
146 files list tracked files
146 files list tracked files
147 forget forget the specified files on the next commit
147 forget forget the specified files on the next commit
148 graft copy changes from other branches onto the current branch
148 graft copy changes from other branches onto the current branch
149 grep search revision history for a pattern in specified files
149 grep search revision history for a pattern in specified files
150 heads show branch heads
150 heads show branch heads
151 help show help for a given topic or a help overview
151 help show help for a given topic or a help overview
152 identify identify the working directory or specified revision
152 identify identify the working directory or specified revision
153 import import an ordered set of patches
153 import import an ordered set of patches
154 incoming show new changesets found in source
154 incoming show new changesets found in source
155 init create a new repository in the given directory
155 init create a new repository in the given directory
156 log show revision history of entire repository or files
156 log show revision history of entire repository or files
157 manifest output the current or given revision of the project manifest
157 manifest output the current or given revision of the project manifest
158 merge merge another revision into working directory
158 merge merge another revision into working directory
159 outgoing show changesets not found in the destination
159 outgoing show changesets not found in the destination
160 paths show aliases for remote repositories
160 paths show aliases for remote repositories
161 phase set or show the current phase name
161 phase set or show the current phase name
162 pull pull changes from the specified source
162 pull pull changes from the specified source
163 push push changes to the specified destination
163 push push changes to the specified destination
164 recover roll back an interrupted transaction
164 recover roll back an interrupted transaction
165 remove remove the specified files on the next commit
165 remove remove the specified files on the next commit
166 rename rename files; equivalent of copy + remove
166 rename rename files; equivalent of copy + remove
167 resolve redo merges or set/view the merge status of files
167 resolve redo merges or set/view the merge status of files
168 revert restore files to their checkout state
168 revert restore files to their checkout state
169 root print the root (top) of the current working directory
169 root print the root (top) of the current working directory
170 serve start stand-alone webserver
170 serve start stand-alone webserver
171 status show changed files in the working directory
171 status show changed files in the working directory
172 summary summarize working directory state
172 summary summarize working directory state
173 tag add one or more tags for the current or given revision
173 tag add one or more tags for the current or given revision
174 tags list repository tags
174 tags list repository tags
175 unbundle apply one or more changegroup files
175 unbundle apply one or more changegroup files
176 update update working directory (or switch revisions)
176 update update working directory (or switch revisions)
177 verify verify the integrity of the repository
177 verify verify the integrity of the repository
178 version output version and copyright information
178 version output version and copyright information
179
179
180 additional help topics:
180 additional help topics:
181
181
182 color Colorizing Outputs
182 color Colorizing Outputs
183 config Configuration Files
183 config Configuration Files
184 dates Date Formats
184 dates Date Formats
185 diffs Diff Formats
185 diffs Diff Formats
186 environment Environment Variables
186 environment Environment Variables
187 extensions Using Additional Features
187 extensions Using Additional Features
188 filesets Specifying File Sets
188 filesets Specifying File Sets
189 glossary Glossary
189 glossary Glossary
190 hgignore Syntax for Mercurial Ignore Files
190 hgignore Syntax for Mercurial Ignore Files
191 hgweb Configuring hgweb
191 hgweb Configuring hgweb
192 internals Technical implementation topics
192 internals Technical implementation topics
193 merge-tools Merge Tools
193 merge-tools Merge Tools
194 pager Pager Support
194 pager Pager Support
195 patterns File Name Patterns
195 patterns File Name Patterns
196 phases Working with Phases
196 phases Working with Phases
197 revisions Specifying Revisions
197 revisions Specifying Revisions
198 scripting Using Mercurial from scripts and automation
198 scripting Using Mercurial from scripts and automation
199 subrepos Subrepositories
199 subrepos Subrepositories
200 templating Template Usage
200 templating Template Usage
201 urls URL Paths
201 urls URL Paths
202
202
203 Test extension help:
203 Test extension help:
204 $ hg help extensions --config extensions.rebase= --config extensions.children=
204 $ hg help extensions --config extensions.rebase= --config extensions.children=
205 Using Additional Features
205 Using Additional Features
206 """""""""""""""""""""""""
206 """""""""""""""""""""""""
207
207
208 Mercurial has the ability to add new features through the use of
208 Mercurial has the ability to add new features through the use of
209 extensions. Extensions may add new commands, add options to existing
209 extensions. Extensions may add new commands, add options to existing
210 commands, change the default behavior of commands, or implement hooks.
210 commands, change the default behavior of commands, or implement hooks.
211
211
212 To enable the "foo" extension, either shipped with Mercurial or in the
212 To enable the "foo" extension, either shipped with Mercurial or in the
213 Python search path, create an entry for it in your configuration file,
213 Python search path, create an entry for it in your configuration file,
214 like this:
214 like this:
215
215
216 [extensions]
216 [extensions]
217 foo =
217 foo =
218
218
219 You may also specify the full path to an extension:
219 You may also specify the full path to an extension:
220
220
221 [extensions]
221 [extensions]
222 myfeature = ~/.hgext/myfeature.py
222 myfeature = ~/.hgext/myfeature.py
223
223
224 See 'hg help config' for more information on configuration files.
224 See 'hg help config' for more information on configuration files.
225
225
226 Extensions are not loaded by default for a variety of reasons: they can
226 Extensions are not loaded by default for a variety of reasons: they can
227 increase startup overhead; they may be meant for advanced usage only; they
227 increase startup overhead; they may be meant for advanced usage only; they
228 may provide potentially dangerous abilities (such as letting you destroy
228 may provide potentially dangerous abilities (such as letting you destroy
229 or modify history); they might not be ready for prime time; or they may
229 or modify history); they might not be ready for prime time; or they may
230 alter some usual behaviors of stock Mercurial. It is thus up to the user
230 alter some usual behaviors of stock Mercurial. It is thus up to the user
231 to activate extensions as needed.
231 to activate extensions as needed.
232
232
233 To explicitly disable an extension enabled in a configuration file of
233 To explicitly disable an extension enabled in a configuration file of
234 broader scope, prepend its path with !:
234 broader scope, prepend its path with !:
235
235
236 [extensions]
236 [extensions]
237 # disabling extension bar residing in /path/to/extension/bar.py
237 # disabling extension bar residing in /path/to/extension/bar.py
238 bar = !/path/to/extension/bar.py
238 bar = !/path/to/extension/bar.py
239 # ditto, but no path was supplied for extension baz
239 # ditto, but no path was supplied for extension baz
240 baz = !
240 baz = !
241
241
242 enabled extensions:
242 enabled extensions:
243
243
244 children command to display child changesets (DEPRECATED)
244 children command to display child changesets (DEPRECATED)
245 rebase command to move sets of revisions to a different ancestor
245 rebase command to move sets of revisions to a different ancestor
246
246
247 disabled extensions:
247 disabled extensions:
248
248
249 acl hooks for controlling repository access
249 acl hooks for controlling repository access
250 blackbox log repository events to a blackbox for debugging
250 blackbox log repository events to a blackbox for debugging
251 bugzilla hooks for integrating with the Bugzilla bug tracker
251 bugzilla hooks for integrating with the Bugzilla bug tracker
252 censor erase file content at a given revision
252 censor erase file content at a given revision
253 churn command to display statistics about repository history
253 churn command to display statistics about repository history
254 clonebundles advertise pre-generated bundles to seed clones
254 clonebundles advertise pre-generated bundles to seed clones
255 convert import revisions from foreign VCS repositories into
255 convert import revisions from foreign VCS repositories into
256 Mercurial
256 Mercurial
257 eol automatically manage newlines in repository files
257 eol automatically manage newlines in repository files
258 extdiff command to allow external programs to compare revisions
258 extdiff command to allow external programs to compare revisions
259 factotum http authentication with factotum
259 factotum http authentication with factotum
260 gpg commands to sign and verify changesets
260 gpg commands to sign and verify changesets
261 hgk browse the repository in a graphical way
261 hgk browse the repository in a graphical way
262 highlight syntax highlighting for hgweb (requires Pygments)
262 highlight syntax highlighting for hgweb (requires Pygments)
263 histedit interactive history editing
263 histedit interactive history editing
264 keyword expand keywords in tracked files
264 keyword expand keywords in tracked files
265 largefiles track large binary files
265 largefiles track large binary files
266 mq manage a stack of patches
266 mq manage a stack of patches
267 notify hooks for sending email push notifications
267 notify hooks for sending email push notifications
268 patchbomb command to send changesets as (a series of) patch emails
268 patchbomb command to send changesets as (a series of) patch emails
269 purge command to delete untracked files from the working
269 purge command to delete untracked files from the working
270 directory
270 directory
271 relink recreates hardlinks between repository clones
271 relink recreates hardlinks between repository clones
272 schemes extend schemes with shortcuts to repository swarms
272 schemes extend schemes with shortcuts to repository swarms
273 share share a common history between several working directories
273 share share a common history between several working directories
274 shelve save and restore changes to the working directory
274 shelve save and restore changes to the working directory
275 strip strip changesets and their descendants from history
275 strip strip changesets and their descendants from history
276 transplant command to transplant changesets from another branch
276 transplant command to transplant changesets from another branch
277 win32mbcs allow the use of MBCS paths with problematic encodings
277 win32mbcs allow the use of MBCS paths with problematic encodings
278 zeroconf discover and advertise repositories on the local network
278 zeroconf discover and advertise repositories on the local network
279
279
280 Verify that extension keywords appear in help templates
280 Verify that extension keywords appear in help templates
281
281
282 $ hg help --config extensions.transplant= templating|grep transplant > /dev/null
282 $ hg help --config extensions.transplant= templating|grep transplant > /dev/null
283
283
284 Test short command list with verbose option
284 Test short command list with verbose option
285
285
286 $ hg -v help shortlist
286 $ hg -v help shortlist
287 Mercurial Distributed SCM
287 Mercurial Distributed SCM
288
288
289 basic commands:
289 basic commands:
290
290
291 add add the specified files on the next commit
291 add add the specified files on the next commit
292 annotate, blame
292 annotate, blame
293 show changeset information by line for each file
293 show changeset information by line for each file
294 clone make a copy of an existing repository
294 clone make a copy of an existing repository
295 commit, ci commit the specified files or all outstanding changes
295 commit, ci commit the specified files or all outstanding changes
296 diff diff repository (or selected files)
296 diff diff repository (or selected files)
297 export dump the header and diffs for one or more changesets
297 export dump the header and diffs for one or more changesets
298 forget forget the specified files on the next commit
298 forget forget the specified files on the next commit
299 init create a new repository in the given directory
299 init create a new repository in the given directory
300 log, history show revision history of entire repository or files
300 log, history show revision history of entire repository or files
301 merge merge another revision into working directory
301 merge merge another revision into working directory
302 pull pull changes from the specified source
302 pull pull changes from the specified source
303 push push changes to the specified destination
303 push push changes to the specified destination
304 remove, rm remove the specified files on the next commit
304 remove, rm remove the specified files on the next commit
305 serve start stand-alone webserver
305 serve start stand-alone webserver
306 status, st show changed files in the working directory
306 status, st show changed files in the working directory
307 summary, sum summarize working directory state
307 summary, sum summarize working directory state
308 update, up, checkout, co
308 update, up, checkout, co
309 update working directory (or switch revisions)
309 update working directory (or switch revisions)
310
310
311 global options ([+] can be repeated):
311 global options ([+] can be repeated):
312
312
313 -R --repository REPO repository root directory or name of overlay bundle
313 -R --repository REPO repository root directory or name of overlay bundle
314 file
314 file
315 --cwd DIR change working directory
315 --cwd DIR change working directory
316 -y --noninteractive do not prompt, automatically pick the first choice for
316 -y --noninteractive do not prompt, automatically pick the first choice for
317 all prompts
317 all prompts
318 -q --quiet suppress output
318 -q --quiet suppress output
319 -v --verbose enable additional output
319 -v --verbose enable additional output
320 --color TYPE when to colorize (boolean, always, auto, never, or
320 --color TYPE when to colorize (boolean, always, auto, never, or
321 debug)
321 debug)
322 --config CONFIG [+] set/override config option (use 'section.name=value')
322 --config CONFIG [+] set/override config option (use 'section.name=value')
323 --debug enable debugging output
323 --debug enable debugging output
324 --debugger start debugger
324 --debugger start debugger
325 --encoding ENCODE set the charset encoding (default: ascii)
325 --encoding ENCODE set the charset encoding (default: ascii)
326 --encodingmode MODE set the charset encoding mode (default: strict)
326 --encodingmode MODE set the charset encoding mode (default: strict)
327 --traceback always print a traceback on exception
327 --traceback always print a traceback on exception
328 --time time how long the command takes
328 --time time how long the command takes
329 --profile print command execution profile
329 --profile print command execution profile
330 --version output version information and exit
330 --version output version information and exit
331 -h --help display help and exit
331 -h --help display help and exit
332 --hidden consider hidden changesets
332 --hidden consider hidden changesets
333 --pager TYPE when to paginate (boolean, always, auto, or never)
333 --pager TYPE when to paginate (boolean, always, auto, or never)
334 (default: auto)
334 (default: auto)
335
335
336 (use 'hg help' for the full list of commands)
336 (use 'hg help' for the full list of commands)
337
337
338 $ hg add -h
338 $ hg add -h
339 hg add [OPTION]... [FILE]...
339 hg add [OPTION]... [FILE]...
340
340
341 add the specified files on the next commit
341 add the specified files on the next commit
342
342
343 Schedule files to be version controlled and added to the repository.
343 Schedule files to be version controlled and added to the repository.
344
344
345 The files will be added to the repository at the next commit. To undo an
345 The files will be added to the repository at the next commit. To undo an
346 add before that, see 'hg forget'.
346 add before that, see 'hg forget'.
347
347
348 If no names are given, add all files to the repository (except files
348 If no names are given, add all files to the repository (except files
349 matching ".hgignore").
349 matching ".hgignore").
350
350
351 Returns 0 if all files are successfully added.
351 Returns 0 if all files are successfully added.
352
352
353 options ([+] can be repeated):
353 options ([+] can be repeated):
354
354
355 -I --include PATTERN [+] include names matching the given patterns
355 -I --include PATTERN [+] include names matching the given patterns
356 -X --exclude PATTERN [+] exclude names matching the given patterns
356 -X --exclude PATTERN [+] exclude names matching the given patterns
357 -S --subrepos recurse into subrepositories
357 -S --subrepos recurse into subrepositories
358 -n --dry-run do not perform actions, just print output
358 -n --dry-run do not perform actions, just print output
359
359
360 (some details hidden, use --verbose to show complete help)
360 (some details hidden, use --verbose to show complete help)
361
361
362 Verbose help for add
362 Verbose help for add
363
363
364 $ hg add -hv
364 $ hg add -hv
365 hg add [OPTION]... [FILE]...
365 hg add [OPTION]... [FILE]...
366
366
367 add the specified files on the next commit
367 add the specified files on the next commit
368
368
369 Schedule files to be version controlled and added to the repository.
369 Schedule files to be version controlled and added to the repository.
370
370
371 The files will be added to the repository at the next commit. To undo an
371 The files will be added to the repository at the next commit. To undo an
372 add before that, see 'hg forget'.
372 add before that, see 'hg forget'.
373
373
374 If no names are given, add all files to the repository (except files
374 If no names are given, add all files to the repository (except files
375 matching ".hgignore").
375 matching ".hgignore").
376
376
377 Examples:
377 Examples:
378
378
379 - New (unknown) files are added automatically by 'hg add':
379 - New (unknown) files are added automatically by 'hg add':
380
380
381 $ ls
381 $ ls
382 foo.c
382 foo.c
383 $ hg status
383 $ hg status
384 ? foo.c
384 ? foo.c
385 $ hg add
385 $ hg add
386 adding foo.c
386 adding foo.c
387 $ hg status
387 $ hg status
388 A foo.c
388 A foo.c
389
389
390 - Specific files to be added can be specified:
390 - Specific files to be added can be specified:
391
391
392 $ ls
392 $ ls
393 bar.c foo.c
393 bar.c foo.c
394 $ hg status
394 $ hg status
395 ? bar.c
395 ? bar.c
396 ? foo.c
396 ? foo.c
397 $ hg add bar.c
397 $ hg add bar.c
398 $ hg status
398 $ hg status
399 A bar.c
399 A bar.c
400 ? foo.c
400 ? foo.c
401
401
402 Returns 0 if all files are successfully added.
402 Returns 0 if all files are successfully added.
403
403
404 options ([+] can be repeated):
404 options ([+] can be repeated):
405
405
406 -I --include PATTERN [+] include names matching the given patterns
406 -I --include PATTERN [+] include names matching the given patterns
407 -X --exclude PATTERN [+] exclude names matching the given patterns
407 -X --exclude PATTERN [+] exclude names matching the given patterns
408 -S --subrepos recurse into subrepositories
408 -S --subrepos recurse into subrepositories
409 -n --dry-run do not perform actions, just print output
409 -n --dry-run do not perform actions, just print output
410
410
411 global options ([+] can be repeated):
411 global options ([+] can be repeated):
412
412
413 -R --repository REPO repository root directory or name of overlay bundle
413 -R --repository REPO repository root directory or name of overlay bundle
414 file
414 file
415 --cwd DIR change working directory
415 --cwd DIR change working directory
416 -y --noninteractive do not prompt, automatically pick the first choice for
416 -y --noninteractive do not prompt, automatically pick the first choice for
417 all prompts
417 all prompts
418 -q --quiet suppress output
418 -q --quiet suppress output
419 -v --verbose enable additional output
419 -v --verbose enable additional output
420 --color TYPE when to colorize (boolean, always, auto, never, or
420 --color TYPE when to colorize (boolean, always, auto, never, or
421 debug)
421 debug)
422 --config CONFIG [+] set/override config option (use 'section.name=value')
422 --config CONFIG [+] set/override config option (use 'section.name=value')
423 --debug enable debugging output
423 --debug enable debugging output
424 --debugger start debugger
424 --debugger start debugger
425 --encoding ENCODE set the charset encoding (default: ascii)
425 --encoding ENCODE set the charset encoding (default: ascii)
426 --encodingmode MODE set the charset encoding mode (default: strict)
426 --encodingmode MODE set the charset encoding mode (default: strict)
427 --traceback always print a traceback on exception
427 --traceback always print a traceback on exception
428 --time time how long the command takes
428 --time time how long the command takes
429 --profile print command execution profile
429 --profile print command execution profile
430 --version output version information and exit
430 --version output version information and exit
431 -h --help display help and exit
431 -h --help display help and exit
432 --hidden consider hidden changesets
432 --hidden consider hidden changesets
433 --pager TYPE when to paginate (boolean, always, auto, or never)
433 --pager TYPE when to paginate (boolean, always, auto, or never)
434 (default: auto)
434 (default: auto)
435
435
436 Test the textwidth config option
436 Test the textwidth config option
437
437
438 $ hg root -h --config ui.textwidth=50
438 $ hg root -h --config ui.textwidth=50
439 hg root
439 hg root
440
440
441 print the root (top) of the current working
441 print the root (top) of the current working
442 directory
442 directory
443
443
444 Print the root directory of the current
444 Print the root directory of the current
445 repository.
445 repository.
446
446
447 Returns 0 on success.
447 Returns 0 on success.
448
448
449 (some details hidden, use --verbose to show
449 (some details hidden, use --verbose to show
450 complete help)
450 complete help)
451
451
452 Test help option with version option
452 Test help option with version option
453
453
454 $ hg add -h --version
454 $ hg add -h --version
455 Mercurial Distributed SCM (version *) (glob)
455 Mercurial Distributed SCM (version *) (glob)
456 (see https://mercurial-scm.org for more information)
456 (see https://mercurial-scm.org for more information)
457
457
458 Copyright (C) 2005-* Matt Mackall and others (glob)
458 Copyright (C) 2005-* Matt Mackall and others (glob)
459 This is free software; see the source for copying conditions. There is NO
459 This is free software; see the source for copying conditions. There is NO
460 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
460 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
461
461
462 $ hg add --skjdfks
462 $ hg add --skjdfks
463 hg add: option --skjdfks not recognized
463 hg add: option --skjdfks not recognized
464 hg add [OPTION]... [FILE]...
464 hg add [OPTION]... [FILE]...
465
465
466 add the specified files on the next commit
466 add the specified files on the next commit
467
467
468 options ([+] can be repeated):
468 options ([+] can be repeated):
469
469
470 -I --include PATTERN [+] include names matching the given patterns
470 -I --include PATTERN [+] include names matching the given patterns
471 -X --exclude PATTERN [+] exclude names matching the given patterns
471 -X --exclude PATTERN [+] exclude names matching the given patterns
472 -S --subrepos recurse into subrepositories
472 -S --subrepos recurse into subrepositories
473 -n --dry-run do not perform actions, just print output
473 -n --dry-run do not perform actions, just print output
474
474
475 (use 'hg add -h' to show more help)
475 (use 'hg add -h' to show more help)
476 [255]
476 [255]
477
477
478 Test ambiguous command help
478 Test ambiguous command help
479
479
480 $ hg help ad
480 $ hg help ad
481 list of commands:
481 list of commands:
482
482
483 add add the specified files on the next commit
483 add add the specified files on the next commit
484 addremove add all new files, delete all missing files
484 addremove add all new files, delete all missing files
485
485
486 (use 'hg help -v ad' to show built-in aliases and global options)
486 (use 'hg help -v ad' to show built-in aliases and global options)
487
487
488 Test command without options
488 Test command without options
489
489
490 $ hg help verify
490 $ hg help verify
491 hg verify
491 hg verify
492
492
493 verify the integrity of the repository
493 verify the integrity of the repository
494
494
495 Verify the integrity of the current repository.
495 Verify the integrity of the current repository.
496
496
497 This will perform an extensive check of the repository's integrity,
497 This will perform an extensive check of the repository's integrity,
498 validating the hashes and checksums of each entry in the changelog,
498 validating the hashes and checksums of each entry in the changelog,
499 manifest, and tracked files, as well as the integrity of their crosslinks
499 manifest, and tracked files, as well as the integrity of their crosslinks
500 and indices.
500 and indices.
501
501
502 Please see https://mercurial-scm.org/wiki/RepositoryCorruption for more
502 Please see https://mercurial-scm.org/wiki/RepositoryCorruption for more
503 information about recovery from corruption of the repository.
503 information about recovery from corruption of the repository.
504
504
505 Returns 0 on success, 1 if errors are encountered.
505 Returns 0 on success, 1 if errors are encountered.
506
506
507 (some details hidden, use --verbose to show complete help)
507 (some details hidden, use --verbose to show complete help)
508
508
509 $ hg help diff
509 $ hg help diff
510 hg diff [OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...
510 hg diff [OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...
511
511
512 diff repository (or selected files)
512 diff repository (or selected files)
513
513
514 Show differences between revisions for the specified files.
514 Show differences between revisions for the specified files.
515
515
516 Differences between files are shown using the unified diff format.
516 Differences between files are shown using the unified diff format.
517
517
518 Note:
518 Note:
519 'hg diff' may generate unexpected results for merges, as it will
519 'hg diff' may generate unexpected results for merges, as it will
520 default to comparing against the working directory's first parent
520 default to comparing against the working directory's first parent
521 changeset if no revisions are specified.
521 changeset if no revisions are specified.
522
522
523 When two revision arguments are given, then changes are shown between
523 When two revision arguments are given, then changes are shown between
524 those revisions. If only one revision is specified then that revision is
524 those revisions. If only one revision is specified then that revision is
525 compared to the working directory, and, when no revisions are specified,
525 compared to the working directory, and, when no revisions are specified,
526 the working directory files are compared to its first parent.
526 the working directory files are compared to its first parent.
527
527
528 Alternatively you can specify -c/--change with a revision to see the
528 Alternatively you can specify -c/--change with a revision to see the
529 changes in that changeset relative to its first parent.
529 changes in that changeset relative to its first parent.
530
530
531 Without the -a/--text option, diff will avoid generating diffs of files it
531 Without the -a/--text option, diff will avoid generating diffs of files it
532 detects as binary. With -a, diff will generate a diff anyway, probably
532 detects as binary. With -a, diff will generate a diff anyway, probably
533 with undesirable results.
533 with undesirable results.
534
534
535 Use the -g/--git option to generate diffs in the git extended diff format.
535 Use the -g/--git option to generate diffs in the git extended diff format.
536 For more information, read 'hg help diffs'.
536 For more information, read 'hg help diffs'.
537
537
538 Returns 0 on success.
538 Returns 0 on success.
539
539
540 options ([+] can be repeated):
540 options ([+] can be repeated):
541
541
542 -r --rev REV [+] revision
542 -r --rev REV [+] revision
543 -c --change REV change made by revision
543 -c --change REV change made by revision
544 -a --text treat all files as text
544 -a --text treat all files as text
545 -g --git use git extended diff format
545 -g --git use git extended diff format
546 --nodates omit dates from diff headers
546 --nodates omit dates from diff headers
547 --noprefix omit a/ and b/ prefixes from filenames
547 --noprefix omit a/ and b/ prefixes from filenames
548 -p --show-function show which function each change is in
548 -p --show-function show which function each change is in
549 --reverse produce a diff that undoes the changes
549 --reverse produce a diff that undoes the changes
550 -w --ignore-all-space ignore white space when comparing lines
550 -w --ignore-all-space ignore white space when comparing lines
551 -b --ignore-space-change ignore changes in the amount of white space
551 -b --ignore-space-change ignore changes in the amount of white space
552 -B --ignore-blank-lines ignore changes whose lines are all blank
552 -B --ignore-blank-lines ignore changes whose lines are all blank
553 -U --unified NUM number of lines of context to show
553 -U --unified NUM number of lines of context to show
554 --stat output diffstat-style summary of changes
554 --stat output diffstat-style summary of changes
555 --root DIR produce diffs relative to subdirectory
555 --root DIR produce diffs relative to subdirectory
556 -I --include PATTERN [+] include names matching the given patterns
556 -I --include PATTERN [+] include names matching the given patterns
557 -X --exclude PATTERN [+] exclude names matching the given patterns
557 -X --exclude PATTERN [+] exclude names matching the given patterns
558 -S --subrepos recurse into subrepositories
558 -S --subrepos recurse into subrepositories
559
559
560 (some details hidden, use --verbose to show complete help)
560 (some details hidden, use --verbose to show complete help)
561
561
562 $ hg help status
562 $ hg help status
563 hg status [OPTION]... [FILE]...
563 hg status [OPTION]... [FILE]...
564
564
565 aliases: st
565 aliases: st
566
566
567 show changed files in the working directory
567 show changed files in the working directory
568
568
569 Show status of files in the repository. If names are given, only files
569 Show status of files in the repository. If names are given, only files
570 that match are shown. Files that are clean or ignored or the source of a
570 that match are shown. Files that are clean or ignored or the source of a
571 copy/move operation, are not listed unless -c/--clean, -i/--ignored,
571 copy/move operation, are not listed unless -c/--clean, -i/--ignored,
572 -C/--copies or -A/--all are given. Unless options described with "show
572 -C/--copies or -A/--all are given. Unless options described with "show
573 only ..." are given, the options -mardu are used.
573 only ..." are given, the options -mardu are used.
574
574
575 Option -q/--quiet hides untracked (unknown and ignored) files unless
575 Option -q/--quiet hides untracked (unknown and ignored) files unless
576 explicitly requested with -u/--unknown or -i/--ignored.
576 explicitly requested with -u/--unknown or -i/--ignored.
577
577
578 Note:
578 Note:
579 'hg status' may appear to disagree with diff if permissions have
579 'hg status' may appear to disagree with diff if permissions have
580 changed or a merge has occurred. The standard diff format does not
580 changed or a merge has occurred. The standard diff format does not
581 report permission changes and diff only reports changes relative to one
581 report permission changes and diff only reports changes relative to one
582 merge parent.
582 merge parent.
583
583
584 If one revision is given, it is used as the base revision. If two
584 If one revision is given, it is used as the base revision. If two
585 revisions are given, the differences between them are shown. The --change
585 revisions are given, the differences between them are shown. The --change
586 option can also be used as a shortcut to list the changed files of a
586 option can also be used as a shortcut to list the changed files of a
587 revision from its first parent.
587 revision from its first parent.
588
588
589 The codes used to show the status of files are:
589 The codes used to show the status of files are:
590
590
591 M = modified
591 M = modified
592 A = added
592 A = added
593 R = removed
593 R = removed
594 C = clean
594 C = clean
595 ! = missing (deleted by non-hg command, but still tracked)
595 ! = missing (deleted by non-hg command, but still tracked)
596 ? = not tracked
596 ? = not tracked
597 I = ignored
597 I = ignored
598 = origin of the previous file (with --copies)
598 = origin of the previous file (with --copies)
599
599
600 Returns 0 on success.
600 Returns 0 on success.
601
601
602 options ([+] can be repeated):
602 options ([+] can be repeated):
603
603
604 -A --all show status of all files
604 -A --all show status of all files
605 -m --modified show only modified files
605 -m --modified show only modified files
606 -a --added show only added files
606 -a --added show only added files
607 -r --removed show only removed files
607 -r --removed show only removed files
608 -d --deleted show only deleted (but tracked) files
608 -d --deleted show only deleted (but tracked) files
609 -c --clean show only files without changes
609 -c --clean show only files without changes
610 -u --unknown show only unknown (not tracked) files
610 -u --unknown show only unknown (not tracked) files
611 -i --ignored show only ignored files
611 -i --ignored show only ignored files
612 -n --no-status hide status prefix
612 -n --no-status hide status prefix
613 -C --copies show source of copied files
613 -C --copies show source of copied files
614 -0 --print0 end filenames with NUL, for use with xargs
614 -0 --print0 end filenames with NUL, for use with xargs
615 --rev REV [+] show difference from revision
615 --rev REV [+] show difference from revision
616 --change REV list the changed files of a revision
616 --change REV list the changed files of a revision
617 -I --include PATTERN [+] include names matching the given patterns
617 -I --include PATTERN [+] include names matching the given patterns
618 -X --exclude PATTERN [+] exclude names matching the given patterns
618 -X --exclude PATTERN [+] exclude names matching the given patterns
619 -S --subrepos recurse into subrepositories
619 -S --subrepos recurse into subrepositories
620
620
621 (some details hidden, use --verbose to show complete help)
621 (some details hidden, use --verbose to show complete help)
622
622
623 $ hg -q help status
623 $ hg -q help status
624 hg status [OPTION]... [FILE]...
624 hg status [OPTION]... [FILE]...
625
625
626 show changed files in the working directory
626 show changed files in the working directory
627
627
628 $ hg help foo
628 $ hg help foo
629 abort: no such help topic: foo
629 abort: no such help topic: foo
630 (try 'hg help --keyword foo')
630 (try 'hg help --keyword foo')
631 [255]
631 [255]
632
632
633 $ hg skjdfks
633 $ hg skjdfks
634 hg: unknown command 'skjdfks'
634 hg: unknown command 'skjdfks'
635 Mercurial Distributed SCM
635 Mercurial Distributed SCM
636
636
637 basic commands:
637 basic commands:
638
638
639 add add the specified files on the next commit
639 add add the specified files on the next commit
640 annotate show changeset information by line for each file
640 annotate show changeset information by line for each file
641 clone make a copy of an existing repository
641 clone make a copy of an existing repository
642 commit commit the specified files or all outstanding changes
642 commit commit the specified files or all outstanding changes
643 diff diff repository (or selected files)
643 diff diff repository (or selected files)
644 export dump the header and diffs for one or more changesets
644 export dump the header and diffs for one or more changesets
645 forget forget the specified files on the next commit
645 forget forget the specified files on the next commit
646 init create a new repository in the given directory
646 init create a new repository in the given directory
647 log show revision history of entire repository or files
647 log show revision history of entire repository or files
648 merge merge another revision into working directory
648 merge merge another revision into working directory
649 pull pull changes from the specified source
649 pull pull changes from the specified source
650 push push changes to the specified destination
650 push push changes to the specified destination
651 remove remove the specified files on the next commit
651 remove remove the specified files on the next commit
652 serve start stand-alone webserver
652 serve start stand-alone webserver
653 status show changed files in the working directory
653 status show changed files in the working directory
654 summary summarize working directory state
654 summary summarize working directory state
655 update update working directory (or switch revisions)
655 update update working directory (or switch revisions)
656
656
657 (use 'hg help' for the full list of commands or 'hg -v' for details)
657 (use 'hg help' for the full list of commands or 'hg -v' for details)
658 [255]
658 [255]
659
659
660
660
661 Make sure that we don't run afoul of the help system thinking that
661 Make sure that we don't run afoul of the help system thinking that
662 this is a section and erroring out weirdly.
662 this is a section and erroring out weirdly.
663
663
664 $ hg .log
664 $ hg .log
665 hg: unknown command '.log'
665 hg: unknown command '.log'
666 (did you mean log?)
666 (did you mean log?)
667 [255]
667 [255]
668
668
669 $ hg log.
669 $ hg log.
670 hg: unknown command 'log.'
670 hg: unknown command 'log.'
671 (did you mean log?)
671 (did you mean log?)
672 [255]
672 [255]
673 $ hg pu.lh
673 $ hg pu.lh
674 hg: unknown command 'pu.lh'
674 hg: unknown command 'pu.lh'
675 (did you mean one of pull, push?)
675 (did you mean one of pull, push?)
676 [255]
676 [255]
677
677
678 $ cat > helpext.py <<EOF
678 $ cat > helpext.py <<EOF
679 > import os
679 > import os
680 > from mercurial import cmdutil, commands
680 > from mercurial import cmdutil, commands
681 >
681 >
682 > cmdtable = {}
682 > cmdtable = {}
683 > command = cmdutil.command(cmdtable)
683 > command = cmdutil.command(cmdtable)
684 >
684 >
685 > @command('nohelp',
685 > @command('nohelp',
686 > [('', 'longdesc', 3, 'x'*90),
686 > [('', 'longdesc', 3, 'x'*90),
687 > ('n', '', None, 'normal desc'),
687 > ('n', '', None, 'normal desc'),
688 > ('', 'newline', '', 'line1\nline2')],
688 > ('', 'newline', '', 'line1\nline2')],
689 > 'hg nohelp',
689 > 'hg nohelp',
690 > norepo=True)
690 > norepo=True)
691 > @command('debugoptADV', [('', 'aopt', None, 'option is (ADVANCED)')])
691 > @command('debugoptADV', [('', 'aopt', None, 'option is (ADVANCED)')])
692 > @command('debugoptDEP', [('', 'dopt', None, 'option is (DEPRECATED)')])
692 > @command('debugoptDEP', [('', 'dopt', None, 'option is (DEPRECATED)')])
693 > @command('debugoptEXP', [('', 'eopt', None, 'option is (EXPERIMENTAL)')])
693 > @command('debugoptEXP', [('', 'eopt', None, 'option is (EXPERIMENTAL)')])
694 > def nohelp(ui, *args, **kwargs):
694 > def nohelp(ui, *args, **kwargs):
695 > pass
695 > pass
696 >
696 >
697 > def uisetup(ui):
697 > def uisetup(ui):
698 > ui.setconfig('alias', 'shellalias', '!echo hi', 'helpext')
698 > ui.setconfig('alias', 'shellalias', '!echo hi', 'helpext')
699 > ui.setconfig('alias', 'hgalias', 'summary', 'helpext')
699 > ui.setconfig('alias', 'hgalias', 'summary', 'helpext')
700 >
700 >
701 > EOF
701 > EOF
702 $ echo '[extensions]' >> $HGRCPATH
702 $ echo '[extensions]' >> $HGRCPATH
703 $ echo "helpext = `pwd`/helpext.py" >> $HGRCPATH
703 $ echo "helpext = `pwd`/helpext.py" >> $HGRCPATH
704
704
705 Test for aliases
705 Test for aliases
706
706
707 $ hg help hgalias
707 $ hg help hgalias
708 hg hgalias [--remote]
708 hg hgalias [--remote]
709
709
710 alias for: hg summary
710 alias for: hg summary
711
711
712 summarize working directory state
712 summarize working directory state
713
713
714 This generates a brief summary of the working directory state, including
714 This generates a brief summary of the working directory state, including
715 parents, branch, commit status, phase and available updates.
715 parents, branch, commit status, phase and available updates.
716
716
717 With the --remote option, this will check the default paths for incoming
717 With the --remote option, this will check the default paths for incoming
718 and outgoing changes. This can be time-consuming.
718 and outgoing changes. This can be time-consuming.
719
719
720 Returns 0 on success.
720 Returns 0 on success.
721
721
722 defined by: helpext
722 defined by: helpext
723
723
724 options:
724 options:
725
725
726 --remote check for push and pull
726 --remote check for push and pull
727
727
728 (some details hidden, use --verbose to show complete help)
728 (some details hidden, use --verbose to show complete help)
729
729
730 $ hg help shellalias
730 $ hg help shellalias
731 hg shellalias
731 hg shellalias
732
732
733 shell alias for:
733 shell alias for:
734
734
735 echo hi
735 echo hi
736
736
737 defined by: helpext
737 defined by: helpext
738
738
739 (some details hidden, use --verbose to show complete help)
739 (some details hidden, use --verbose to show complete help)
740
740
741 Test command with no help text
741 Test command with no help text
742
742
743 $ hg help nohelp
743 $ hg help nohelp
744 hg nohelp
744 hg nohelp
745
745
746 (no help text available)
746 (no help text available)
747
747
748 options:
748 options:
749
749
750 --longdesc VALUE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
750 --longdesc VALUE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
751 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (default: 3)
751 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (default: 3)
752 -n -- normal desc
752 -n -- normal desc
753 --newline VALUE line1 line2
753 --newline VALUE line1 line2
754
754
755 (some details hidden, use --verbose to show complete help)
755 (some details hidden, use --verbose to show complete help)
756
756
757 $ hg help -k nohelp
757 $ hg help -k nohelp
758 Commands:
758 Commands:
759
759
760 nohelp hg nohelp
760 nohelp hg nohelp
761
761
762 Extension Commands:
762 Extension Commands:
763
763
764 nohelp (no help text available)
764 nohelp (no help text available)
765
765
766 Test that default list of commands omits extension commands
766 Test that default list of commands omits extension commands
767
767
768 $ hg help
768 $ hg help
769 Mercurial Distributed SCM
769 Mercurial Distributed SCM
770
770
771 list of commands:
771 list of commands:
772
772
773 add add the specified files on the next commit
773 add add the specified files on the next commit
774 addremove add all new files, delete all missing files
774 addremove add all new files, delete all missing files
775 annotate show changeset information by line for each file
775 annotate show changeset information by line for each file
776 archive create an unversioned archive of a repository revision
776 archive create an unversioned archive of a repository revision
777 backout reverse effect of earlier changeset
777 backout reverse effect of earlier changeset
778 bisect subdivision search of changesets
778 bisect subdivision search of changesets
779 bookmarks create a new bookmark or list existing bookmarks
779 bookmarks create a new bookmark or list existing bookmarks
780 branch set or show the current branch name
780 branch set or show the current branch name
781 branches list repository named branches
781 branches list repository named branches
782 bundle create a changegroup file
782 bundle create a changegroup file
783 cat output the current or given revision of files
783 cat output the current or given revision of files
784 clone make a copy of an existing repository
784 clone make a copy of an existing repository
785 commit commit the specified files or all outstanding changes
785 commit commit the specified files or all outstanding changes
786 config show combined config settings from all hgrc files
786 config show combined config settings from all hgrc files
787 copy mark files as copied for the next commit
787 copy mark files as copied for the next commit
788 diff diff repository (or selected files)
788 diff diff repository (or selected files)
789 export dump the header and diffs for one or more changesets
789 export dump the header and diffs for one or more changesets
790 files list tracked files
790 files list tracked files
791 forget forget the specified files on the next commit
791 forget forget the specified files on the next commit
792 graft copy changes from other branches onto the current branch
792 graft copy changes from other branches onto the current branch
793 grep search revision history for a pattern in specified files
793 grep search revision history for a pattern in specified files
794 heads show branch heads
794 heads show branch heads
795 help show help for a given topic or a help overview
795 help show help for a given topic or a help overview
796 identify identify the working directory or specified revision
796 identify identify the working directory or specified revision
797 import import an ordered set of patches
797 import import an ordered set of patches
798 incoming show new changesets found in source
798 incoming show new changesets found in source
799 init create a new repository in the given directory
799 init create a new repository in the given directory
800 log show revision history of entire repository or files
800 log show revision history of entire repository or files
801 manifest output the current or given revision of the project manifest
801 manifest output the current or given revision of the project manifest
802 merge merge another revision into working directory
802 merge merge another revision into working directory
803 outgoing show changesets not found in the destination
803 outgoing show changesets not found in the destination
804 paths show aliases for remote repositories
804 paths show aliases for remote repositories
805 phase set or show the current phase name
805 phase set or show the current phase name
806 pull pull changes from the specified source
806 pull pull changes from the specified source
807 push push changes to the specified destination
807 push push changes to the specified destination
808 recover roll back an interrupted transaction
808 recover roll back an interrupted transaction
809 remove remove the specified files on the next commit
809 remove remove the specified files on the next commit
810 rename rename files; equivalent of copy + remove
810 rename rename files; equivalent of copy + remove
811 resolve redo merges or set/view the merge status of files
811 resolve redo merges or set/view the merge status of files
812 revert restore files to their checkout state
812 revert restore files to their checkout state
813 root print the root (top) of the current working directory
813 root print the root (top) of the current working directory
814 serve start stand-alone webserver
814 serve start stand-alone webserver
815 status show changed files in the working directory
815 status show changed files in the working directory
816 summary summarize working directory state
816 summary summarize working directory state
817 tag add one or more tags for the current or given revision
817 tag add one or more tags for the current or given revision
818 tags list repository tags
818 tags list repository tags
819 unbundle apply one or more changegroup files
819 unbundle apply one or more changegroup files
820 update update working directory (or switch revisions)
820 update update working directory (or switch revisions)
821 verify verify the integrity of the repository
821 verify verify the integrity of the repository
822 version output version and copyright information
822 version output version and copyright information
823
823
824 enabled extensions:
824 enabled extensions:
825
825
826 helpext (no help text available)
826 helpext (no help text available)
827
827
828 additional help topics:
828 additional help topics:
829
829
830 color Colorizing Outputs
830 color Colorizing Outputs
831 config Configuration Files
831 config Configuration Files
832 dates Date Formats
832 dates Date Formats
833 diffs Diff Formats
833 diffs Diff Formats
834 environment Environment Variables
834 environment Environment Variables
835 extensions Using Additional Features
835 extensions Using Additional Features
836 filesets Specifying File Sets
836 filesets Specifying File Sets
837 glossary Glossary
837 glossary Glossary
838 hgignore Syntax for Mercurial Ignore Files
838 hgignore Syntax for Mercurial Ignore Files
839 hgweb Configuring hgweb
839 hgweb Configuring hgweb
840 internals Technical implementation topics
840 internals Technical implementation topics
841 merge-tools Merge Tools
841 merge-tools Merge Tools
842 pager Pager Support
842 pager Pager Support
843 patterns File Name Patterns
843 patterns File Name Patterns
844 phases Working with Phases
844 phases Working with Phases
845 revisions Specifying Revisions
845 revisions Specifying Revisions
846 scripting Using Mercurial from scripts and automation
846 scripting Using Mercurial from scripts and automation
847 subrepos Subrepositories
847 subrepos Subrepositories
848 templating Template Usage
848 templating Template Usage
849 urls URL Paths
849 urls URL Paths
850
850
851 (use 'hg help -v' to show built-in aliases and global options)
851 (use 'hg help -v' to show built-in aliases and global options)
852
852
853
853
854 Test list of internal help commands
854 Test list of internal help commands
855
855
856 $ hg help debug
856 $ hg help debug
857 debug commands (internal and unsupported):
857 debug commands (internal and unsupported):
858
858
859 debugancestor
859 debugancestor
860 find the ancestor revision of two revisions in a given index
860 find the ancestor revision of two revisions in a given index
861 debugapplystreamclonebundle
861 debugapplystreamclonebundle
862 apply a stream clone bundle file
862 apply a stream clone bundle file
863 debugbuilddag
863 debugbuilddag
864 builds a repo with a given DAG from scratch in the current
864 builds a repo with a given DAG from scratch in the current
865 empty repo
865 empty repo
866 debugbundle lists the contents of a bundle
866 debugbundle lists the contents of a bundle
867 debugcheckstate
867 debugcheckstate
868 validate the correctness of the current dirstate
868 validate the correctness of the current dirstate
869 debugcolor show available color, effects or style
869 debugcolor show available color, effects or style
870 debugcommands
870 debugcommands
871 list all available commands and options
871 list all available commands and options
872 debugcomplete
872 debugcomplete
873 returns the completion list associated with the given command
873 returns the completion list associated with the given command
874 debugcreatestreamclonebundle
874 debugcreatestreamclonebundle
875 create a stream clone bundle file
875 create a stream clone bundle file
876 debugdag format the changelog or an index DAG as a concise textual
876 debugdag format the changelog or an index DAG as a concise textual
877 description
877 description
878 debugdata dump the contents of a data file revision
878 debugdata dump the contents of a data file revision
879 debugdate parse and display a date
879 debugdate parse and display a date
880 debugdeltachain
880 debugdeltachain
881 dump information about delta chains in a revlog
881 dump information about delta chains in a revlog
882 debugdirstate
882 debugdirstate
883 show the contents of the current dirstate
883 show the contents of the current dirstate
884 debugdiscovery
884 debugdiscovery
885 runs the changeset discovery protocol in isolation
885 runs the changeset discovery protocol in isolation
886 debugextensions
886 debugextensions
887 show information about active extensions
887 show information about active extensions
888 debugfileset parse and apply a fileset specification
888 debugfileset parse and apply a fileset specification
889 debugfsinfo show information detected about current filesystem
889 debugfsinfo show information detected about current filesystem
890 debuggetbundle
890 debuggetbundle
891 retrieves a bundle from a repo
891 retrieves a bundle from a repo
892 debugignore display the combined ignore pattern and information about
892 debugignore display the combined ignore pattern and information about
893 ignored files
893 ignored files
894 debugindex dump the contents of an index file
894 debugindex dump the contents of an index file
895 debugindexdot
895 debugindexdot
896 dump an index DAG as a graphviz dot file
896 dump an index DAG as a graphviz dot file
897 debuginstall test Mercurial installation
897 debuginstall test Mercurial installation
898 debugknown test whether node ids are known to a repo
898 debugknown test whether node ids are known to a repo
899 debuglocks show or modify state of locks
899 debuglocks show or modify state of locks
900 debugmergestate
900 debugmergestate
901 print merge state
901 print merge state
902 debugnamecomplete
902 debugnamecomplete
903 complete "names" - tags, open branch names, bookmark names
903 complete "names" - tags, open branch names, bookmark names
904 debugobsolete
904 debugobsolete
905 create arbitrary obsolete marker
905 create arbitrary obsolete marker
906 debugoptADV (no help text available)
906 debugoptADV (no help text available)
907 debugoptDEP (no help text available)
907 debugoptDEP (no help text available)
908 debugoptEXP (no help text available)
908 debugoptEXP (no help text available)
909 debugpathcomplete
909 debugpathcomplete
910 complete part or all of a tracked path
910 complete part or all of a tracked path
911 debugpushkey access the pushkey key/value protocol
911 debugpushkey access the pushkey key/value protocol
912 debugpvec (no help text available)
912 debugpvec (no help text available)
913 debugrebuilddirstate
913 debugrebuilddirstate
914 rebuild the dirstate as it would look like for the given
914 rebuild the dirstate as it would look like for the given
915 revision
915 revision
916 debugrebuildfncache
916 debugrebuildfncache
917 rebuild the fncache file
917 rebuild the fncache file
918 debugrename dump rename information
918 debugrename dump rename information
919 debugrevlog show data and statistics about a revlog
919 debugrevlog show data and statistics about a revlog
920 debugrevspec parse and apply a revision specification
920 debugrevspec parse and apply a revision specification
921 debugsetparents
921 debugsetparents
922 manually set the parents of the current working directory
922 manually set the parents of the current working directory
923 debugsub (no help text available)
923 debugsub (no help text available)
924 debugsuccessorssets
924 debugsuccessorssets
925 show set of successors for revision
925 show set of successors for revision
926 debugtemplate
926 debugtemplate
927 parse and apply a template
927 parse and apply a template
928 debugupgraderepo
928 debugupgraderepo
929 upgrade a repository to use different features
929 upgrade a repository to use different features
930 debugwalk show how files match on given patterns
930 debugwalk show how files match on given patterns
931 debugwireargs
931 debugwireargs
932 (no help text available)
932 (no help text available)
933
933
934 (use 'hg help -v debug' to show built-in aliases and global options)
934 (use 'hg help -v debug' to show built-in aliases and global options)
935
935
936 internals topic renders index of available sub-topics
936 internals topic renders index of available sub-topics
937
937
938 $ hg help internals
938 $ hg help internals
939 Technical implementation topics
939 Technical implementation topics
940 """""""""""""""""""""""""""""""
940 """""""""""""""""""""""""""""""
941
941
942 bundles Bundles
942 bundles Bundles
943 changegroups Changegroups
943 changegroups Changegroups
944 requirements Repository Requirements
944 requirements Repository Requirements
945 revlogs Revision Logs
945 revlogs Revision Logs
946 wireprotocol Wire Protocol
946 wireprotocol Wire Protocol
947
947
948 sub-topics can be accessed
948 sub-topics can be accessed
949
949
950 $ hg help internals.changegroups
950 $ hg help internals.changegroups
951 Changegroups
951 Changegroups
952 """"""""""""
952 """"""""""""
953
953
954 Changegroups are representations of repository revlog data, specifically
954 Changegroups are representations of repository revlog data, specifically
955 the changelog data, root/flat manifest data, treemanifest data, and
955 the changelog data, root/flat manifest data, treemanifest data, and
956 filelogs.
956 filelogs.
957
957
958 There are 3 versions of changegroups: "1", "2", and "3". From a high-
958 There are 3 versions of changegroups: "1", "2", and "3". From a high-
959 level, versions "1" and "2" are almost exactly the same, with the only
959 level, versions "1" and "2" are almost exactly the same, with the only
960 difference being an additional item in the *delta header*. Version "3"
960 difference being an additional item in the *delta header*. Version "3"
961 adds support for revlog flags in the *delta header* and optionally
961 adds support for revlog flags in the *delta header* and optionally
962 exchanging treemanifests (enabled by setting an option on the
962 exchanging treemanifests (enabled by setting an option on the
963 "changegroup" part in the bundle2).
963 "changegroup" part in the bundle2).
964
964
965 Changegroups when not exchanging treemanifests consist of 3 logical
965 Changegroups when not exchanging treemanifests consist of 3 logical
966 segments:
966 segments:
967
967
968 +---------------------------------+
968 +---------------------------------+
969 | | | |
969 | | | |
970 | changeset | manifest | filelogs |
970 | changeset | manifest | filelogs |
971 | | | |
971 | | | |
972 | | | |
972 | | | |
973 +---------------------------------+
973 +---------------------------------+
974
974
975 When exchanging treemanifests, there are 4 logical segments:
975 When exchanging treemanifests, there are 4 logical segments:
976
976
977 +-------------------------------------------------+
977 +-------------------------------------------------+
978 | | | | |
978 | | | | |
979 | changeset | root | treemanifests | filelogs |
979 | changeset | root | treemanifests | filelogs |
980 | | manifest | | |
980 | | manifest | | |
981 | | | | |
981 | | | | |
982 +-------------------------------------------------+
982 +-------------------------------------------------+
983
983
984 The principle building block of each segment is a *chunk*. A *chunk* is a
984 The principle building block of each segment is a *chunk*. A *chunk* is a
985 framed piece of data:
985 framed piece of data:
986
986
987 +---------------------------------------+
987 +---------------------------------------+
988 | | |
988 | | |
989 | length | data |
989 | length | data |
990 | (4 bytes) | (<length - 4> bytes) |
990 | (4 bytes) | (<length - 4> bytes) |
991 | | |
991 | | |
992 +---------------------------------------+
992 +---------------------------------------+
993
993
994 All integers are big-endian signed integers. Each chunk starts with a
994 All integers are big-endian signed integers. Each chunk starts with a
995 32-bit integer indicating the length of the entire chunk (including the
995 32-bit integer indicating the length of the entire chunk (including the
996 length field itself).
996 length field itself).
997
997
998 There is a special case chunk that has a value of 0 for the length
998 There is a special case chunk that has a value of 0 for the length
999 ("0x00000000"). We call this an *empty chunk*.
999 ("0x00000000"). We call this an *empty chunk*.
1000
1000
1001 Delta Groups
1001 Delta Groups
1002 ============
1002 ============
1003
1003
1004 A *delta group* expresses the content of a revlog as a series of deltas,
1004 A *delta group* expresses the content of a revlog as a series of deltas,
1005 or patches against previous revisions.
1005 or patches against previous revisions.
1006
1006
1007 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
1007 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
1008 to signal the end of the delta group:
1008 to signal the end of the delta group:
1009
1009
1010 +------------------------------------------------------------------------+
1010 +------------------------------------------------------------------------+
1011 | | | | | |
1011 | | | | | |
1012 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
1012 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
1013 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
1013 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
1014 | | | | | |
1014 | | | | | |
1015 +------------------------------------------------------------------------+
1015 +------------------------------------------------------------------------+
1016
1016
1017 Each *chunk*'s data consists of the following:
1017 Each *chunk*'s data consists of the following:
1018
1018
1019 +---------------------------------------+
1019 +---------------------------------------+
1020 | | |
1020 | | |
1021 | delta header | delta data |
1021 | delta header | delta data |
1022 | (various by version) | (various) |
1022 | (various by version) | (various) |
1023 | | |
1023 | | |
1024 +---------------------------------------+
1024 +---------------------------------------+
1025
1025
1026 The *delta data* is a series of *delta*s that describe a diff from an
1026 The *delta data* is a series of *delta*s that describe a diff from an
1027 existing entry (either that the recipient already has, or previously
1027 existing entry (either that the recipient already has, or previously
1028 specified in the bundlei/changegroup).
1028 specified in the bundlei/changegroup).
1029
1029
1030 The *delta header* is different between versions "1", "2", and "3" of the
1030 The *delta header* is different between versions "1", "2", and "3" of the
1031 changegroup format.
1031 changegroup format.
1032
1032
1033 Version 1 (headerlen=80):
1033 Version 1 (headerlen=80):
1034
1034
1035 +------------------------------------------------------+
1035 +------------------------------------------------------+
1036 | | | | |
1036 | | | | |
1037 | node | p1 node | p2 node | link node |
1037 | node | p1 node | p2 node | link node |
1038 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1038 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1039 | | | | |
1039 | | | | |
1040 +------------------------------------------------------+
1040 +------------------------------------------------------+
1041
1041
1042 Version 2 (headerlen=100):
1042 Version 2 (headerlen=100):
1043
1043
1044 +------------------------------------------------------------------+
1044 +------------------------------------------------------------------+
1045 | | | | | |
1045 | | | | | |
1046 | node | p1 node | p2 node | base node | link node |
1046 | node | p1 node | p2 node | base node | link node |
1047 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1047 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1048 | | | | | |
1048 | | | | | |
1049 +------------------------------------------------------------------+
1049 +------------------------------------------------------------------+
1050
1050
1051 Version 3 (headerlen=102):
1051 Version 3 (headerlen=102):
1052
1052
1053 +------------------------------------------------------------------------------+
1053 +------------------------------------------------------------------------------+
1054 | | | | | | |
1054 | | | | | | |
1055 | node | p1 node | p2 node | base node | link node | flags |
1055 | node | p1 node | p2 node | base node | link node | flags |
1056 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
1056 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
1057 | | | | | | |
1057 | | | | | | |
1058 +------------------------------------------------------------------------------+
1058 +------------------------------------------------------------------------------+
1059
1059
1060 The *delta data* consists of "chunklen - 4 - headerlen" bytes, which
1060 The *delta data* consists of "chunklen - 4 - headerlen" bytes, which
1061 contain a series of *delta*s, densely packed (no separators). These deltas
1061 contain a series of *delta*s, densely packed (no separators). These deltas
1062 describe a diff from an existing entry (either that the recipient already
1062 describe a diff from an existing entry (either that the recipient already
1063 has, or previously specified in the bundle/changegroup). The format is
1063 has, or previously specified in the bundle/changegroup). The format is
1064 described more fully in "hg help internals.bdiff", but briefly:
1064 described more fully in "hg help internals.bdiff", but briefly:
1065
1065
1066 +---------------------------------------------------------------+ |
1066 +---------------------------------------------------------------+
1067 | | | | | start offset | end
1067 | | | | |
1068 offset | new length | content | | (4 bytes) | (4
1068 | start offset | end offset | new length | content |
1069 bytes) | (4 bytes) | (<new length> bytes) | | |
1069 | (4 bytes) | (4 bytes) | (4 bytes) | (<new length> bytes) |
1070 | | |
1070 | | | | |
1071 +---------------------------------------------------------------+
1071 +---------------------------------------------------------------+
1072
1072
1073 Please note that the length field in the delta data does *not* include
1073 Please note that the length field in the delta data does *not* include
1074 itself.
1074 itself.
1075
1075
1076 In version 1, the delta is always applied against the previous node from
1076 In version 1, the delta is always applied against the previous node from
1077 the changegroup or the first parent if this is the first entry in the
1077 the changegroup or the first parent if this is the first entry in the
1078 changegroup.
1078 changegroup.
1079
1079
1080 In version 2 and up, the delta base node is encoded in the entry in the
1080 In version 2 and up, the delta base node is encoded in the entry in the
1081 changegroup. This allows the delta to be expressed against any parent,
1081 changegroup. This allows the delta to be expressed against any parent,
1082 which can result in smaller deltas and more efficient encoding of data.
1082 which can result in smaller deltas and more efficient encoding of data.
1083
1083
1084 Changeset Segment
1084 Changeset Segment
1085 =================
1085 =================
1086
1086
1087 The *changeset segment* consists of a single *delta group* holding
1087 The *changeset segment* consists of a single *delta group* holding
1088 changelog data. The *empty chunk* at the end of the *delta group* denotes
1088 changelog data. The *empty chunk* at the end of the *delta group* denotes
1089 the boundary to the *manifest segment*.
1089 the boundary to the *manifest segment*.
1090
1090
1091 Manifest Segment
1091 Manifest Segment
1092 ================
1092 ================
1093
1093
1094 The *manifest segment* consists of a single *delta group* holding manifest
1094 The *manifest segment* consists of a single *delta group* holding manifest
1095 data. If treemanifests are in use, it contains only the manifest for the
1095 data. If treemanifests are in use, it contains only the manifest for the
1096 root directory of the repository. Otherwise, it contains the entire
1096 root directory of the repository. Otherwise, it contains the entire
1097 manifest data. The *empty chunk* at the end of the *delta group* denotes
1097 manifest data. The *empty chunk* at the end of the *delta group* denotes
1098 the boundary to the next segment (either the *treemanifests segment* or
1098 the boundary to the next segment (either the *treemanifests segment* or
1099 the *filelogs segment*, depending on version and the request options).
1099 the *filelogs segment*, depending on version and the request options).
1100
1100
1101 Treemanifests Segment
1101 Treemanifests Segment
1102 ---------------------
1102 ---------------------
1103
1103
1104 The *treemanifests segment* only exists in changegroup version "3", and
1104 The *treemanifests segment* only exists in changegroup version "3", and
1105 only if the 'treemanifest' param is part of the bundle2 changegroup part
1105 only if the 'treemanifest' param is part of the bundle2 changegroup part
1106 (it is not possible to use changegroup version 3 outside of bundle2).
1106 (it is not possible to use changegroup version 3 outside of bundle2).
1107 Aside from the filenames in the *treemanifests segment* containing a
1107 Aside from the filenames in the *treemanifests segment* containing a
1108 trailing "/" character, it behaves identically to the *filelogs segment*
1108 trailing "/" character, it behaves identically to the *filelogs segment*
1109 (see below). The final sub-segment is followed by an *empty chunk*
1109 (see below). The final sub-segment is followed by an *empty chunk*
1110 (logically, a sub-segment with filename size 0). This denotes the boundary
1110 (logically, a sub-segment with filename size 0). This denotes the boundary
1111 to the *filelogs segment*.
1111 to the *filelogs segment*.
1112
1112
1113 Filelogs Segment
1113 Filelogs Segment
1114 ================
1114 ================
1115
1115
1116 The *filelogs segment* consists of multiple sub-segments, each
1116 The *filelogs segment* consists of multiple sub-segments, each
1117 corresponding to an individual file whose data is being described:
1117 corresponding to an individual file whose data is being described:
1118
1118
1119 +--------------------------------------------------+
1119 +--------------------------------------------------+
1120 | | | | | |
1120 | | | | | |
1121 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
1121 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
1122 | | | | | (4 bytes) |
1122 | | | | | (4 bytes) |
1123 | | | | | |
1123 | | | | | |
1124 +--------------------------------------------------+
1124 +--------------------------------------------------+
1125
1125
1126 The final filelog sub-segment is followed by an *empty chunk* (logically,
1126 The final filelog sub-segment is followed by an *empty chunk* (logically,
1127 a sub-segment with filename size 0). This denotes the end of the segment
1127 a sub-segment with filename size 0). This denotes the end of the segment
1128 and of the overall changegroup.
1128 and of the overall changegroup.
1129
1129
1130 Each filelog sub-segment consists of the following:
1130 Each filelog sub-segment consists of the following:
1131
1131
1132 +------------------------------------------------------+
1132 +------------------------------------------------------+
1133 | | | |
1133 | | | |
1134 | filename length | filename | delta group |
1134 | filename length | filename | delta group |
1135 | (4 bytes) | (<length - 4> bytes) | (various) |
1135 | (4 bytes) | (<length - 4> bytes) | (various) |
1136 | | | |
1136 | | | |
1137 +------------------------------------------------------+
1137 +------------------------------------------------------+
1138
1138
1139 That is, a *chunk* consisting of the filename (not terminated or padded)
1139 That is, a *chunk* consisting of the filename (not terminated or padded)
1140 followed by N chunks constituting the *delta group* for this file. The
1140 followed by N chunks constituting the *delta group* for this file. The
1141 *empty chunk* at the end of each *delta group* denotes the boundary to the
1141 *empty chunk* at the end of each *delta group* denotes the boundary to the
1142 next filelog sub-segment.
1142 next filelog sub-segment.
1143
1143
1144 Test list of commands with command with no help text
1144 Test list of commands with command with no help text
1145
1145
1146 $ hg help helpext
1146 $ hg help helpext
1147 helpext extension - no help text available
1147 helpext extension - no help text available
1148
1148
1149 list of commands:
1149 list of commands:
1150
1150
1151 nohelp (no help text available)
1151 nohelp (no help text available)
1152
1152
1153 (use 'hg help -v helpext' to show built-in aliases and global options)
1153 (use 'hg help -v helpext' to show built-in aliases and global options)
1154
1154
1155
1155
1156 test advanced, deprecated and experimental options are hidden in command help
1156 test advanced, deprecated and experimental options are hidden in command help
1157 $ hg help debugoptADV
1157 $ hg help debugoptADV
1158 hg debugoptADV
1158 hg debugoptADV
1159
1159
1160 (no help text available)
1160 (no help text available)
1161
1161
1162 options:
1162 options:
1163
1163
1164 (some details hidden, use --verbose to show complete help)
1164 (some details hidden, use --verbose to show complete help)
1165 $ hg help debugoptDEP
1165 $ hg help debugoptDEP
1166 hg debugoptDEP
1166 hg debugoptDEP
1167
1167
1168 (no help text available)
1168 (no help text available)
1169
1169
1170 options:
1170 options:
1171
1171
1172 (some details hidden, use --verbose to show complete help)
1172 (some details hidden, use --verbose to show complete help)
1173
1173
1174 $ hg help debugoptEXP
1174 $ hg help debugoptEXP
1175 hg debugoptEXP
1175 hg debugoptEXP
1176
1176
1177 (no help text available)
1177 (no help text available)
1178
1178
1179 options:
1179 options:
1180
1180
1181 (some details hidden, use --verbose to show complete help)
1181 (some details hidden, use --verbose to show complete help)
1182
1182
1183 test advanced, deprecated and experimental options are shown with -v
1183 test advanced, deprecated and experimental options are shown with -v
1184 $ hg help -v debugoptADV | grep aopt
1184 $ hg help -v debugoptADV | grep aopt
1185 --aopt option is (ADVANCED)
1185 --aopt option is (ADVANCED)
1186 $ hg help -v debugoptDEP | grep dopt
1186 $ hg help -v debugoptDEP | grep dopt
1187 --dopt option is (DEPRECATED)
1187 --dopt option is (DEPRECATED)
1188 $ hg help -v debugoptEXP | grep eopt
1188 $ hg help -v debugoptEXP | grep eopt
1189 --eopt option is (EXPERIMENTAL)
1189 --eopt option is (EXPERIMENTAL)
1190
1190
1191 #if gettext
1191 #if gettext
1192 test deprecated option is hidden with translation with untranslated description
1192 test deprecated option is hidden with translation with untranslated description
1193 (use many globy for not failing on changed transaction)
1193 (use many globy for not failing on changed transaction)
1194 $ LANGUAGE=sv hg help debugoptDEP
1194 $ LANGUAGE=sv hg help debugoptDEP
1195 hg debugoptDEP
1195 hg debugoptDEP
1196
1196
1197 (*) (glob)
1197 (*) (glob)
1198
1198
1199 options:
1199 options:
1200
1200
1201 (some details hidden, use --verbose to show complete help)
1201 (some details hidden, use --verbose to show complete help)
1202 #endif
1202 #endif
1203
1203
1204 Test commands that collide with topics (issue4240)
1204 Test commands that collide with topics (issue4240)
1205
1205
1206 $ hg config -hq
1206 $ hg config -hq
1207 hg config [-u] [NAME]...
1207 hg config [-u] [NAME]...
1208
1208
1209 show combined config settings from all hgrc files
1209 show combined config settings from all hgrc files
1210 $ hg showconfig -hq
1210 $ hg showconfig -hq
1211 hg config [-u] [NAME]...
1211 hg config [-u] [NAME]...
1212
1212
1213 show combined config settings from all hgrc files
1213 show combined config settings from all hgrc files
1214
1214
1215 Test a help topic
1215 Test a help topic
1216
1216
1217 $ hg help dates
1217 $ hg help dates
1218 Date Formats
1218 Date Formats
1219 """"""""""""
1219 """"""""""""
1220
1220
1221 Some commands allow the user to specify a date, e.g.:
1221 Some commands allow the user to specify a date, e.g.:
1222
1222
1223 - backout, commit, import, tag: Specify the commit date.
1223 - backout, commit, import, tag: Specify the commit date.
1224 - log, revert, update: Select revision(s) by date.
1224 - log, revert, update: Select revision(s) by date.
1225
1225
1226 Many date formats are valid. Here are some examples:
1226 Many date formats are valid. Here are some examples:
1227
1227
1228 - "Wed Dec 6 13:18:29 2006" (local timezone assumed)
1228 - "Wed Dec 6 13:18:29 2006" (local timezone assumed)
1229 - "Dec 6 13:18 -0600" (year assumed, time offset provided)
1229 - "Dec 6 13:18 -0600" (year assumed, time offset provided)
1230 - "Dec 6 13:18 UTC" (UTC and GMT are aliases for +0000)
1230 - "Dec 6 13:18 UTC" (UTC and GMT are aliases for +0000)
1231 - "Dec 6" (midnight)
1231 - "Dec 6" (midnight)
1232 - "13:18" (today assumed)
1232 - "13:18" (today assumed)
1233 - "3:39" (3:39AM assumed)
1233 - "3:39" (3:39AM assumed)
1234 - "3:39pm" (15:39)
1234 - "3:39pm" (15:39)
1235 - "2006-12-06 13:18:29" (ISO 8601 format)
1235 - "2006-12-06 13:18:29" (ISO 8601 format)
1236 - "2006-12-6 13:18"
1236 - "2006-12-6 13:18"
1237 - "2006-12-6"
1237 - "2006-12-6"
1238 - "12-6"
1238 - "12-6"
1239 - "12/6"
1239 - "12/6"
1240 - "12/6/6" (Dec 6 2006)
1240 - "12/6/6" (Dec 6 2006)
1241 - "today" (midnight)
1241 - "today" (midnight)
1242 - "yesterday" (midnight)
1242 - "yesterday" (midnight)
1243 - "now" - right now
1243 - "now" - right now
1244
1244
1245 Lastly, there is Mercurial's internal format:
1245 Lastly, there is Mercurial's internal format:
1246
1246
1247 - "1165411109 0" (Wed Dec 6 13:18:29 2006 UTC)
1247 - "1165411109 0" (Wed Dec 6 13:18:29 2006 UTC)
1248
1248
1249 This is the internal representation format for dates. The first number is
1249 This is the internal representation format for dates. The first number is
1250 the number of seconds since the epoch (1970-01-01 00:00 UTC). The second
1250 the number of seconds since the epoch (1970-01-01 00:00 UTC). The second
1251 is the offset of the local timezone, in seconds west of UTC (negative if
1251 is the offset of the local timezone, in seconds west of UTC (negative if
1252 the timezone is east of UTC).
1252 the timezone is east of UTC).
1253
1253
1254 The log command also accepts date ranges:
1254 The log command also accepts date ranges:
1255
1255
1256 - "<DATE" - at or before a given date/time
1256 - "<DATE" - at or before a given date/time
1257 - ">DATE" - on or after a given date/time
1257 - ">DATE" - on or after a given date/time
1258 - "DATE to DATE" - a date range, inclusive
1258 - "DATE to DATE" - a date range, inclusive
1259 - "-DAYS" - within a given number of days of today
1259 - "-DAYS" - within a given number of days of today
1260
1260
1261 Test repeated config section name
1261 Test repeated config section name
1262
1262
1263 $ hg help config.host
1263 $ hg help config.host
1264 "http_proxy.host"
1264 "http_proxy.host"
1265 Host name and (optional) port of the proxy server, for example
1265 Host name and (optional) port of the proxy server, for example
1266 "myproxy:8000".
1266 "myproxy:8000".
1267
1267
1268 "smtp.host"
1268 "smtp.host"
1269 Host name of mail server, e.g. "mail.example.com".
1269 Host name of mail server, e.g. "mail.example.com".
1270
1270
1271 Unrelated trailing paragraphs shouldn't be included
1271 Unrelated trailing paragraphs shouldn't be included
1272
1272
1273 $ hg help config.extramsg | grep '^$'
1273 $ hg help config.extramsg | grep '^$'
1274
1274
1275
1275
1276 Test capitalized section name
1276 Test capitalized section name
1277
1277
1278 $ hg help scripting.HGPLAIN > /dev/null
1278 $ hg help scripting.HGPLAIN > /dev/null
1279
1279
1280 Help subsection:
1280 Help subsection:
1281
1281
1282 $ hg help config.charsets |grep "Email example:" > /dev/null
1282 $ hg help config.charsets |grep "Email example:" > /dev/null
1283 [1]
1283 [1]
1284
1284
1285 Show nested definitions
1285 Show nested definitions
1286 ("profiling.type"[break]"ls"[break]"stat"[break])
1286 ("profiling.type"[break]"ls"[break]"stat"[break])
1287
1287
1288 $ hg help config.type | egrep '^$'|wc -l
1288 $ hg help config.type | egrep '^$'|wc -l
1289 \s*3 (re)
1289 \s*3 (re)
1290
1290
1291 Separate sections from subsections
1291 Separate sections from subsections
1292
1292
1293 $ hg help config.format | egrep '^ ("|-)|^\s*$' | uniq
1293 $ hg help config.format | egrep '^ ("|-)|^\s*$' | uniq
1294 "format"
1294 "format"
1295 --------
1295 --------
1296
1296
1297 "usegeneraldelta"
1297 "usegeneraldelta"
1298
1298
1299 "dotencode"
1299 "dotencode"
1300
1300
1301 "usefncache"
1301 "usefncache"
1302
1302
1303 "usestore"
1303 "usestore"
1304
1304
1305 "profiling"
1305 "profiling"
1306 -----------
1306 -----------
1307
1307
1308 "format"
1308 "format"
1309
1309
1310 "progress"
1310 "progress"
1311 ----------
1311 ----------
1312
1312
1313 "format"
1313 "format"
1314
1314
1315
1315
1316 Last item in help config.*:
1316 Last item in help config.*:
1317
1317
1318 $ hg help config.`hg help config|grep '^ "'| \
1318 $ hg help config.`hg help config|grep '^ "'| \
1319 > tail -1|sed 's![ "]*!!g'`| \
1319 > tail -1|sed 's![ "]*!!g'`| \
1320 > grep 'hg help -c config' > /dev/null
1320 > grep 'hg help -c config' > /dev/null
1321 [1]
1321 [1]
1322
1322
1323 note to use help -c for general hg help config:
1323 note to use help -c for general hg help config:
1324
1324
1325 $ hg help config |grep 'hg help -c config' > /dev/null
1325 $ hg help config |grep 'hg help -c config' > /dev/null
1326
1326
1327 Test templating help
1327 Test templating help
1328
1328
1329 $ hg help templating | egrep '(desc|diffstat|firstline|nonempty) '
1329 $ hg help templating | egrep '(desc|diffstat|firstline|nonempty) '
1330 desc String. The text of the changeset description.
1330 desc String. The text of the changeset description.
1331 diffstat String. Statistics of changes with the following format:
1331 diffstat String. Statistics of changes with the following format:
1332 firstline Any text. Returns the first line of text.
1332 firstline Any text. Returns the first line of text.
1333 nonempty Any text. Returns '(none)' if the string is empty.
1333 nonempty Any text. Returns '(none)' if the string is empty.
1334
1334
1335 Test deprecated items
1335 Test deprecated items
1336
1336
1337 $ hg help -v templating | grep currentbookmark
1337 $ hg help -v templating | grep currentbookmark
1338 currentbookmark
1338 currentbookmark
1339 $ hg help templating | (grep currentbookmark || true)
1339 $ hg help templating | (grep currentbookmark || true)
1340
1340
1341 Test help hooks
1341 Test help hooks
1342
1342
1343 $ cat > helphook1.py <<EOF
1343 $ cat > helphook1.py <<EOF
1344 > from mercurial import help
1344 > from mercurial import help
1345 >
1345 >
1346 > def rewrite(ui, topic, doc):
1346 > def rewrite(ui, topic, doc):
1347 > return doc + '\nhelphook1\n'
1347 > return doc + '\nhelphook1\n'
1348 >
1348 >
1349 > def extsetup(ui):
1349 > def extsetup(ui):
1350 > help.addtopichook('revisions', rewrite)
1350 > help.addtopichook('revisions', rewrite)
1351 > EOF
1351 > EOF
1352 $ cat > helphook2.py <<EOF
1352 $ cat > helphook2.py <<EOF
1353 > from mercurial import help
1353 > from mercurial import help
1354 >
1354 >
1355 > def rewrite(ui, topic, doc):
1355 > def rewrite(ui, topic, doc):
1356 > return doc + '\nhelphook2\n'
1356 > return doc + '\nhelphook2\n'
1357 >
1357 >
1358 > def extsetup(ui):
1358 > def extsetup(ui):
1359 > help.addtopichook('revisions', rewrite)
1359 > help.addtopichook('revisions', rewrite)
1360 > EOF
1360 > EOF
1361 $ echo '[extensions]' >> $HGRCPATH
1361 $ echo '[extensions]' >> $HGRCPATH
1362 $ echo "helphook1 = `pwd`/helphook1.py" >> $HGRCPATH
1362 $ echo "helphook1 = `pwd`/helphook1.py" >> $HGRCPATH
1363 $ echo "helphook2 = `pwd`/helphook2.py" >> $HGRCPATH
1363 $ echo "helphook2 = `pwd`/helphook2.py" >> $HGRCPATH
1364 $ hg help revsets | grep helphook
1364 $ hg help revsets | grep helphook
1365 helphook1
1365 helphook1
1366 helphook2
1366 helphook2
1367
1367
1368 help -c should only show debug --debug
1368 help -c should only show debug --debug
1369
1369
1370 $ hg help -c --debug|egrep debug|wc -l|egrep '^\s*0\s*$'
1370 $ hg help -c --debug|egrep debug|wc -l|egrep '^\s*0\s*$'
1371 [1]
1371 [1]
1372
1372
1373 help -c should only show deprecated for -v
1373 help -c should only show deprecated for -v
1374
1374
1375 $ hg help -c -v|egrep DEPRECATED|wc -l|egrep '^\s*0\s*$'
1375 $ hg help -c -v|egrep DEPRECATED|wc -l|egrep '^\s*0\s*$'
1376 [1]
1376 [1]
1377
1377
1378 Test -s / --system
1378 Test -s / --system
1379
1379
1380 $ hg help config.files -s windows |grep 'etc/mercurial' | \
1380 $ hg help config.files -s windows |grep 'etc/mercurial' | \
1381 > wc -l | sed -e 's/ //g'
1381 > wc -l | sed -e 's/ //g'
1382 0
1382 0
1383 $ hg help config.files --system unix | grep 'USER' | \
1383 $ hg help config.files --system unix | grep 'USER' | \
1384 > wc -l | sed -e 's/ //g'
1384 > wc -l | sed -e 's/ //g'
1385 0
1385 0
1386
1386
1387 Test -e / -c / -k combinations
1387 Test -e / -c / -k combinations
1388
1388
1389 $ hg help -c|egrep '^[A-Z].*:|^ debug'
1389 $ hg help -c|egrep '^[A-Z].*:|^ debug'
1390 Commands:
1390 Commands:
1391 $ hg help -e|egrep '^[A-Z].*:|^ debug'
1391 $ hg help -e|egrep '^[A-Z].*:|^ debug'
1392 Extensions:
1392 Extensions:
1393 $ hg help -k|egrep '^[A-Z].*:|^ debug'
1393 $ hg help -k|egrep '^[A-Z].*:|^ debug'
1394 Topics:
1394 Topics:
1395 Commands:
1395 Commands:
1396 Extensions:
1396 Extensions:
1397 Extension Commands:
1397 Extension Commands:
1398 $ hg help -c schemes
1398 $ hg help -c schemes
1399 abort: no such help topic: schemes
1399 abort: no such help topic: schemes
1400 (try 'hg help --keyword schemes')
1400 (try 'hg help --keyword schemes')
1401 [255]
1401 [255]
1402 $ hg help -e schemes |head -1
1402 $ hg help -e schemes |head -1
1403 schemes extension - extend schemes with shortcuts to repository swarms
1403 schemes extension - extend schemes with shortcuts to repository swarms
1404 $ hg help -c -k dates |egrep '^(Topics|Extensions|Commands):'
1404 $ hg help -c -k dates |egrep '^(Topics|Extensions|Commands):'
1405 Commands:
1405 Commands:
1406 $ hg help -e -k a |egrep '^(Topics|Extensions|Commands):'
1406 $ hg help -e -k a |egrep '^(Topics|Extensions|Commands):'
1407 Extensions:
1407 Extensions:
1408 $ hg help -e -c -k date |egrep '^(Topics|Extensions|Commands):'
1408 $ hg help -e -c -k date |egrep '^(Topics|Extensions|Commands):'
1409 Extensions:
1409 Extensions:
1410 Commands:
1410 Commands:
1411 $ hg help -c commit > /dev/null
1411 $ hg help -c commit > /dev/null
1412 $ hg help -e -c commit > /dev/null
1412 $ hg help -e -c commit > /dev/null
1413 $ hg help -e commit > /dev/null
1413 $ hg help -e commit > /dev/null
1414 abort: no such help topic: commit
1414 abort: no such help topic: commit
1415 (try 'hg help --keyword commit')
1415 (try 'hg help --keyword commit')
1416 [255]
1416 [255]
1417
1417
1418 Test keyword search help
1418 Test keyword search help
1419
1419
1420 $ cat > prefixedname.py <<EOF
1420 $ cat > prefixedname.py <<EOF
1421 > '''matched against word "clone"
1421 > '''matched against word "clone"
1422 > '''
1422 > '''
1423 > EOF
1423 > EOF
1424 $ echo '[extensions]' >> $HGRCPATH
1424 $ echo '[extensions]' >> $HGRCPATH
1425 $ echo "dot.dot.prefixedname = `pwd`/prefixedname.py" >> $HGRCPATH
1425 $ echo "dot.dot.prefixedname = `pwd`/prefixedname.py" >> $HGRCPATH
1426 $ hg help -k clone
1426 $ hg help -k clone
1427 Topics:
1427 Topics:
1428
1428
1429 config Configuration Files
1429 config Configuration Files
1430 extensions Using Additional Features
1430 extensions Using Additional Features
1431 glossary Glossary
1431 glossary Glossary
1432 phases Working with Phases
1432 phases Working with Phases
1433 subrepos Subrepositories
1433 subrepos Subrepositories
1434 urls URL Paths
1434 urls URL Paths
1435
1435
1436 Commands:
1436 Commands:
1437
1437
1438 bookmarks create a new bookmark or list existing bookmarks
1438 bookmarks create a new bookmark or list existing bookmarks
1439 clone make a copy of an existing repository
1439 clone make a copy of an existing repository
1440 paths show aliases for remote repositories
1440 paths show aliases for remote repositories
1441 update update working directory (or switch revisions)
1441 update update working directory (or switch revisions)
1442
1442
1443 Extensions:
1443 Extensions:
1444
1444
1445 clonebundles advertise pre-generated bundles to seed clones
1445 clonebundles advertise pre-generated bundles to seed clones
1446 prefixedname matched against word "clone"
1446 prefixedname matched against word "clone"
1447 relink recreates hardlinks between repository clones
1447 relink recreates hardlinks between repository clones
1448
1448
1449 Extension Commands:
1449 Extension Commands:
1450
1450
1451 qclone clone main and patch repository at same time
1451 qclone clone main and patch repository at same time
1452
1452
1453 Test unfound topic
1453 Test unfound topic
1454
1454
1455 $ hg help nonexistingtopicthatwillneverexisteverever
1455 $ hg help nonexistingtopicthatwillneverexisteverever
1456 abort: no such help topic: nonexistingtopicthatwillneverexisteverever
1456 abort: no such help topic: nonexistingtopicthatwillneverexisteverever
1457 (try 'hg help --keyword nonexistingtopicthatwillneverexisteverever')
1457 (try 'hg help --keyword nonexistingtopicthatwillneverexisteverever')
1458 [255]
1458 [255]
1459
1459
1460 Test unfound keyword
1460 Test unfound keyword
1461
1461
1462 $ hg help --keyword nonexistingwordthatwillneverexisteverever
1462 $ hg help --keyword nonexistingwordthatwillneverexisteverever
1463 abort: no matches
1463 abort: no matches
1464 (try 'hg help' for a list of topics)
1464 (try 'hg help' for a list of topics)
1465 [255]
1465 [255]
1466
1466
1467 Test omit indicating for help
1467 Test omit indicating for help
1468
1468
1469 $ cat > addverboseitems.py <<EOF
1469 $ cat > addverboseitems.py <<EOF
1470 > '''extension to test omit indicating.
1470 > '''extension to test omit indicating.
1471 >
1471 >
1472 > This paragraph is never omitted (for extension)
1472 > This paragraph is never omitted (for extension)
1473 >
1473 >
1474 > .. container:: verbose
1474 > .. container:: verbose
1475 >
1475 >
1476 > This paragraph is omitted,
1476 > This paragraph is omitted,
1477 > if :hg:\`help\` is invoked without \`\`-v\`\` (for extension)
1477 > if :hg:\`help\` is invoked without \`\`-v\`\` (for extension)
1478 >
1478 >
1479 > This paragraph is never omitted, too (for extension)
1479 > This paragraph is never omitted, too (for extension)
1480 > '''
1480 > '''
1481 >
1481 >
1482 > from mercurial import help, commands
1482 > from mercurial import help, commands
1483 > testtopic = """This paragraph is never omitted (for topic).
1483 > testtopic = """This paragraph is never omitted (for topic).
1484 >
1484 >
1485 > .. container:: verbose
1485 > .. container:: verbose
1486 >
1486 >
1487 > This paragraph is omitted,
1487 > This paragraph is omitted,
1488 > if :hg:\`help\` is invoked without \`\`-v\`\` (for topic)
1488 > if :hg:\`help\` is invoked without \`\`-v\`\` (for topic)
1489 >
1489 >
1490 > This paragraph is never omitted, too (for topic)
1490 > This paragraph is never omitted, too (for topic)
1491 > """
1491 > """
1492 > def extsetup(ui):
1492 > def extsetup(ui):
1493 > help.helptable.append((["topic-containing-verbose"],
1493 > help.helptable.append((["topic-containing-verbose"],
1494 > "This is the topic to test omit indicating.",
1494 > "This is the topic to test omit indicating.",
1495 > lambda ui: testtopic))
1495 > lambda ui: testtopic))
1496 > EOF
1496 > EOF
1497 $ echo '[extensions]' >> $HGRCPATH
1497 $ echo '[extensions]' >> $HGRCPATH
1498 $ echo "addverboseitems = `pwd`/addverboseitems.py" >> $HGRCPATH
1498 $ echo "addverboseitems = `pwd`/addverboseitems.py" >> $HGRCPATH
1499 $ hg help addverboseitems
1499 $ hg help addverboseitems
1500 addverboseitems extension - extension to test omit indicating.
1500 addverboseitems extension - extension to test omit indicating.
1501
1501
1502 This paragraph is never omitted (for extension)
1502 This paragraph is never omitted (for extension)
1503
1503
1504 This paragraph is never omitted, too (for extension)
1504 This paragraph is never omitted, too (for extension)
1505
1505
1506 (some details hidden, use --verbose to show complete help)
1506 (some details hidden, use --verbose to show complete help)
1507
1507
1508 no commands defined
1508 no commands defined
1509 $ hg help -v addverboseitems
1509 $ hg help -v addverboseitems
1510 addverboseitems extension - extension to test omit indicating.
1510 addverboseitems extension - extension to test omit indicating.
1511
1511
1512 This paragraph is never omitted (for extension)
1512 This paragraph is never omitted (for extension)
1513
1513
1514 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1514 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1515 extension)
1515 extension)
1516
1516
1517 This paragraph is never omitted, too (for extension)
1517 This paragraph is never omitted, too (for extension)
1518
1518
1519 no commands defined
1519 no commands defined
1520 $ hg help topic-containing-verbose
1520 $ hg help topic-containing-verbose
1521 This is the topic to test omit indicating.
1521 This is the topic to test omit indicating.
1522 """"""""""""""""""""""""""""""""""""""""""
1522 """"""""""""""""""""""""""""""""""""""""""
1523
1523
1524 This paragraph is never omitted (for topic).
1524 This paragraph is never omitted (for topic).
1525
1525
1526 This paragraph is never omitted, too (for topic)
1526 This paragraph is never omitted, too (for topic)
1527
1527
1528 (some details hidden, use --verbose to show complete help)
1528 (some details hidden, use --verbose to show complete help)
1529 $ hg help -v topic-containing-verbose
1529 $ hg help -v topic-containing-verbose
1530 This is the topic to test omit indicating.
1530 This is the topic to test omit indicating.
1531 """"""""""""""""""""""""""""""""""""""""""
1531 """"""""""""""""""""""""""""""""""""""""""
1532
1532
1533 This paragraph is never omitted (for topic).
1533 This paragraph is never omitted (for topic).
1534
1534
1535 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1535 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1536 topic)
1536 topic)
1537
1537
1538 This paragraph is never omitted, too (for topic)
1538 This paragraph is never omitted, too (for topic)
1539
1539
1540 Test section lookup
1540 Test section lookup
1541
1541
1542 $ hg help revset.merge
1542 $ hg help revset.merge
1543 "merge()"
1543 "merge()"
1544 Changeset is a merge changeset.
1544 Changeset is a merge changeset.
1545
1545
1546 $ hg help glossary.dag
1546 $ hg help glossary.dag
1547 DAG
1547 DAG
1548 The repository of changesets of a distributed version control system
1548 The repository of changesets of a distributed version control system
1549 (DVCS) can be described as a directed acyclic graph (DAG), consisting
1549 (DVCS) can be described as a directed acyclic graph (DAG), consisting
1550 of nodes and edges, where nodes correspond to changesets and edges
1550 of nodes and edges, where nodes correspond to changesets and edges
1551 imply a parent -> child relation. This graph can be visualized by
1551 imply a parent -> child relation. This graph can be visualized by
1552 graphical tools such as 'hg log --graph'. In Mercurial, the DAG is
1552 graphical tools such as 'hg log --graph'. In Mercurial, the DAG is
1553 limited by the requirement for children to have at most two parents.
1553 limited by the requirement for children to have at most two parents.
1554
1554
1555
1555
1556 $ hg help hgrc.paths
1556 $ hg help hgrc.paths
1557 "paths"
1557 "paths"
1558 -------
1558 -------
1559
1559
1560 Assigns symbolic names and behavior to repositories.
1560 Assigns symbolic names and behavior to repositories.
1561
1561
1562 Options are symbolic names defining the URL or directory that is the
1562 Options are symbolic names defining the URL or directory that is the
1563 location of the repository. Example:
1563 location of the repository. Example:
1564
1564
1565 [paths]
1565 [paths]
1566 my_server = https://example.com/my_repo
1566 my_server = https://example.com/my_repo
1567 local_path = /home/me/repo
1567 local_path = /home/me/repo
1568
1568
1569 These symbolic names can be used from the command line. To pull from
1569 These symbolic names can be used from the command line. To pull from
1570 "my_server": 'hg pull my_server'. To push to "local_path": 'hg push
1570 "my_server": 'hg pull my_server'. To push to "local_path": 'hg push
1571 local_path'.
1571 local_path'.
1572
1572
1573 Options containing colons (":") denote sub-options that can influence
1573 Options containing colons (":") denote sub-options that can influence
1574 behavior for that specific path. Example:
1574 behavior for that specific path. Example:
1575
1575
1576 [paths]
1576 [paths]
1577 my_server = https://example.com/my_path
1577 my_server = https://example.com/my_path
1578 my_server:pushurl = ssh://example.com/my_path
1578 my_server:pushurl = ssh://example.com/my_path
1579
1579
1580 The following sub-options can be defined:
1580 The following sub-options can be defined:
1581
1581
1582 "pushurl"
1582 "pushurl"
1583 The URL to use for push operations. If not defined, the location
1583 The URL to use for push operations. If not defined, the location
1584 defined by the path's main entry is used.
1584 defined by the path's main entry is used.
1585
1585
1586 "pushrev"
1586 "pushrev"
1587 A revset defining which revisions to push by default.
1587 A revset defining which revisions to push by default.
1588
1588
1589 When 'hg push' is executed without a "-r" argument, the revset defined
1589 When 'hg push' is executed without a "-r" argument, the revset defined
1590 by this sub-option is evaluated to determine what to push.
1590 by this sub-option is evaluated to determine what to push.
1591
1591
1592 For example, a value of "." will push the working directory's revision
1592 For example, a value of "." will push the working directory's revision
1593 by default.
1593 by default.
1594
1594
1595 Revsets specifying bookmarks will not result in the bookmark being
1595 Revsets specifying bookmarks will not result in the bookmark being
1596 pushed.
1596 pushed.
1597
1597
1598 The following special named paths exist:
1598 The following special named paths exist:
1599
1599
1600 "default"
1600 "default"
1601 The URL or directory to use when no source or remote is specified.
1601 The URL or directory to use when no source or remote is specified.
1602
1602
1603 'hg clone' will automatically define this path to the location the
1603 'hg clone' will automatically define this path to the location the
1604 repository was cloned from.
1604 repository was cloned from.
1605
1605
1606 "default-push"
1606 "default-push"
1607 (deprecated) The URL or directory for the default 'hg push' location.
1607 (deprecated) The URL or directory for the default 'hg push' location.
1608 "default:pushurl" should be used instead.
1608 "default:pushurl" should be used instead.
1609
1609
1610 $ hg help glossary.mcguffin
1610 $ hg help glossary.mcguffin
1611 abort: help section not found: glossary.mcguffin
1611 abort: help section not found: glossary.mcguffin
1612 [255]
1612 [255]
1613
1613
1614 $ hg help glossary.mc.guffin
1614 $ hg help glossary.mc.guffin
1615 abort: help section not found: glossary.mc.guffin
1615 abort: help section not found: glossary.mc.guffin
1616 [255]
1616 [255]
1617
1617
1618 $ hg help template.files
1618 $ hg help template.files
1619 files List of strings. All files modified, added, or removed by
1619 files List of strings. All files modified, added, or removed by
1620 this changeset.
1620 this changeset.
1621 files(pattern)
1621 files(pattern)
1622 All files of the current changeset matching the pattern. See
1622 All files of the current changeset matching the pattern. See
1623 'hg help patterns'.
1623 'hg help patterns'.
1624
1624
1625 Test section lookup by translated message
1625 Test section lookup by translated message
1626
1626
1627 str.lower() instead of encoding.lower(str) on translated message might
1627 str.lower() instead of encoding.lower(str) on translated message might
1628 make message meaningless, because some encoding uses 0x41(A) - 0x5a(Z)
1628 make message meaningless, because some encoding uses 0x41(A) - 0x5a(Z)
1629 as the second or later byte of multi-byte character.
1629 as the second or later byte of multi-byte character.
1630
1630
1631 For example, "\x8bL\x98^" (translation of "record" in ja_JP.cp932)
1631 For example, "\x8bL\x98^" (translation of "record" in ja_JP.cp932)
1632 contains 0x4c (L). str.lower() replaces 0x4c(L) by 0x6c(l) and this
1632 contains 0x4c (L). str.lower() replaces 0x4c(L) by 0x6c(l) and this
1633 replacement makes message meaningless.
1633 replacement makes message meaningless.
1634
1634
1635 This tests that section lookup by translated string isn't broken by
1635 This tests that section lookup by translated string isn't broken by
1636 such str.lower().
1636 such str.lower().
1637
1637
1638 $ python <<EOF
1638 $ python <<EOF
1639 > def escape(s):
1639 > def escape(s):
1640 > return ''.join('\u%x' % ord(uc) for uc in s.decode('cp932'))
1640 > return ''.join('\u%x' % ord(uc) for uc in s.decode('cp932'))
1641 > # translation of "record" in ja_JP.cp932
1641 > # translation of "record" in ja_JP.cp932
1642 > upper = "\x8bL\x98^"
1642 > upper = "\x8bL\x98^"
1643 > # str.lower()-ed section name should be treated as different one
1643 > # str.lower()-ed section name should be treated as different one
1644 > lower = "\x8bl\x98^"
1644 > lower = "\x8bl\x98^"
1645 > with open('ambiguous.py', 'w') as fp:
1645 > with open('ambiguous.py', 'w') as fp:
1646 > fp.write("""# ambiguous section names in ja_JP.cp932
1646 > fp.write("""# ambiguous section names in ja_JP.cp932
1647 > u'''summary of extension
1647 > u'''summary of extension
1648 >
1648 >
1649 > %s
1649 > %s
1650 > ----
1650 > ----
1651 >
1651 >
1652 > Upper name should show only this message
1652 > Upper name should show only this message
1653 >
1653 >
1654 > %s
1654 > %s
1655 > ----
1655 > ----
1656 >
1656 >
1657 > Lower name should show only this message
1657 > Lower name should show only this message
1658 >
1658 >
1659 > subsequent section
1659 > subsequent section
1660 > ------------------
1660 > ------------------
1661 >
1661 >
1662 > This should be hidden at 'hg help ambiguous' with section name.
1662 > This should be hidden at 'hg help ambiguous' with section name.
1663 > '''
1663 > '''
1664 > """ % (escape(upper), escape(lower)))
1664 > """ % (escape(upper), escape(lower)))
1665 > EOF
1665 > EOF
1666
1666
1667 $ cat >> $HGRCPATH <<EOF
1667 $ cat >> $HGRCPATH <<EOF
1668 > [extensions]
1668 > [extensions]
1669 > ambiguous = ./ambiguous.py
1669 > ambiguous = ./ambiguous.py
1670 > EOF
1670 > EOF
1671
1671
1672 $ python <<EOF | sh
1672 $ python <<EOF | sh
1673 > upper = "\x8bL\x98^"
1673 > upper = "\x8bL\x98^"
1674 > print "hg --encoding cp932 help -e ambiguous.%s" % upper
1674 > print "hg --encoding cp932 help -e ambiguous.%s" % upper
1675 > EOF
1675 > EOF
1676 \x8bL\x98^ (esc)
1676 \x8bL\x98^ (esc)
1677 ----
1677 ----
1678
1678
1679 Upper name should show only this message
1679 Upper name should show only this message
1680
1680
1681
1681
1682 $ python <<EOF | sh
1682 $ python <<EOF | sh
1683 > lower = "\x8bl\x98^"
1683 > lower = "\x8bl\x98^"
1684 > print "hg --encoding cp932 help -e ambiguous.%s" % lower
1684 > print "hg --encoding cp932 help -e ambiguous.%s" % lower
1685 > EOF
1685 > EOF
1686 \x8bl\x98^ (esc)
1686 \x8bl\x98^ (esc)
1687 ----
1687 ----
1688
1688
1689 Lower name should show only this message
1689 Lower name should show only this message
1690
1690
1691
1691
1692 $ cat >> $HGRCPATH <<EOF
1692 $ cat >> $HGRCPATH <<EOF
1693 > [extensions]
1693 > [extensions]
1694 > ambiguous = !
1694 > ambiguous = !
1695 > EOF
1695 > EOF
1696
1696
1697 Show help content of disabled extensions
1697 Show help content of disabled extensions
1698
1698
1699 $ cat >> $HGRCPATH <<EOF
1699 $ cat >> $HGRCPATH <<EOF
1700 > [extensions]
1700 > [extensions]
1701 > ambiguous = !./ambiguous.py
1701 > ambiguous = !./ambiguous.py
1702 > EOF
1702 > EOF
1703 $ hg help -e ambiguous
1703 $ hg help -e ambiguous
1704 ambiguous extension - (no help text available)
1704 ambiguous extension - (no help text available)
1705
1705
1706 (use 'hg help extensions' for information on enabling extensions)
1706 (use 'hg help extensions' for information on enabling extensions)
1707
1707
1708 Test dynamic list of merge tools only shows up once
1708 Test dynamic list of merge tools only shows up once
1709 $ hg help merge-tools
1709 $ hg help merge-tools
1710 Merge Tools
1710 Merge Tools
1711 """""""""""
1711 """""""""""
1712
1712
1713 To merge files Mercurial uses merge tools.
1713 To merge files Mercurial uses merge tools.
1714
1714
1715 A merge tool combines two different versions of a file into a merged file.
1715 A merge tool combines two different versions of a file into a merged file.
1716 Merge tools are given the two files and the greatest common ancestor of
1716 Merge tools are given the two files and the greatest common ancestor of
1717 the two file versions, so they can determine the changes made on both
1717 the two file versions, so they can determine the changes made on both
1718 branches.
1718 branches.
1719
1719
1720 Merge tools are used both for 'hg resolve', 'hg merge', 'hg update', 'hg
1720 Merge tools are used both for 'hg resolve', 'hg merge', 'hg update', 'hg
1721 backout' and in several extensions.
1721 backout' and in several extensions.
1722
1722
1723 Usually, the merge tool tries to automatically reconcile the files by
1723 Usually, the merge tool tries to automatically reconcile the files by
1724 combining all non-overlapping changes that occurred separately in the two
1724 combining all non-overlapping changes that occurred separately in the two
1725 different evolutions of the same initial base file. Furthermore, some
1725 different evolutions of the same initial base file. Furthermore, some
1726 interactive merge programs make it easier to manually resolve conflicting
1726 interactive merge programs make it easier to manually resolve conflicting
1727 merges, either in a graphical way, or by inserting some conflict markers.
1727 merges, either in a graphical way, or by inserting some conflict markers.
1728 Mercurial does not include any interactive merge programs but relies on
1728 Mercurial does not include any interactive merge programs but relies on
1729 external tools for that.
1729 external tools for that.
1730
1730
1731 Available merge tools
1731 Available merge tools
1732 =====================
1732 =====================
1733
1733
1734 External merge tools and their properties are configured in the merge-
1734 External merge tools and their properties are configured in the merge-
1735 tools configuration section - see hgrc(5) - but they can often just be
1735 tools configuration section - see hgrc(5) - but they can often just be
1736 named by their executable.
1736 named by their executable.
1737
1737
1738 A merge tool is generally usable if its executable can be found on the
1738 A merge tool is generally usable if its executable can be found on the
1739 system and if it can handle the merge. The executable is found if it is an
1739 system and if it can handle the merge. The executable is found if it is an
1740 absolute or relative executable path or the name of an application in the
1740 absolute or relative executable path or the name of an application in the
1741 executable search path. The tool is assumed to be able to handle the merge
1741 executable search path. The tool is assumed to be able to handle the merge
1742 if it can handle symlinks if the file is a symlink, if it can handle
1742 if it can handle symlinks if the file is a symlink, if it can handle
1743 binary files if the file is binary, and if a GUI is available if the tool
1743 binary files if the file is binary, and if a GUI is available if the tool
1744 requires a GUI.
1744 requires a GUI.
1745
1745
1746 There are some internal merge tools which can be used. The internal merge
1746 There are some internal merge tools which can be used. The internal merge
1747 tools are:
1747 tools are:
1748
1748
1749 ":dump"
1749 ":dump"
1750 Creates three versions of the files to merge, containing the contents of
1750 Creates three versions of the files to merge, containing the contents of
1751 local, other and base. These files can then be used to perform a merge
1751 local, other and base. These files can then be used to perform a merge
1752 manually. If the file to be merged is named "a.txt", these files will
1752 manually. If the file to be merged is named "a.txt", these files will
1753 accordingly be named "a.txt.local", "a.txt.other" and "a.txt.base" and
1753 accordingly be named "a.txt.local", "a.txt.other" and "a.txt.base" and
1754 they will be placed in the same directory as "a.txt".
1754 they will be placed in the same directory as "a.txt".
1755
1755
1756 ":fail"
1756 ":fail"
1757 Rather than attempting to merge files that were modified on both
1757 Rather than attempting to merge files that were modified on both
1758 branches, it marks them as unresolved. The resolve command must be used
1758 branches, it marks them as unresolved. The resolve command must be used
1759 to resolve these conflicts.
1759 to resolve these conflicts.
1760
1760
1761 ":local"
1761 ":local"
1762 Uses the local 'p1()' version of files as the merged version.
1762 Uses the local 'p1()' version of files as the merged version.
1763
1763
1764 ":merge"
1764 ":merge"
1765 Uses the internal non-interactive simple merge algorithm for merging
1765 Uses the internal non-interactive simple merge algorithm for merging
1766 files. It will fail if there are any conflicts and leave markers in the
1766 files. It will fail if there are any conflicts and leave markers in the
1767 partially merged file. Markers will have two sections, one for each side
1767 partially merged file. Markers will have two sections, one for each side
1768 of merge.
1768 of merge.
1769
1769
1770 ":merge-local"
1770 ":merge-local"
1771 Like :merge, but resolve all conflicts non-interactively in favor of the
1771 Like :merge, but resolve all conflicts non-interactively in favor of the
1772 local 'p1()' changes.
1772 local 'p1()' changes.
1773
1773
1774 ":merge-other"
1774 ":merge-other"
1775 Like :merge, but resolve all conflicts non-interactively in favor of the
1775 Like :merge, but resolve all conflicts non-interactively in favor of the
1776 other 'p2()' changes.
1776 other 'p2()' changes.
1777
1777
1778 ":merge3"
1778 ":merge3"
1779 Uses the internal non-interactive simple merge algorithm for merging
1779 Uses the internal non-interactive simple merge algorithm for merging
1780 files. It will fail if there are any conflicts and leave markers in the
1780 files. It will fail if there are any conflicts and leave markers in the
1781 partially merged file. Marker will have three sections, one from each
1781 partially merged file. Marker will have three sections, one from each
1782 side of the merge and one for the base content.
1782 side of the merge and one for the base content.
1783
1783
1784 ":other"
1784 ":other"
1785 Uses the other 'p2()' version of files as the merged version.
1785 Uses the other 'p2()' version of files as the merged version.
1786
1786
1787 ":prompt"
1787 ":prompt"
1788 Asks the user which of the local 'p1()' or the other 'p2()' version to
1788 Asks the user which of the local 'p1()' or the other 'p2()' version to
1789 keep as the merged version.
1789 keep as the merged version.
1790
1790
1791 ":tagmerge"
1791 ":tagmerge"
1792 Uses the internal tag merge algorithm (experimental).
1792 Uses the internal tag merge algorithm (experimental).
1793
1793
1794 ":union"
1794 ":union"
1795 Uses the internal non-interactive simple merge algorithm for merging
1795 Uses the internal non-interactive simple merge algorithm for merging
1796 files. It will use both left and right sides for conflict regions. No
1796 files. It will use both left and right sides for conflict regions. No
1797 markers are inserted.
1797 markers are inserted.
1798
1798
1799 Internal tools are always available and do not require a GUI but will by
1799 Internal tools are always available and do not require a GUI but will by
1800 default not handle symlinks or binary files.
1800 default not handle symlinks or binary files.
1801
1801
1802 Choosing a merge tool
1802 Choosing a merge tool
1803 =====================
1803 =====================
1804
1804
1805 Mercurial uses these rules when deciding which merge tool to use:
1805 Mercurial uses these rules when deciding which merge tool to use:
1806
1806
1807 1. If a tool has been specified with the --tool option to merge or
1807 1. If a tool has been specified with the --tool option to merge or
1808 resolve, it is used. If it is the name of a tool in the merge-tools
1808 resolve, it is used. If it is the name of a tool in the merge-tools
1809 configuration, its configuration is used. Otherwise the specified tool
1809 configuration, its configuration is used. Otherwise the specified tool
1810 must be executable by the shell.
1810 must be executable by the shell.
1811 2. If the "HGMERGE" environment variable is present, its value is used and
1811 2. If the "HGMERGE" environment variable is present, its value is used and
1812 must be executable by the shell.
1812 must be executable by the shell.
1813 3. If the filename of the file to be merged matches any of the patterns in
1813 3. If the filename of the file to be merged matches any of the patterns in
1814 the merge-patterns configuration section, the first usable merge tool
1814 the merge-patterns configuration section, the first usable merge tool
1815 corresponding to a matching pattern is used. Here, binary capabilities
1815 corresponding to a matching pattern is used. Here, binary capabilities
1816 of the merge tool are not considered.
1816 of the merge tool are not considered.
1817 4. If ui.merge is set it will be considered next. If the value is not the
1817 4. If ui.merge is set it will be considered next. If the value is not the
1818 name of a configured tool, the specified value is used and must be
1818 name of a configured tool, the specified value is used and must be
1819 executable by the shell. Otherwise the named tool is used if it is
1819 executable by the shell. Otherwise the named tool is used if it is
1820 usable.
1820 usable.
1821 5. If any usable merge tools are present in the merge-tools configuration
1821 5. If any usable merge tools are present in the merge-tools configuration
1822 section, the one with the highest priority is used.
1822 section, the one with the highest priority is used.
1823 6. If a program named "hgmerge" can be found on the system, it is used -
1823 6. If a program named "hgmerge" can be found on the system, it is used -
1824 but it will by default not be used for symlinks and binary files.
1824 but it will by default not be used for symlinks and binary files.
1825 7. If the file to be merged is not binary and is not a symlink, then
1825 7. If the file to be merged is not binary and is not a symlink, then
1826 internal ":merge" is used.
1826 internal ":merge" is used.
1827 8. The merge of the file fails and must be resolved before commit.
1827 8. The merge of the file fails and must be resolved before commit.
1828
1828
1829 Note:
1829 Note:
1830 After selecting a merge program, Mercurial will by default attempt to
1830 After selecting a merge program, Mercurial will by default attempt to
1831 merge the files using a simple merge algorithm first. Only if it
1831 merge the files using a simple merge algorithm first. Only if it
1832 doesn't succeed because of conflicting changes Mercurial will actually
1832 doesn't succeed because of conflicting changes Mercurial will actually
1833 execute the merge program. Whether to use the simple merge algorithm
1833 execute the merge program. Whether to use the simple merge algorithm
1834 first can be controlled by the premerge setting of the merge tool.
1834 first can be controlled by the premerge setting of the merge tool.
1835 Premerge is enabled by default unless the file is binary or a symlink.
1835 Premerge is enabled by default unless the file is binary or a symlink.
1836
1836
1837 See the merge-tools and ui sections of hgrc(5) for details on the
1837 See the merge-tools and ui sections of hgrc(5) for details on the
1838 configuration of merge tools.
1838 configuration of merge tools.
1839
1839
1840 Test usage of section marks in help documents
1840 Test usage of section marks in help documents
1841
1841
1842 $ cd "$TESTDIR"/../doc
1842 $ cd "$TESTDIR"/../doc
1843 $ python check-seclevel.py
1843 $ python check-seclevel.py
1844 $ cd $TESTTMP
1844 $ cd $TESTTMP
1845
1845
1846 #if serve
1846 #if serve
1847
1847
1848 Test the help pages in hgweb.
1848 Test the help pages in hgweb.
1849
1849
1850 Dish up an empty repo; serve it cold.
1850 Dish up an empty repo; serve it cold.
1851
1851
1852 $ hg init "$TESTTMP/test"
1852 $ hg init "$TESTTMP/test"
1853 $ hg serve -R "$TESTTMP/test" -n test -p $HGPORT -d --pid-file=hg.pid
1853 $ hg serve -R "$TESTTMP/test" -n test -p $HGPORT -d --pid-file=hg.pid
1854 $ cat hg.pid >> $DAEMON_PIDS
1854 $ cat hg.pid >> $DAEMON_PIDS
1855
1855
1856 $ get-with-headers.py $LOCALIP:$HGPORT "help"
1856 $ get-with-headers.py $LOCALIP:$HGPORT "help"
1857 200 Script output follows
1857 200 Script output follows
1858
1858
1859 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
1859 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
1860 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
1860 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
1861 <head>
1861 <head>
1862 <link rel="icon" href="/static/hgicon.png" type="image/png" />
1862 <link rel="icon" href="/static/hgicon.png" type="image/png" />
1863 <meta name="robots" content="index, nofollow" />
1863 <meta name="robots" content="index, nofollow" />
1864 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
1864 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
1865 <script type="text/javascript" src="/static/mercurial.js"></script>
1865 <script type="text/javascript" src="/static/mercurial.js"></script>
1866
1866
1867 <title>Help: Index</title>
1867 <title>Help: Index</title>
1868 </head>
1868 </head>
1869 <body>
1869 <body>
1870
1870
1871 <div class="container">
1871 <div class="container">
1872 <div class="menu">
1872 <div class="menu">
1873 <div class="logo">
1873 <div class="logo">
1874 <a href="https://mercurial-scm.org/">
1874 <a href="https://mercurial-scm.org/">
1875 <img src="/static/hglogo.png" alt="mercurial" /></a>
1875 <img src="/static/hglogo.png" alt="mercurial" /></a>
1876 </div>
1876 </div>
1877 <ul>
1877 <ul>
1878 <li><a href="/shortlog">log</a></li>
1878 <li><a href="/shortlog">log</a></li>
1879 <li><a href="/graph">graph</a></li>
1879 <li><a href="/graph">graph</a></li>
1880 <li><a href="/tags">tags</a></li>
1880 <li><a href="/tags">tags</a></li>
1881 <li><a href="/bookmarks">bookmarks</a></li>
1881 <li><a href="/bookmarks">bookmarks</a></li>
1882 <li><a href="/branches">branches</a></li>
1882 <li><a href="/branches">branches</a></li>
1883 </ul>
1883 </ul>
1884 <ul>
1884 <ul>
1885 <li class="active">help</li>
1885 <li class="active">help</li>
1886 </ul>
1886 </ul>
1887 </div>
1887 </div>
1888
1888
1889 <div class="main">
1889 <div class="main">
1890 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
1890 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
1891 <form class="search" action="/log">
1891 <form class="search" action="/log">
1892
1892
1893 <p><input name="rev" id="search1" type="text" size="30" /></p>
1893 <p><input name="rev" id="search1" type="text" size="30" /></p>
1894 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
1894 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
1895 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
1895 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
1896 </form>
1896 </form>
1897 <table class="bigtable">
1897 <table class="bigtable">
1898 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
1898 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
1899
1899
1900 <tr><td>
1900 <tr><td>
1901 <a href="/help/color">
1901 <a href="/help/color">
1902 color
1902 color
1903 </a>
1903 </a>
1904 </td><td>
1904 </td><td>
1905 Colorizing Outputs
1905 Colorizing Outputs
1906 </td></tr>
1906 </td></tr>
1907 <tr><td>
1907 <tr><td>
1908 <a href="/help/config">
1908 <a href="/help/config">
1909 config
1909 config
1910 </a>
1910 </a>
1911 </td><td>
1911 </td><td>
1912 Configuration Files
1912 Configuration Files
1913 </td></tr>
1913 </td></tr>
1914 <tr><td>
1914 <tr><td>
1915 <a href="/help/dates">
1915 <a href="/help/dates">
1916 dates
1916 dates
1917 </a>
1917 </a>
1918 </td><td>
1918 </td><td>
1919 Date Formats
1919 Date Formats
1920 </td></tr>
1920 </td></tr>
1921 <tr><td>
1921 <tr><td>
1922 <a href="/help/diffs">
1922 <a href="/help/diffs">
1923 diffs
1923 diffs
1924 </a>
1924 </a>
1925 </td><td>
1925 </td><td>
1926 Diff Formats
1926 Diff Formats
1927 </td></tr>
1927 </td></tr>
1928 <tr><td>
1928 <tr><td>
1929 <a href="/help/environment">
1929 <a href="/help/environment">
1930 environment
1930 environment
1931 </a>
1931 </a>
1932 </td><td>
1932 </td><td>
1933 Environment Variables
1933 Environment Variables
1934 </td></tr>
1934 </td></tr>
1935 <tr><td>
1935 <tr><td>
1936 <a href="/help/extensions">
1936 <a href="/help/extensions">
1937 extensions
1937 extensions
1938 </a>
1938 </a>
1939 </td><td>
1939 </td><td>
1940 Using Additional Features
1940 Using Additional Features
1941 </td></tr>
1941 </td></tr>
1942 <tr><td>
1942 <tr><td>
1943 <a href="/help/filesets">
1943 <a href="/help/filesets">
1944 filesets
1944 filesets
1945 </a>
1945 </a>
1946 </td><td>
1946 </td><td>
1947 Specifying File Sets
1947 Specifying File Sets
1948 </td></tr>
1948 </td></tr>
1949 <tr><td>
1949 <tr><td>
1950 <a href="/help/glossary">
1950 <a href="/help/glossary">
1951 glossary
1951 glossary
1952 </a>
1952 </a>
1953 </td><td>
1953 </td><td>
1954 Glossary
1954 Glossary
1955 </td></tr>
1955 </td></tr>
1956 <tr><td>
1956 <tr><td>
1957 <a href="/help/hgignore">
1957 <a href="/help/hgignore">
1958 hgignore
1958 hgignore
1959 </a>
1959 </a>
1960 </td><td>
1960 </td><td>
1961 Syntax for Mercurial Ignore Files
1961 Syntax for Mercurial Ignore Files
1962 </td></tr>
1962 </td></tr>
1963 <tr><td>
1963 <tr><td>
1964 <a href="/help/hgweb">
1964 <a href="/help/hgweb">
1965 hgweb
1965 hgweb
1966 </a>
1966 </a>
1967 </td><td>
1967 </td><td>
1968 Configuring hgweb
1968 Configuring hgweb
1969 </td></tr>
1969 </td></tr>
1970 <tr><td>
1970 <tr><td>
1971 <a href="/help/internals">
1971 <a href="/help/internals">
1972 internals
1972 internals
1973 </a>
1973 </a>
1974 </td><td>
1974 </td><td>
1975 Technical implementation topics
1975 Technical implementation topics
1976 </td></tr>
1976 </td></tr>
1977 <tr><td>
1977 <tr><td>
1978 <a href="/help/merge-tools">
1978 <a href="/help/merge-tools">
1979 merge-tools
1979 merge-tools
1980 </a>
1980 </a>
1981 </td><td>
1981 </td><td>
1982 Merge Tools
1982 Merge Tools
1983 </td></tr>
1983 </td></tr>
1984 <tr><td>
1984 <tr><td>
1985 <a href="/help/pager">
1985 <a href="/help/pager">
1986 pager
1986 pager
1987 </a>
1987 </a>
1988 </td><td>
1988 </td><td>
1989 Pager Support
1989 Pager Support
1990 </td></tr>
1990 </td></tr>
1991 <tr><td>
1991 <tr><td>
1992 <a href="/help/patterns">
1992 <a href="/help/patterns">
1993 patterns
1993 patterns
1994 </a>
1994 </a>
1995 </td><td>
1995 </td><td>
1996 File Name Patterns
1996 File Name Patterns
1997 </td></tr>
1997 </td></tr>
1998 <tr><td>
1998 <tr><td>
1999 <a href="/help/phases">
1999 <a href="/help/phases">
2000 phases
2000 phases
2001 </a>
2001 </a>
2002 </td><td>
2002 </td><td>
2003 Working with Phases
2003 Working with Phases
2004 </td></tr>
2004 </td></tr>
2005 <tr><td>
2005 <tr><td>
2006 <a href="/help/revisions">
2006 <a href="/help/revisions">
2007 revisions
2007 revisions
2008 </a>
2008 </a>
2009 </td><td>
2009 </td><td>
2010 Specifying Revisions
2010 Specifying Revisions
2011 </td></tr>
2011 </td></tr>
2012 <tr><td>
2012 <tr><td>
2013 <a href="/help/scripting">
2013 <a href="/help/scripting">
2014 scripting
2014 scripting
2015 </a>
2015 </a>
2016 </td><td>
2016 </td><td>
2017 Using Mercurial from scripts and automation
2017 Using Mercurial from scripts and automation
2018 </td></tr>
2018 </td></tr>
2019 <tr><td>
2019 <tr><td>
2020 <a href="/help/subrepos">
2020 <a href="/help/subrepos">
2021 subrepos
2021 subrepos
2022 </a>
2022 </a>
2023 </td><td>
2023 </td><td>
2024 Subrepositories
2024 Subrepositories
2025 </td></tr>
2025 </td></tr>
2026 <tr><td>
2026 <tr><td>
2027 <a href="/help/templating">
2027 <a href="/help/templating">
2028 templating
2028 templating
2029 </a>
2029 </a>
2030 </td><td>
2030 </td><td>
2031 Template Usage
2031 Template Usage
2032 </td></tr>
2032 </td></tr>
2033 <tr><td>
2033 <tr><td>
2034 <a href="/help/urls">
2034 <a href="/help/urls">
2035 urls
2035 urls
2036 </a>
2036 </a>
2037 </td><td>
2037 </td><td>
2038 URL Paths
2038 URL Paths
2039 </td></tr>
2039 </td></tr>
2040 <tr><td>
2040 <tr><td>
2041 <a href="/help/topic-containing-verbose">
2041 <a href="/help/topic-containing-verbose">
2042 topic-containing-verbose
2042 topic-containing-verbose
2043 </a>
2043 </a>
2044 </td><td>
2044 </td><td>
2045 This is the topic to test omit indicating.
2045 This is the topic to test omit indicating.
2046 </td></tr>
2046 </td></tr>
2047
2047
2048
2048
2049 <tr><td colspan="2"><h2><a name="main" href="#main">Main Commands</a></h2></td></tr>
2049 <tr><td colspan="2"><h2><a name="main" href="#main">Main Commands</a></h2></td></tr>
2050
2050
2051 <tr><td>
2051 <tr><td>
2052 <a href="/help/add">
2052 <a href="/help/add">
2053 add
2053 add
2054 </a>
2054 </a>
2055 </td><td>
2055 </td><td>
2056 add the specified files on the next commit
2056 add the specified files on the next commit
2057 </td></tr>
2057 </td></tr>
2058 <tr><td>
2058 <tr><td>
2059 <a href="/help/annotate">
2059 <a href="/help/annotate">
2060 annotate
2060 annotate
2061 </a>
2061 </a>
2062 </td><td>
2062 </td><td>
2063 show changeset information by line for each file
2063 show changeset information by line for each file
2064 </td></tr>
2064 </td></tr>
2065 <tr><td>
2065 <tr><td>
2066 <a href="/help/clone">
2066 <a href="/help/clone">
2067 clone
2067 clone
2068 </a>
2068 </a>
2069 </td><td>
2069 </td><td>
2070 make a copy of an existing repository
2070 make a copy of an existing repository
2071 </td></tr>
2071 </td></tr>
2072 <tr><td>
2072 <tr><td>
2073 <a href="/help/commit">
2073 <a href="/help/commit">
2074 commit
2074 commit
2075 </a>
2075 </a>
2076 </td><td>
2076 </td><td>
2077 commit the specified files or all outstanding changes
2077 commit the specified files or all outstanding changes
2078 </td></tr>
2078 </td></tr>
2079 <tr><td>
2079 <tr><td>
2080 <a href="/help/diff">
2080 <a href="/help/diff">
2081 diff
2081 diff
2082 </a>
2082 </a>
2083 </td><td>
2083 </td><td>
2084 diff repository (or selected files)
2084 diff repository (or selected files)
2085 </td></tr>
2085 </td></tr>
2086 <tr><td>
2086 <tr><td>
2087 <a href="/help/export">
2087 <a href="/help/export">
2088 export
2088 export
2089 </a>
2089 </a>
2090 </td><td>
2090 </td><td>
2091 dump the header and diffs for one or more changesets
2091 dump the header and diffs for one or more changesets
2092 </td></tr>
2092 </td></tr>
2093 <tr><td>
2093 <tr><td>
2094 <a href="/help/forget">
2094 <a href="/help/forget">
2095 forget
2095 forget
2096 </a>
2096 </a>
2097 </td><td>
2097 </td><td>
2098 forget the specified files on the next commit
2098 forget the specified files on the next commit
2099 </td></tr>
2099 </td></tr>
2100 <tr><td>
2100 <tr><td>
2101 <a href="/help/init">
2101 <a href="/help/init">
2102 init
2102 init
2103 </a>
2103 </a>
2104 </td><td>
2104 </td><td>
2105 create a new repository in the given directory
2105 create a new repository in the given directory
2106 </td></tr>
2106 </td></tr>
2107 <tr><td>
2107 <tr><td>
2108 <a href="/help/log">
2108 <a href="/help/log">
2109 log
2109 log
2110 </a>
2110 </a>
2111 </td><td>
2111 </td><td>
2112 show revision history of entire repository or files
2112 show revision history of entire repository or files
2113 </td></tr>
2113 </td></tr>
2114 <tr><td>
2114 <tr><td>
2115 <a href="/help/merge">
2115 <a href="/help/merge">
2116 merge
2116 merge
2117 </a>
2117 </a>
2118 </td><td>
2118 </td><td>
2119 merge another revision into working directory
2119 merge another revision into working directory
2120 </td></tr>
2120 </td></tr>
2121 <tr><td>
2121 <tr><td>
2122 <a href="/help/pull">
2122 <a href="/help/pull">
2123 pull
2123 pull
2124 </a>
2124 </a>
2125 </td><td>
2125 </td><td>
2126 pull changes from the specified source
2126 pull changes from the specified source
2127 </td></tr>
2127 </td></tr>
2128 <tr><td>
2128 <tr><td>
2129 <a href="/help/push">
2129 <a href="/help/push">
2130 push
2130 push
2131 </a>
2131 </a>
2132 </td><td>
2132 </td><td>
2133 push changes to the specified destination
2133 push changes to the specified destination
2134 </td></tr>
2134 </td></tr>
2135 <tr><td>
2135 <tr><td>
2136 <a href="/help/remove">
2136 <a href="/help/remove">
2137 remove
2137 remove
2138 </a>
2138 </a>
2139 </td><td>
2139 </td><td>
2140 remove the specified files on the next commit
2140 remove the specified files on the next commit
2141 </td></tr>
2141 </td></tr>
2142 <tr><td>
2142 <tr><td>
2143 <a href="/help/serve">
2143 <a href="/help/serve">
2144 serve
2144 serve
2145 </a>
2145 </a>
2146 </td><td>
2146 </td><td>
2147 start stand-alone webserver
2147 start stand-alone webserver
2148 </td></tr>
2148 </td></tr>
2149 <tr><td>
2149 <tr><td>
2150 <a href="/help/status">
2150 <a href="/help/status">
2151 status
2151 status
2152 </a>
2152 </a>
2153 </td><td>
2153 </td><td>
2154 show changed files in the working directory
2154 show changed files in the working directory
2155 </td></tr>
2155 </td></tr>
2156 <tr><td>
2156 <tr><td>
2157 <a href="/help/summary">
2157 <a href="/help/summary">
2158 summary
2158 summary
2159 </a>
2159 </a>
2160 </td><td>
2160 </td><td>
2161 summarize working directory state
2161 summarize working directory state
2162 </td></tr>
2162 </td></tr>
2163 <tr><td>
2163 <tr><td>
2164 <a href="/help/update">
2164 <a href="/help/update">
2165 update
2165 update
2166 </a>
2166 </a>
2167 </td><td>
2167 </td><td>
2168 update working directory (or switch revisions)
2168 update working directory (or switch revisions)
2169 </td></tr>
2169 </td></tr>
2170
2170
2171
2171
2172
2172
2173 <tr><td colspan="2"><h2><a name="other" href="#other">Other Commands</a></h2></td></tr>
2173 <tr><td colspan="2"><h2><a name="other" href="#other">Other Commands</a></h2></td></tr>
2174
2174
2175 <tr><td>
2175 <tr><td>
2176 <a href="/help/addremove">
2176 <a href="/help/addremove">
2177 addremove
2177 addremove
2178 </a>
2178 </a>
2179 </td><td>
2179 </td><td>
2180 add all new files, delete all missing files
2180 add all new files, delete all missing files
2181 </td></tr>
2181 </td></tr>
2182 <tr><td>
2182 <tr><td>
2183 <a href="/help/archive">
2183 <a href="/help/archive">
2184 archive
2184 archive
2185 </a>
2185 </a>
2186 </td><td>
2186 </td><td>
2187 create an unversioned archive of a repository revision
2187 create an unversioned archive of a repository revision
2188 </td></tr>
2188 </td></tr>
2189 <tr><td>
2189 <tr><td>
2190 <a href="/help/backout">
2190 <a href="/help/backout">
2191 backout
2191 backout
2192 </a>
2192 </a>
2193 </td><td>
2193 </td><td>
2194 reverse effect of earlier changeset
2194 reverse effect of earlier changeset
2195 </td></tr>
2195 </td></tr>
2196 <tr><td>
2196 <tr><td>
2197 <a href="/help/bisect">
2197 <a href="/help/bisect">
2198 bisect
2198 bisect
2199 </a>
2199 </a>
2200 </td><td>
2200 </td><td>
2201 subdivision search of changesets
2201 subdivision search of changesets
2202 </td></tr>
2202 </td></tr>
2203 <tr><td>
2203 <tr><td>
2204 <a href="/help/bookmarks">
2204 <a href="/help/bookmarks">
2205 bookmarks
2205 bookmarks
2206 </a>
2206 </a>
2207 </td><td>
2207 </td><td>
2208 create a new bookmark or list existing bookmarks
2208 create a new bookmark or list existing bookmarks
2209 </td></tr>
2209 </td></tr>
2210 <tr><td>
2210 <tr><td>
2211 <a href="/help/branch">
2211 <a href="/help/branch">
2212 branch
2212 branch
2213 </a>
2213 </a>
2214 </td><td>
2214 </td><td>
2215 set or show the current branch name
2215 set or show the current branch name
2216 </td></tr>
2216 </td></tr>
2217 <tr><td>
2217 <tr><td>
2218 <a href="/help/branches">
2218 <a href="/help/branches">
2219 branches
2219 branches
2220 </a>
2220 </a>
2221 </td><td>
2221 </td><td>
2222 list repository named branches
2222 list repository named branches
2223 </td></tr>
2223 </td></tr>
2224 <tr><td>
2224 <tr><td>
2225 <a href="/help/bundle">
2225 <a href="/help/bundle">
2226 bundle
2226 bundle
2227 </a>
2227 </a>
2228 </td><td>
2228 </td><td>
2229 create a changegroup file
2229 create a changegroup file
2230 </td></tr>
2230 </td></tr>
2231 <tr><td>
2231 <tr><td>
2232 <a href="/help/cat">
2232 <a href="/help/cat">
2233 cat
2233 cat
2234 </a>
2234 </a>
2235 </td><td>
2235 </td><td>
2236 output the current or given revision of files
2236 output the current or given revision of files
2237 </td></tr>
2237 </td></tr>
2238 <tr><td>
2238 <tr><td>
2239 <a href="/help/config">
2239 <a href="/help/config">
2240 config
2240 config
2241 </a>
2241 </a>
2242 </td><td>
2242 </td><td>
2243 show combined config settings from all hgrc files
2243 show combined config settings from all hgrc files
2244 </td></tr>
2244 </td></tr>
2245 <tr><td>
2245 <tr><td>
2246 <a href="/help/copy">
2246 <a href="/help/copy">
2247 copy
2247 copy
2248 </a>
2248 </a>
2249 </td><td>
2249 </td><td>
2250 mark files as copied for the next commit
2250 mark files as copied for the next commit
2251 </td></tr>
2251 </td></tr>
2252 <tr><td>
2252 <tr><td>
2253 <a href="/help/files">
2253 <a href="/help/files">
2254 files
2254 files
2255 </a>
2255 </a>
2256 </td><td>
2256 </td><td>
2257 list tracked files
2257 list tracked files
2258 </td></tr>
2258 </td></tr>
2259 <tr><td>
2259 <tr><td>
2260 <a href="/help/graft">
2260 <a href="/help/graft">
2261 graft
2261 graft
2262 </a>
2262 </a>
2263 </td><td>
2263 </td><td>
2264 copy changes from other branches onto the current branch
2264 copy changes from other branches onto the current branch
2265 </td></tr>
2265 </td></tr>
2266 <tr><td>
2266 <tr><td>
2267 <a href="/help/grep">
2267 <a href="/help/grep">
2268 grep
2268 grep
2269 </a>
2269 </a>
2270 </td><td>
2270 </td><td>
2271 search revision history for a pattern in specified files
2271 search revision history for a pattern in specified files
2272 </td></tr>
2272 </td></tr>
2273 <tr><td>
2273 <tr><td>
2274 <a href="/help/heads">
2274 <a href="/help/heads">
2275 heads
2275 heads
2276 </a>
2276 </a>
2277 </td><td>
2277 </td><td>
2278 show branch heads
2278 show branch heads
2279 </td></tr>
2279 </td></tr>
2280 <tr><td>
2280 <tr><td>
2281 <a href="/help/help">
2281 <a href="/help/help">
2282 help
2282 help
2283 </a>
2283 </a>
2284 </td><td>
2284 </td><td>
2285 show help for a given topic or a help overview
2285 show help for a given topic or a help overview
2286 </td></tr>
2286 </td></tr>
2287 <tr><td>
2287 <tr><td>
2288 <a href="/help/hgalias">
2288 <a href="/help/hgalias">
2289 hgalias
2289 hgalias
2290 </a>
2290 </a>
2291 </td><td>
2291 </td><td>
2292 summarize working directory state
2292 summarize working directory state
2293 </td></tr>
2293 </td></tr>
2294 <tr><td>
2294 <tr><td>
2295 <a href="/help/identify">
2295 <a href="/help/identify">
2296 identify
2296 identify
2297 </a>
2297 </a>
2298 </td><td>
2298 </td><td>
2299 identify the working directory or specified revision
2299 identify the working directory or specified revision
2300 </td></tr>
2300 </td></tr>
2301 <tr><td>
2301 <tr><td>
2302 <a href="/help/import">
2302 <a href="/help/import">
2303 import
2303 import
2304 </a>
2304 </a>
2305 </td><td>
2305 </td><td>
2306 import an ordered set of patches
2306 import an ordered set of patches
2307 </td></tr>
2307 </td></tr>
2308 <tr><td>
2308 <tr><td>
2309 <a href="/help/incoming">
2309 <a href="/help/incoming">
2310 incoming
2310 incoming
2311 </a>
2311 </a>
2312 </td><td>
2312 </td><td>
2313 show new changesets found in source
2313 show new changesets found in source
2314 </td></tr>
2314 </td></tr>
2315 <tr><td>
2315 <tr><td>
2316 <a href="/help/manifest">
2316 <a href="/help/manifest">
2317 manifest
2317 manifest
2318 </a>
2318 </a>
2319 </td><td>
2319 </td><td>
2320 output the current or given revision of the project manifest
2320 output the current or given revision of the project manifest
2321 </td></tr>
2321 </td></tr>
2322 <tr><td>
2322 <tr><td>
2323 <a href="/help/nohelp">
2323 <a href="/help/nohelp">
2324 nohelp
2324 nohelp
2325 </a>
2325 </a>
2326 </td><td>
2326 </td><td>
2327 (no help text available)
2327 (no help text available)
2328 </td></tr>
2328 </td></tr>
2329 <tr><td>
2329 <tr><td>
2330 <a href="/help/outgoing">
2330 <a href="/help/outgoing">
2331 outgoing
2331 outgoing
2332 </a>
2332 </a>
2333 </td><td>
2333 </td><td>
2334 show changesets not found in the destination
2334 show changesets not found in the destination
2335 </td></tr>
2335 </td></tr>
2336 <tr><td>
2336 <tr><td>
2337 <a href="/help/paths">
2337 <a href="/help/paths">
2338 paths
2338 paths
2339 </a>
2339 </a>
2340 </td><td>
2340 </td><td>
2341 show aliases for remote repositories
2341 show aliases for remote repositories
2342 </td></tr>
2342 </td></tr>
2343 <tr><td>
2343 <tr><td>
2344 <a href="/help/phase">
2344 <a href="/help/phase">
2345 phase
2345 phase
2346 </a>
2346 </a>
2347 </td><td>
2347 </td><td>
2348 set or show the current phase name
2348 set or show the current phase name
2349 </td></tr>
2349 </td></tr>
2350 <tr><td>
2350 <tr><td>
2351 <a href="/help/recover">
2351 <a href="/help/recover">
2352 recover
2352 recover
2353 </a>
2353 </a>
2354 </td><td>
2354 </td><td>
2355 roll back an interrupted transaction
2355 roll back an interrupted transaction
2356 </td></tr>
2356 </td></tr>
2357 <tr><td>
2357 <tr><td>
2358 <a href="/help/rename">
2358 <a href="/help/rename">
2359 rename
2359 rename
2360 </a>
2360 </a>
2361 </td><td>
2361 </td><td>
2362 rename files; equivalent of copy + remove
2362 rename files; equivalent of copy + remove
2363 </td></tr>
2363 </td></tr>
2364 <tr><td>
2364 <tr><td>
2365 <a href="/help/resolve">
2365 <a href="/help/resolve">
2366 resolve
2366 resolve
2367 </a>
2367 </a>
2368 </td><td>
2368 </td><td>
2369 redo merges or set/view the merge status of files
2369 redo merges or set/view the merge status of files
2370 </td></tr>
2370 </td></tr>
2371 <tr><td>
2371 <tr><td>
2372 <a href="/help/revert">
2372 <a href="/help/revert">
2373 revert
2373 revert
2374 </a>
2374 </a>
2375 </td><td>
2375 </td><td>
2376 restore files to their checkout state
2376 restore files to their checkout state
2377 </td></tr>
2377 </td></tr>
2378 <tr><td>
2378 <tr><td>
2379 <a href="/help/root">
2379 <a href="/help/root">
2380 root
2380 root
2381 </a>
2381 </a>
2382 </td><td>
2382 </td><td>
2383 print the root (top) of the current working directory
2383 print the root (top) of the current working directory
2384 </td></tr>
2384 </td></tr>
2385 <tr><td>
2385 <tr><td>
2386 <a href="/help/shellalias">
2386 <a href="/help/shellalias">
2387 shellalias
2387 shellalias
2388 </a>
2388 </a>
2389 </td><td>
2389 </td><td>
2390 (no help text available)
2390 (no help text available)
2391 </td></tr>
2391 </td></tr>
2392 <tr><td>
2392 <tr><td>
2393 <a href="/help/tag">
2393 <a href="/help/tag">
2394 tag
2394 tag
2395 </a>
2395 </a>
2396 </td><td>
2396 </td><td>
2397 add one or more tags for the current or given revision
2397 add one or more tags for the current or given revision
2398 </td></tr>
2398 </td></tr>
2399 <tr><td>
2399 <tr><td>
2400 <a href="/help/tags">
2400 <a href="/help/tags">
2401 tags
2401 tags
2402 </a>
2402 </a>
2403 </td><td>
2403 </td><td>
2404 list repository tags
2404 list repository tags
2405 </td></tr>
2405 </td></tr>
2406 <tr><td>
2406 <tr><td>
2407 <a href="/help/unbundle">
2407 <a href="/help/unbundle">
2408 unbundle
2408 unbundle
2409 </a>
2409 </a>
2410 </td><td>
2410 </td><td>
2411 apply one or more changegroup files
2411 apply one or more changegroup files
2412 </td></tr>
2412 </td></tr>
2413 <tr><td>
2413 <tr><td>
2414 <a href="/help/verify">
2414 <a href="/help/verify">
2415 verify
2415 verify
2416 </a>
2416 </a>
2417 </td><td>
2417 </td><td>
2418 verify the integrity of the repository
2418 verify the integrity of the repository
2419 </td></tr>
2419 </td></tr>
2420 <tr><td>
2420 <tr><td>
2421 <a href="/help/version">
2421 <a href="/help/version">
2422 version
2422 version
2423 </a>
2423 </a>
2424 </td><td>
2424 </td><td>
2425 output version and copyright information
2425 output version and copyright information
2426 </td></tr>
2426 </td></tr>
2427
2427
2428
2428
2429 </table>
2429 </table>
2430 </div>
2430 </div>
2431 </div>
2431 </div>
2432
2432
2433
2433
2434
2434
2435 </body>
2435 </body>
2436 </html>
2436 </html>
2437
2437
2438
2438
2439 $ get-with-headers.py $LOCALIP:$HGPORT "help/add"
2439 $ get-with-headers.py $LOCALIP:$HGPORT "help/add"
2440 200 Script output follows
2440 200 Script output follows
2441
2441
2442 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2442 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2443 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2443 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2444 <head>
2444 <head>
2445 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2445 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2446 <meta name="robots" content="index, nofollow" />
2446 <meta name="robots" content="index, nofollow" />
2447 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2447 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2448 <script type="text/javascript" src="/static/mercurial.js"></script>
2448 <script type="text/javascript" src="/static/mercurial.js"></script>
2449
2449
2450 <title>Help: add</title>
2450 <title>Help: add</title>
2451 </head>
2451 </head>
2452 <body>
2452 <body>
2453
2453
2454 <div class="container">
2454 <div class="container">
2455 <div class="menu">
2455 <div class="menu">
2456 <div class="logo">
2456 <div class="logo">
2457 <a href="https://mercurial-scm.org/">
2457 <a href="https://mercurial-scm.org/">
2458 <img src="/static/hglogo.png" alt="mercurial" /></a>
2458 <img src="/static/hglogo.png" alt="mercurial" /></a>
2459 </div>
2459 </div>
2460 <ul>
2460 <ul>
2461 <li><a href="/shortlog">log</a></li>
2461 <li><a href="/shortlog">log</a></li>
2462 <li><a href="/graph">graph</a></li>
2462 <li><a href="/graph">graph</a></li>
2463 <li><a href="/tags">tags</a></li>
2463 <li><a href="/tags">tags</a></li>
2464 <li><a href="/bookmarks">bookmarks</a></li>
2464 <li><a href="/bookmarks">bookmarks</a></li>
2465 <li><a href="/branches">branches</a></li>
2465 <li><a href="/branches">branches</a></li>
2466 </ul>
2466 </ul>
2467 <ul>
2467 <ul>
2468 <li class="active"><a href="/help">help</a></li>
2468 <li class="active"><a href="/help">help</a></li>
2469 </ul>
2469 </ul>
2470 </div>
2470 </div>
2471
2471
2472 <div class="main">
2472 <div class="main">
2473 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2473 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2474 <h3>Help: add</h3>
2474 <h3>Help: add</h3>
2475
2475
2476 <form class="search" action="/log">
2476 <form class="search" action="/log">
2477
2477
2478 <p><input name="rev" id="search1" type="text" size="30" /></p>
2478 <p><input name="rev" id="search1" type="text" size="30" /></p>
2479 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2479 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2480 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2480 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2481 </form>
2481 </form>
2482 <div id="doc">
2482 <div id="doc">
2483 <p>
2483 <p>
2484 hg add [OPTION]... [FILE]...
2484 hg add [OPTION]... [FILE]...
2485 </p>
2485 </p>
2486 <p>
2486 <p>
2487 add the specified files on the next commit
2487 add the specified files on the next commit
2488 </p>
2488 </p>
2489 <p>
2489 <p>
2490 Schedule files to be version controlled and added to the
2490 Schedule files to be version controlled and added to the
2491 repository.
2491 repository.
2492 </p>
2492 </p>
2493 <p>
2493 <p>
2494 The files will be added to the repository at the next commit. To
2494 The files will be added to the repository at the next commit. To
2495 undo an add before that, see 'hg forget'.
2495 undo an add before that, see 'hg forget'.
2496 </p>
2496 </p>
2497 <p>
2497 <p>
2498 If no names are given, add all files to the repository (except
2498 If no names are given, add all files to the repository (except
2499 files matching &quot;.hgignore&quot;).
2499 files matching &quot;.hgignore&quot;).
2500 </p>
2500 </p>
2501 <p>
2501 <p>
2502 Examples:
2502 Examples:
2503 </p>
2503 </p>
2504 <ul>
2504 <ul>
2505 <li> New (unknown) files are added automatically by 'hg add':
2505 <li> New (unknown) files are added automatically by 'hg add':
2506 <pre>
2506 <pre>
2507 \$ ls (re)
2507 \$ ls (re)
2508 foo.c
2508 foo.c
2509 \$ hg status (re)
2509 \$ hg status (re)
2510 ? foo.c
2510 ? foo.c
2511 \$ hg add (re)
2511 \$ hg add (re)
2512 adding foo.c
2512 adding foo.c
2513 \$ hg status (re)
2513 \$ hg status (re)
2514 A foo.c
2514 A foo.c
2515 </pre>
2515 </pre>
2516 <li> Specific files to be added can be specified:
2516 <li> Specific files to be added can be specified:
2517 <pre>
2517 <pre>
2518 \$ ls (re)
2518 \$ ls (re)
2519 bar.c foo.c
2519 bar.c foo.c
2520 \$ hg status (re)
2520 \$ hg status (re)
2521 ? bar.c
2521 ? bar.c
2522 ? foo.c
2522 ? foo.c
2523 \$ hg add bar.c (re)
2523 \$ hg add bar.c (re)
2524 \$ hg status (re)
2524 \$ hg status (re)
2525 A bar.c
2525 A bar.c
2526 ? foo.c
2526 ? foo.c
2527 </pre>
2527 </pre>
2528 </ul>
2528 </ul>
2529 <p>
2529 <p>
2530 Returns 0 if all files are successfully added.
2530 Returns 0 if all files are successfully added.
2531 </p>
2531 </p>
2532 <p>
2532 <p>
2533 options ([+] can be repeated):
2533 options ([+] can be repeated):
2534 </p>
2534 </p>
2535 <table>
2535 <table>
2536 <tr><td>-I</td>
2536 <tr><td>-I</td>
2537 <td>--include PATTERN [+]</td>
2537 <td>--include PATTERN [+]</td>
2538 <td>include names matching the given patterns</td></tr>
2538 <td>include names matching the given patterns</td></tr>
2539 <tr><td>-X</td>
2539 <tr><td>-X</td>
2540 <td>--exclude PATTERN [+]</td>
2540 <td>--exclude PATTERN [+]</td>
2541 <td>exclude names matching the given patterns</td></tr>
2541 <td>exclude names matching the given patterns</td></tr>
2542 <tr><td>-S</td>
2542 <tr><td>-S</td>
2543 <td>--subrepos</td>
2543 <td>--subrepos</td>
2544 <td>recurse into subrepositories</td></tr>
2544 <td>recurse into subrepositories</td></tr>
2545 <tr><td>-n</td>
2545 <tr><td>-n</td>
2546 <td>--dry-run</td>
2546 <td>--dry-run</td>
2547 <td>do not perform actions, just print output</td></tr>
2547 <td>do not perform actions, just print output</td></tr>
2548 </table>
2548 </table>
2549 <p>
2549 <p>
2550 global options ([+] can be repeated):
2550 global options ([+] can be repeated):
2551 </p>
2551 </p>
2552 <table>
2552 <table>
2553 <tr><td>-R</td>
2553 <tr><td>-R</td>
2554 <td>--repository REPO</td>
2554 <td>--repository REPO</td>
2555 <td>repository root directory or name of overlay bundle file</td></tr>
2555 <td>repository root directory or name of overlay bundle file</td></tr>
2556 <tr><td></td>
2556 <tr><td></td>
2557 <td>--cwd DIR</td>
2557 <td>--cwd DIR</td>
2558 <td>change working directory</td></tr>
2558 <td>change working directory</td></tr>
2559 <tr><td>-y</td>
2559 <tr><td>-y</td>
2560 <td>--noninteractive</td>
2560 <td>--noninteractive</td>
2561 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
2561 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
2562 <tr><td>-q</td>
2562 <tr><td>-q</td>
2563 <td>--quiet</td>
2563 <td>--quiet</td>
2564 <td>suppress output</td></tr>
2564 <td>suppress output</td></tr>
2565 <tr><td>-v</td>
2565 <tr><td>-v</td>
2566 <td>--verbose</td>
2566 <td>--verbose</td>
2567 <td>enable additional output</td></tr>
2567 <td>enable additional output</td></tr>
2568 <tr><td></td>
2568 <tr><td></td>
2569 <td>--color TYPE</td>
2569 <td>--color TYPE</td>
2570 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
2570 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
2571 <tr><td></td>
2571 <tr><td></td>
2572 <td>--config CONFIG [+]</td>
2572 <td>--config CONFIG [+]</td>
2573 <td>set/override config option (use 'section.name=value')</td></tr>
2573 <td>set/override config option (use 'section.name=value')</td></tr>
2574 <tr><td></td>
2574 <tr><td></td>
2575 <td>--debug</td>
2575 <td>--debug</td>
2576 <td>enable debugging output</td></tr>
2576 <td>enable debugging output</td></tr>
2577 <tr><td></td>
2577 <tr><td></td>
2578 <td>--debugger</td>
2578 <td>--debugger</td>
2579 <td>start debugger</td></tr>
2579 <td>start debugger</td></tr>
2580 <tr><td></td>
2580 <tr><td></td>
2581 <td>--encoding ENCODE</td>
2581 <td>--encoding ENCODE</td>
2582 <td>set the charset encoding (default: ascii)</td></tr>
2582 <td>set the charset encoding (default: ascii)</td></tr>
2583 <tr><td></td>
2583 <tr><td></td>
2584 <td>--encodingmode MODE</td>
2584 <td>--encodingmode MODE</td>
2585 <td>set the charset encoding mode (default: strict)</td></tr>
2585 <td>set the charset encoding mode (default: strict)</td></tr>
2586 <tr><td></td>
2586 <tr><td></td>
2587 <td>--traceback</td>
2587 <td>--traceback</td>
2588 <td>always print a traceback on exception</td></tr>
2588 <td>always print a traceback on exception</td></tr>
2589 <tr><td></td>
2589 <tr><td></td>
2590 <td>--time</td>
2590 <td>--time</td>
2591 <td>time how long the command takes</td></tr>
2591 <td>time how long the command takes</td></tr>
2592 <tr><td></td>
2592 <tr><td></td>
2593 <td>--profile</td>
2593 <td>--profile</td>
2594 <td>print command execution profile</td></tr>
2594 <td>print command execution profile</td></tr>
2595 <tr><td></td>
2595 <tr><td></td>
2596 <td>--version</td>
2596 <td>--version</td>
2597 <td>output version information and exit</td></tr>
2597 <td>output version information and exit</td></tr>
2598 <tr><td>-h</td>
2598 <tr><td>-h</td>
2599 <td>--help</td>
2599 <td>--help</td>
2600 <td>display help and exit</td></tr>
2600 <td>display help and exit</td></tr>
2601 <tr><td></td>
2601 <tr><td></td>
2602 <td>--hidden</td>
2602 <td>--hidden</td>
2603 <td>consider hidden changesets</td></tr>
2603 <td>consider hidden changesets</td></tr>
2604 <tr><td></td>
2604 <tr><td></td>
2605 <td>--pager TYPE</td>
2605 <td>--pager TYPE</td>
2606 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
2606 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
2607 </table>
2607 </table>
2608
2608
2609 </div>
2609 </div>
2610 </div>
2610 </div>
2611 </div>
2611 </div>
2612
2612
2613
2613
2614
2614
2615 </body>
2615 </body>
2616 </html>
2616 </html>
2617
2617
2618
2618
2619 $ get-with-headers.py $LOCALIP:$HGPORT "help/remove"
2619 $ get-with-headers.py $LOCALIP:$HGPORT "help/remove"
2620 200 Script output follows
2620 200 Script output follows
2621
2621
2622 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2622 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2623 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2623 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2624 <head>
2624 <head>
2625 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2625 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2626 <meta name="robots" content="index, nofollow" />
2626 <meta name="robots" content="index, nofollow" />
2627 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2627 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2628 <script type="text/javascript" src="/static/mercurial.js"></script>
2628 <script type="text/javascript" src="/static/mercurial.js"></script>
2629
2629
2630 <title>Help: remove</title>
2630 <title>Help: remove</title>
2631 </head>
2631 </head>
2632 <body>
2632 <body>
2633
2633
2634 <div class="container">
2634 <div class="container">
2635 <div class="menu">
2635 <div class="menu">
2636 <div class="logo">
2636 <div class="logo">
2637 <a href="https://mercurial-scm.org/">
2637 <a href="https://mercurial-scm.org/">
2638 <img src="/static/hglogo.png" alt="mercurial" /></a>
2638 <img src="/static/hglogo.png" alt="mercurial" /></a>
2639 </div>
2639 </div>
2640 <ul>
2640 <ul>
2641 <li><a href="/shortlog">log</a></li>
2641 <li><a href="/shortlog">log</a></li>
2642 <li><a href="/graph">graph</a></li>
2642 <li><a href="/graph">graph</a></li>
2643 <li><a href="/tags">tags</a></li>
2643 <li><a href="/tags">tags</a></li>
2644 <li><a href="/bookmarks">bookmarks</a></li>
2644 <li><a href="/bookmarks">bookmarks</a></li>
2645 <li><a href="/branches">branches</a></li>
2645 <li><a href="/branches">branches</a></li>
2646 </ul>
2646 </ul>
2647 <ul>
2647 <ul>
2648 <li class="active"><a href="/help">help</a></li>
2648 <li class="active"><a href="/help">help</a></li>
2649 </ul>
2649 </ul>
2650 </div>
2650 </div>
2651
2651
2652 <div class="main">
2652 <div class="main">
2653 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2653 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2654 <h3>Help: remove</h3>
2654 <h3>Help: remove</h3>
2655
2655
2656 <form class="search" action="/log">
2656 <form class="search" action="/log">
2657
2657
2658 <p><input name="rev" id="search1" type="text" size="30" /></p>
2658 <p><input name="rev" id="search1" type="text" size="30" /></p>
2659 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2659 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2660 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2660 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2661 </form>
2661 </form>
2662 <div id="doc">
2662 <div id="doc">
2663 <p>
2663 <p>
2664 hg remove [OPTION]... FILE...
2664 hg remove [OPTION]... FILE...
2665 </p>
2665 </p>
2666 <p>
2666 <p>
2667 aliases: rm
2667 aliases: rm
2668 </p>
2668 </p>
2669 <p>
2669 <p>
2670 remove the specified files on the next commit
2670 remove the specified files on the next commit
2671 </p>
2671 </p>
2672 <p>
2672 <p>
2673 Schedule the indicated files for removal from the current branch.
2673 Schedule the indicated files for removal from the current branch.
2674 </p>
2674 </p>
2675 <p>
2675 <p>
2676 This command schedules the files to be removed at the next commit.
2676 This command schedules the files to be removed at the next commit.
2677 To undo a remove before that, see 'hg revert'. To undo added
2677 To undo a remove before that, see 'hg revert'. To undo added
2678 files, see 'hg forget'.
2678 files, see 'hg forget'.
2679 </p>
2679 </p>
2680 <p>
2680 <p>
2681 -A/--after can be used to remove only files that have already
2681 -A/--after can be used to remove only files that have already
2682 been deleted, -f/--force can be used to force deletion, and -Af
2682 been deleted, -f/--force can be used to force deletion, and -Af
2683 can be used to remove files from the next revision without
2683 can be used to remove files from the next revision without
2684 deleting them from the working directory.
2684 deleting them from the working directory.
2685 </p>
2685 </p>
2686 <p>
2686 <p>
2687 The following table details the behavior of remove for different
2687 The following table details the behavior of remove for different
2688 file states (columns) and option combinations (rows). The file
2688 file states (columns) and option combinations (rows). The file
2689 states are Added [A], Clean [C], Modified [M] and Missing [!]
2689 states are Added [A], Clean [C], Modified [M] and Missing [!]
2690 (as reported by 'hg status'). The actions are Warn, Remove
2690 (as reported by 'hg status'). The actions are Warn, Remove
2691 (from branch) and Delete (from disk):
2691 (from branch) and Delete (from disk):
2692 </p>
2692 </p>
2693 <table>
2693 <table>
2694 <tr><td>opt/state</td>
2694 <tr><td>opt/state</td>
2695 <td>A</td>
2695 <td>A</td>
2696 <td>C</td>
2696 <td>C</td>
2697 <td>M</td>
2697 <td>M</td>
2698 <td>!</td></tr>
2698 <td>!</td></tr>
2699 <tr><td>none</td>
2699 <tr><td>none</td>
2700 <td>W</td>
2700 <td>W</td>
2701 <td>RD</td>
2701 <td>RD</td>
2702 <td>W</td>
2702 <td>W</td>
2703 <td>R</td></tr>
2703 <td>R</td></tr>
2704 <tr><td>-f</td>
2704 <tr><td>-f</td>
2705 <td>R</td>
2705 <td>R</td>
2706 <td>RD</td>
2706 <td>RD</td>
2707 <td>RD</td>
2707 <td>RD</td>
2708 <td>R</td></tr>
2708 <td>R</td></tr>
2709 <tr><td>-A</td>
2709 <tr><td>-A</td>
2710 <td>W</td>
2710 <td>W</td>
2711 <td>W</td>
2711 <td>W</td>
2712 <td>W</td>
2712 <td>W</td>
2713 <td>R</td></tr>
2713 <td>R</td></tr>
2714 <tr><td>-Af</td>
2714 <tr><td>-Af</td>
2715 <td>R</td>
2715 <td>R</td>
2716 <td>R</td>
2716 <td>R</td>
2717 <td>R</td>
2717 <td>R</td>
2718 <td>R</td></tr>
2718 <td>R</td></tr>
2719 </table>
2719 </table>
2720 <p>
2720 <p>
2721 <b>Note:</b>
2721 <b>Note:</b>
2722 </p>
2722 </p>
2723 <p>
2723 <p>
2724 'hg remove' never deletes files in Added [A] state from the
2724 'hg remove' never deletes files in Added [A] state from the
2725 working directory, not even if &quot;--force&quot; is specified.
2725 working directory, not even if &quot;--force&quot; is specified.
2726 </p>
2726 </p>
2727 <p>
2727 <p>
2728 Returns 0 on success, 1 if any warnings encountered.
2728 Returns 0 on success, 1 if any warnings encountered.
2729 </p>
2729 </p>
2730 <p>
2730 <p>
2731 options ([+] can be repeated):
2731 options ([+] can be repeated):
2732 </p>
2732 </p>
2733 <table>
2733 <table>
2734 <tr><td>-A</td>
2734 <tr><td>-A</td>
2735 <td>--after</td>
2735 <td>--after</td>
2736 <td>record delete for missing files</td></tr>
2736 <td>record delete for missing files</td></tr>
2737 <tr><td>-f</td>
2737 <tr><td>-f</td>
2738 <td>--force</td>
2738 <td>--force</td>
2739 <td>forget added files, delete modified files</td></tr>
2739 <td>forget added files, delete modified files</td></tr>
2740 <tr><td>-S</td>
2740 <tr><td>-S</td>
2741 <td>--subrepos</td>
2741 <td>--subrepos</td>
2742 <td>recurse into subrepositories</td></tr>
2742 <td>recurse into subrepositories</td></tr>
2743 <tr><td>-I</td>
2743 <tr><td>-I</td>
2744 <td>--include PATTERN [+]</td>
2744 <td>--include PATTERN [+]</td>
2745 <td>include names matching the given patterns</td></tr>
2745 <td>include names matching the given patterns</td></tr>
2746 <tr><td>-X</td>
2746 <tr><td>-X</td>
2747 <td>--exclude PATTERN [+]</td>
2747 <td>--exclude PATTERN [+]</td>
2748 <td>exclude names matching the given patterns</td></tr>
2748 <td>exclude names matching the given patterns</td></tr>
2749 </table>
2749 </table>
2750 <p>
2750 <p>
2751 global options ([+] can be repeated):
2751 global options ([+] can be repeated):
2752 </p>
2752 </p>
2753 <table>
2753 <table>
2754 <tr><td>-R</td>
2754 <tr><td>-R</td>
2755 <td>--repository REPO</td>
2755 <td>--repository REPO</td>
2756 <td>repository root directory or name of overlay bundle file</td></tr>
2756 <td>repository root directory or name of overlay bundle file</td></tr>
2757 <tr><td></td>
2757 <tr><td></td>
2758 <td>--cwd DIR</td>
2758 <td>--cwd DIR</td>
2759 <td>change working directory</td></tr>
2759 <td>change working directory</td></tr>
2760 <tr><td>-y</td>
2760 <tr><td>-y</td>
2761 <td>--noninteractive</td>
2761 <td>--noninteractive</td>
2762 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
2762 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
2763 <tr><td>-q</td>
2763 <tr><td>-q</td>
2764 <td>--quiet</td>
2764 <td>--quiet</td>
2765 <td>suppress output</td></tr>
2765 <td>suppress output</td></tr>
2766 <tr><td>-v</td>
2766 <tr><td>-v</td>
2767 <td>--verbose</td>
2767 <td>--verbose</td>
2768 <td>enable additional output</td></tr>
2768 <td>enable additional output</td></tr>
2769 <tr><td></td>
2769 <tr><td></td>
2770 <td>--color TYPE</td>
2770 <td>--color TYPE</td>
2771 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
2771 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
2772 <tr><td></td>
2772 <tr><td></td>
2773 <td>--config CONFIG [+]</td>
2773 <td>--config CONFIG [+]</td>
2774 <td>set/override config option (use 'section.name=value')</td></tr>
2774 <td>set/override config option (use 'section.name=value')</td></tr>
2775 <tr><td></td>
2775 <tr><td></td>
2776 <td>--debug</td>
2776 <td>--debug</td>
2777 <td>enable debugging output</td></tr>
2777 <td>enable debugging output</td></tr>
2778 <tr><td></td>
2778 <tr><td></td>
2779 <td>--debugger</td>
2779 <td>--debugger</td>
2780 <td>start debugger</td></tr>
2780 <td>start debugger</td></tr>
2781 <tr><td></td>
2781 <tr><td></td>
2782 <td>--encoding ENCODE</td>
2782 <td>--encoding ENCODE</td>
2783 <td>set the charset encoding (default: ascii)</td></tr>
2783 <td>set the charset encoding (default: ascii)</td></tr>
2784 <tr><td></td>
2784 <tr><td></td>
2785 <td>--encodingmode MODE</td>
2785 <td>--encodingmode MODE</td>
2786 <td>set the charset encoding mode (default: strict)</td></tr>
2786 <td>set the charset encoding mode (default: strict)</td></tr>
2787 <tr><td></td>
2787 <tr><td></td>
2788 <td>--traceback</td>
2788 <td>--traceback</td>
2789 <td>always print a traceback on exception</td></tr>
2789 <td>always print a traceback on exception</td></tr>
2790 <tr><td></td>
2790 <tr><td></td>
2791 <td>--time</td>
2791 <td>--time</td>
2792 <td>time how long the command takes</td></tr>
2792 <td>time how long the command takes</td></tr>
2793 <tr><td></td>
2793 <tr><td></td>
2794 <td>--profile</td>
2794 <td>--profile</td>
2795 <td>print command execution profile</td></tr>
2795 <td>print command execution profile</td></tr>
2796 <tr><td></td>
2796 <tr><td></td>
2797 <td>--version</td>
2797 <td>--version</td>
2798 <td>output version information and exit</td></tr>
2798 <td>output version information and exit</td></tr>
2799 <tr><td>-h</td>
2799 <tr><td>-h</td>
2800 <td>--help</td>
2800 <td>--help</td>
2801 <td>display help and exit</td></tr>
2801 <td>display help and exit</td></tr>
2802 <tr><td></td>
2802 <tr><td></td>
2803 <td>--hidden</td>
2803 <td>--hidden</td>
2804 <td>consider hidden changesets</td></tr>
2804 <td>consider hidden changesets</td></tr>
2805 <tr><td></td>
2805 <tr><td></td>
2806 <td>--pager TYPE</td>
2806 <td>--pager TYPE</td>
2807 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
2807 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
2808 </table>
2808 </table>
2809
2809
2810 </div>
2810 </div>
2811 </div>
2811 </div>
2812 </div>
2812 </div>
2813
2813
2814
2814
2815
2815
2816 </body>
2816 </body>
2817 </html>
2817 </html>
2818
2818
2819
2819
2820 $ get-with-headers.py $LOCALIP:$HGPORT "help/dates"
2820 $ get-with-headers.py $LOCALIP:$HGPORT "help/dates"
2821 200 Script output follows
2821 200 Script output follows
2822
2822
2823 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2823 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2824 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2824 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2825 <head>
2825 <head>
2826 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2826 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2827 <meta name="robots" content="index, nofollow" />
2827 <meta name="robots" content="index, nofollow" />
2828 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2828 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2829 <script type="text/javascript" src="/static/mercurial.js"></script>
2829 <script type="text/javascript" src="/static/mercurial.js"></script>
2830
2830
2831 <title>Help: dates</title>
2831 <title>Help: dates</title>
2832 </head>
2832 </head>
2833 <body>
2833 <body>
2834
2834
2835 <div class="container">
2835 <div class="container">
2836 <div class="menu">
2836 <div class="menu">
2837 <div class="logo">
2837 <div class="logo">
2838 <a href="https://mercurial-scm.org/">
2838 <a href="https://mercurial-scm.org/">
2839 <img src="/static/hglogo.png" alt="mercurial" /></a>
2839 <img src="/static/hglogo.png" alt="mercurial" /></a>
2840 </div>
2840 </div>
2841 <ul>
2841 <ul>
2842 <li><a href="/shortlog">log</a></li>
2842 <li><a href="/shortlog">log</a></li>
2843 <li><a href="/graph">graph</a></li>
2843 <li><a href="/graph">graph</a></li>
2844 <li><a href="/tags">tags</a></li>
2844 <li><a href="/tags">tags</a></li>
2845 <li><a href="/bookmarks">bookmarks</a></li>
2845 <li><a href="/bookmarks">bookmarks</a></li>
2846 <li><a href="/branches">branches</a></li>
2846 <li><a href="/branches">branches</a></li>
2847 </ul>
2847 </ul>
2848 <ul>
2848 <ul>
2849 <li class="active"><a href="/help">help</a></li>
2849 <li class="active"><a href="/help">help</a></li>
2850 </ul>
2850 </ul>
2851 </div>
2851 </div>
2852
2852
2853 <div class="main">
2853 <div class="main">
2854 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2854 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2855 <h3>Help: dates</h3>
2855 <h3>Help: dates</h3>
2856
2856
2857 <form class="search" action="/log">
2857 <form class="search" action="/log">
2858
2858
2859 <p><input name="rev" id="search1" type="text" size="30" /></p>
2859 <p><input name="rev" id="search1" type="text" size="30" /></p>
2860 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2860 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2861 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2861 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2862 </form>
2862 </form>
2863 <div id="doc">
2863 <div id="doc">
2864 <h1>Date Formats</h1>
2864 <h1>Date Formats</h1>
2865 <p>
2865 <p>
2866 Some commands allow the user to specify a date, e.g.:
2866 Some commands allow the user to specify a date, e.g.:
2867 </p>
2867 </p>
2868 <ul>
2868 <ul>
2869 <li> backout, commit, import, tag: Specify the commit date.
2869 <li> backout, commit, import, tag: Specify the commit date.
2870 <li> log, revert, update: Select revision(s) by date.
2870 <li> log, revert, update: Select revision(s) by date.
2871 </ul>
2871 </ul>
2872 <p>
2872 <p>
2873 Many date formats are valid. Here are some examples:
2873 Many date formats are valid. Here are some examples:
2874 </p>
2874 </p>
2875 <ul>
2875 <ul>
2876 <li> &quot;Wed Dec 6 13:18:29 2006&quot; (local timezone assumed)
2876 <li> &quot;Wed Dec 6 13:18:29 2006&quot; (local timezone assumed)
2877 <li> &quot;Dec 6 13:18 -0600&quot; (year assumed, time offset provided)
2877 <li> &quot;Dec 6 13:18 -0600&quot; (year assumed, time offset provided)
2878 <li> &quot;Dec 6 13:18 UTC&quot; (UTC and GMT are aliases for +0000)
2878 <li> &quot;Dec 6 13:18 UTC&quot; (UTC and GMT are aliases for +0000)
2879 <li> &quot;Dec 6&quot; (midnight)
2879 <li> &quot;Dec 6&quot; (midnight)
2880 <li> &quot;13:18&quot; (today assumed)
2880 <li> &quot;13:18&quot; (today assumed)
2881 <li> &quot;3:39&quot; (3:39AM assumed)
2881 <li> &quot;3:39&quot; (3:39AM assumed)
2882 <li> &quot;3:39pm&quot; (15:39)
2882 <li> &quot;3:39pm&quot; (15:39)
2883 <li> &quot;2006-12-06 13:18:29&quot; (ISO 8601 format)
2883 <li> &quot;2006-12-06 13:18:29&quot; (ISO 8601 format)
2884 <li> &quot;2006-12-6 13:18&quot;
2884 <li> &quot;2006-12-6 13:18&quot;
2885 <li> &quot;2006-12-6&quot;
2885 <li> &quot;2006-12-6&quot;
2886 <li> &quot;12-6&quot;
2886 <li> &quot;12-6&quot;
2887 <li> &quot;12/6&quot;
2887 <li> &quot;12/6&quot;
2888 <li> &quot;12/6/6&quot; (Dec 6 2006)
2888 <li> &quot;12/6/6&quot; (Dec 6 2006)
2889 <li> &quot;today&quot; (midnight)
2889 <li> &quot;today&quot; (midnight)
2890 <li> &quot;yesterday&quot; (midnight)
2890 <li> &quot;yesterday&quot; (midnight)
2891 <li> &quot;now&quot; - right now
2891 <li> &quot;now&quot; - right now
2892 </ul>
2892 </ul>
2893 <p>
2893 <p>
2894 Lastly, there is Mercurial's internal format:
2894 Lastly, there is Mercurial's internal format:
2895 </p>
2895 </p>
2896 <ul>
2896 <ul>
2897 <li> &quot;1165411109 0&quot; (Wed Dec 6 13:18:29 2006 UTC)
2897 <li> &quot;1165411109 0&quot; (Wed Dec 6 13:18:29 2006 UTC)
2898 </ul>
2898 </ul>
2899 <p>
2899 <p>
2900 This is the internal representation format for dates. The first number
2900 This is the internal representation format for dates. The first number
2901 is the number of seconds since the epoch (1970-01-01 00:00 UTC). The
2901 is the number of seconds since the epoch (1970-01-01 00:00 UTC). The
2902 second is the offset of the local timezone, in seconds west of UTC
2902 second is the offset of the local timezone, in seconds west of UTC
2903 (negative if the timezone is east of UTC).
2903 (negative if the timezone is east of UTC).
2904 </p>
2904 </p>
2905 <p>
2905 <p>
2906 The log command also accepts date ranges:
2906 The log command also accepts date ranges:
2907 </p>
2907 </p>
2908 <ul>
2908 <ul>
2909 <li> &quot;&lt;DATE&quot; - at or before a given date/time
2909 <li> &quot;&lt;DATE&quot; - at or before a given date/time
2910 <li> &quot;&gt;DATE&quot; - on or after a given date/time
2910 <li> &quot;&gt;DATE&quot; - on or after a given date/time
2911 <li> &quot;DATE to DATE&quot; - a date range, inclusive
2911 <li> &quot;DATE to DATE&quot; - a date range, inclusive
2912 <li> &quot;-DAYS&quot; - within a given number of days of today
2912 <li> &quot;-DAYS&quot; - within a given number of days of today
2913 </ul>
2913 </ul>
2914
2914
2915 </div>
2915 </div>
2916 </div>
2916 </div>
2917 </div>
2917 </div>
2918
2918
2919
2919
2920
2920
2921 </body>
2921 </body>
2922 </html>
2922 </html>
2923
2923
2924
2924
2925 Sub-topic indexes rendered properly
2925 Sub-topic indexes rendered properly
2926
2926
2927 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals"
2927 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals"
2928 200 Script output follows
2928 200 Script output follows
2929
2929
2930 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2930 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2931 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2931 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2932 <head>
2932 <head>
2933 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2933 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2934 <meta name="robots" content="index, nofollow" />
2934 <meta name="robots" content="index, nofollow" />
2935 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2935 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2936 <script type="text/javascript" src="/static/mercurial.js"></script>
2936 <script type="text/javascript" src="/static/mercurial.js"></script>
2937
2937
2938 <title>Help: internals</title>
2938 <title>Help: internals</title>
2939 </head>
2939 </head>
2940 <body>
2940 <body>
2941
2941
2942 <div class="container">
2942 <div class="container">
2943 <div class="menu">
2943 <div class="menu">
2944 <div class="logo">
2944 <div class="logo">
2945 <a href="https://mercurial-scm.org/">
2945 <a href="https://mercurial-scm.org/">
2946 <img src="/static/hglogo.png" alt="mercurial" /></a>
2946 <img src="/static/hglogo.png" alt="mercurial" /></a>
2947 </div>
2947 </div>
2948 <ul>
2948 <ul>
2949 <li><a href="/shortlog">log</a></li>
2949 <li><a href="/shortlog">log</a></li>
2950 <li><a href="/graph">graph</a></li>
2950 <li><a href="/graph">graph</a></li>
2951 <li><a href="/tags">tags</a></li>
2951 <li><a href="/tags">tags</a></li>
2952 <li><a href="/bookmarks">bookmarks</a></li>
2952 <li><a href="/bookmarks">bookmarks</a></li>
2953 <li><a href="/branches">branches</a></li>
2953 <li><a href="/branches">branches</a></li>
2954 </ul>
2954 </ul>
2955 <ul>
2955 <ul>
2956 <li><a href="/help">help</a></li>
2956 <li><a href="/help">help</a></li>
2957 </ul>
2957 </ul>
2958 </div>
2958 </div>
2959
2959
2960 <div class="main">
2960 <div class="main">
2961 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2961 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2962 <form class="search" action="/log">
2962 <form class="search" action="/log">
2963
2963
2964 <p><input name="rev" id="search1" type="text" size="30" /></p>
2964 <p><input name="rev" id="search1" type="text" size="30" /></p>
2965 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2965 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2966 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2966 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2967 </form>
2967 </form>
2968 <table class="bigtable">
2968 <table class="bigtable">
2969 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
2969 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
2970
2970
2971 <tr><td>
2971 <tr><td>
2972 <a href="/help/internals.bundles">
2972 <a href="/help/internals.bundles">
2973 bundles
2973 bundles
2974 </a>
2974 </a>
2975 </td><td>
2975 </td><td>
2976 Bundles
2976 Bundles
2977 </td></tr>
2977 </td></tr>
2978 <tr><td>
2978 <tr><td>
2979 <a href="/help/internals.changegroups">
2979 <a href="/help/internals.changegroups">
2980 changegroups
2980 changegroups
2981 </a>
2981 </a>
2982 </td><td>
2982 </td><td>
2983 Changegroups
2983 Changegroups
2984 </td></tr>
2984 </td></tr>
2985 <tr><td>
2985 <tr><td>
2986 <a href="/help/internals.requirements">
2986 <a href="/help/internals.requirements">
2987 requirements
2987 requirements
2988 </a>
2988 </a>
2989 </td><td>
2989 </td><td>
2990 Repository Requirements
2990 Repository Requirements
2991 </td></tr>
2991 </td></tr>
2992 <tr><td>
2992 <tr><td>
2993 <a href="/help/internals.revlogs">
2993 <a href="/help/internals.revlogs">
2994 revlogs
2994 revlogs
2995 </a>
2995 </a>
2996 </td><td>
2996 </td><td>
2997 Revision Logs
2997 Revision Logs
2998 </td></tr>
2998 </td></tr>
2999 <tr><td>
2999 <tr><td>
3000 <a href="/help/internals.wireprotocol">
3000 <a href="/help/internals.wireprotocol">
3001 wireprotocol
3001 wireprotocol
3002 </a>
3002 </a>
3003 </td><td>
3003 </td><td>
3004 Wire Protocol
3004 Wire Protocol
3005 </td></tr>
3005 </td></tr>
3006
3006
3007
3007
3008
3008
3009
3009
3010
3010
3011 </table>
3011 </table>
3012 </div>
3012 </div>
3013 </div>
3013 </div>
3014
3014
3015
3015
3016
3016
3017 </body>
3017 </body>
3018 </html>
3018 </html>
3019
3019
3020
3020
3021 Sub-topic topics rendered properly
3021 Sub-topic topics rendered properly
3022
3022
3023 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals.changegroups"
3023 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals.changegroups"
3024 200 Script output follows
3024 200 Script output follows
3025
3025
3026 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3026 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3027 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3027 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3028 <head>
3028 <head>
3029 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3029 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3030 <meta name="robots" content="index, nofollow" />
3030 <meta name="robots" content="index, nofollow" />
3031 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3031 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3032 <script type="text/javascript" src="/static/mercurial.js"></script>
3032 <script type="text/javascript" src="/static/mercurial.js"></script>
3033
3033
3034 <title>Help: internals.changegroups</title>
3034 <title>Help: internals.changegroups</title>
3035 </head>
3035 </head>
3036 <body>
3036 <body>
3037
3037
3038 <div class="container">
3038 <div class="container">
3039 <div class="menu">
3039 <div class="menu">
3040 <div class="logo">
3040 <div class="logo">
3041 <a href="https://mercurial-scm.org/">
3041 <a href="https://mercurial-scm.org/">
3042 <img src="/static/hglogo.png" alt="mercurial" /></a>
3042 <img src="/static/hglogo.png" alt="mercurial" /></a>
3043 </div>
3043 </div>
3044 <ul>
3044 <ul>
3045 <li><a href="/shortlog">log</a></li>
3045 <li><a href="/shortlog">log</a></li>
3046 <li><a href="/graph">graph</a></li>
3046 <li><a href="/graph">graph</a></li>
3047 <li><a href="/tags">tags</a></li>
3047 <li><a href="/tags">tags</a></li>
3048 <li><a href="/bookmarks">bookmarks</a></li>
3048 <li><a href="/bookmarks">bookmarks</a></li>
3049 <li><a href="/branches">branches</a></li>
3049 <li><a href="/branches">branches</a></li>
3050 </ul>
3050 </ul>
3051 <ul>
3051 <ul>
3052 <li class="active"><a href="/help">help</a></li>
3052 <li class="active"><a href="/help">help</a></li>
3053 </ul>
3053 </ul>
3054 </div>
3054 </div>
3055
3055
3056 <div class="main">
3056 <div class="main">
3057 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3057 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3058 <h3>Help: internals.changegroups</h3>
3058 <h3>Help: internals.changegroups</h3>
3059
3059
3060 <form class="search" action="/log">
3060 <form class="search" action="/log">
3061
3061
3062 <p><input name="rev" id="search1" type="text" size="30" /></p>
3062 <p><input name="rev" id="search1" type="text" size="30" /></p>
3063 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3063 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3064 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3064 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3065 </form>
3065 </form>
3066 <div id="doc">
3066 <div id="doc">
3067 <h1>Changegroups</h1>
3067 <h1>Changegroups</h1>
3068 <p>
3068 <p>
3069 Changegroups are representations of repository revlog data, specifically
3069 Changegroups are representations of repository revlog data, specifically
3070 the changelog data, root/flat manifest data, treemanifest data, and
3070 the changelog data, root/flat manifest data, treemanifest data, and
3071 filelogs.
3071 filelogs.
3072 </p>
3072 </p>
3073 <p>
3073 <p>
3074 There are 3 versions of changegroups: &quot;1&quot;, &quot;2&quot;, and &quot;3&quot;. From a
3074 There are 3 versions of changegroups: &quot;1&quot;, &quot;2&quot;, and &quot;3&quot;. From a
3075 high-level, versions &quot;1&quot; and &quot;2&quot; are almost exactly the same, with the
3075 high-level, versions &quot;1&quot; and &quot;2&quot; are almost exactly the same, with the
3076 only difference being an additional item in the *delta header*. Version
3076 only difference being an additional item in the *delta header*. Version
3077 &quot;3&quot; adds support for revlog flags in the *delta header* and optionally
3077 &quot;3&quot; adds support for revlog flags in the *delta header* and optionally
3078 exchanging treemanifests (enabled by setting an option on the
3078 exchanging treemanifests (enabled by setting an option on the
3079 &quot;changegroup&quot; part in the bundle2).
3079 &quot;changegroup&quot; part in the bundle2).
3080 </p>
3080 </p>
3081 <p>
3081 <p>
3082 Changegroups when not exchanging treemanifests consist of 3 logical
3082 Changegroups when not exchanging treemanifests consist of 3 logical
3083 segments:
3083 segments:
3084 </p>
3084 </p>
3085 <pre>
3085 <pre>
3086 +---------------------------------+
3086 +---------------------------------+
3087 | | | |
3087 | | | |
3088 | changeset | manifest | filelogs |
3088 | changeset | manifest | filelogs |
3089 | | | |
3089 | | | |
3090 | | | |
3090 | | | |
3091 +---------------------------------+
3091 +---------------------------------+
3092 </pre>
3092 </pre>
3093 <p>
3093 <p>
3094 When exchanging treemanifests, there are 4 logical segments:
3094 When exchanging treemanifests, there are 4 logical segments:
3095 </p>
3095 </p>
3096 <pre>
3096 <pre>
3097 +-------------------------------------------------+
3097 +-------------------------------------------------+
3098 | | | | |
3098 | | | | |
3099 | changeset | root | treemanifests | filelogs |
3099 | changeset | root | treemanifests | filelogs |
3100 | | manifest | | |
3100 | | manifest | | |
3101 | | | | |
3101 | | | | |
3102 +-------------------------------------------------+
3102 +-------------------------------------------------+
3103 </pre>
3103 </pre>
3104 <p>
3104 <p>
3105 The principle building block of each segment is a *chunk*. A *chunk*
3105 The principle building block of each segment is a *chunk*. A *chunk*
3106 is a framed piece of data:
3106 is a framed piece of data:
3107 </p>
3107 </p>
3108 <pre>
3108 <pre>
3109 +---------------------------------------+
3109 +---------------------------------------+
3110 | | |
3110 | | |
3111 | length | data |
3111 | length | data |
3112 | (4 bytes) | (&lt;length - 4&gt; bytes) |
3112 | (4 bytes) | (&lt;length - 4&gt; bytes) |
3113 | | |
3113 | | |
3114 +---------------------------------------+
3114 +---------------------------------------+
3115 </pre>
3115 </pre>
3116 <p>
3116 <p>
3117 All integers are big-endian signed integers. Each chunk starts with a 32-bit
3117 All integers are big-endian signed integers. Each chunk starts with a 32-bit
3118 integer indicating the length of the entire chunk (including the length field
3118 integer indicating the length of the entire chunk (including the length field
3119 itself).
3119 itself).
3120 </p>
3120 </p>
3121 <p>
3121 <p>
3122 There is a special case chunk that has a value of 0 for the length
3122 There is a special case chunk that has a value of 0 for the length
3123 (&quot;0x00000000&quot;). We call this an *empty chunk*.
3123 (&quot;0x00000000&quot;). We call this an *empty chunk*.
3124 </p>
3124 </p>
3125 <h2>Delta Groups</h2>
3125 <h2>Delta Groups</h2>
3126 <p>
3126 <p>
3127 A *delta group* expresses the content of a revlog as a series of deltas,
3127 A *delta group* expresses the content of a revlog as a series of deltas,
3128 or patches against previous revisions.
3128 or patches against previous revisions.
3129 </p>
3129 </p>
3130 <p>
3130 <p>
3131 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
3131 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
3132 to signal the end of the delta group:
3132 to signal the end of the delta group:
3133 </p>
3133 </p>
3134 <pre>
3134 <pre>
3135 +------------------------------------------------------------------------+
3135 +------------------------------------------------------------------------+
3136 | | | | | |
3136 | | | | | |
3137 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
3137 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
3138 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
3138 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
3139 | | | | | |
3139 | | | | | |
3140 +------------------------------------------------------------------------+
3140 +------------------------------------------------------------------------+
3141 </pre>
3141 </pre>
3142 <p>
3142 <p>
3143 Each *chunk*'s data consists of the following:
3143 Each *chunk*'s data consists of the following:
3144 </p>
3144 </p>
3145 <pre>
3145 <pre>
3146 +---------------------------------------+
3146 +---------------------------------------+
3147 | | |
3147 | | |
3148 | delta header | delta data |
3148 | delta header | delta data |
3149 | (various by version) | (various) |
3149 | (various by version) | (various) |
3150 | | |
3150 | | |
3151 +---------------------------------------+
3151 +---------------------------------------+
3152 </pre>
3152 </pre>
3153 <p>
3153 <p>
3154 The *delta data* is a series of *delta*s that describe a diff from an existing
3154 The *delta data* is a series of *delta*s that describe a diff from an existing
3155 entry (either that the recipient already has, or previously specified in the
3155 entry (either that the recipient already has, or previously specified in the
3156 bundlei/changegroup).
3156 bundlei/changegroup).
3157 </p>
3157 </p>
3158 <p>
3158 <p>
3159 The *delta header* is different between versions &quot;1&quot;, &quot;2&quot;, and
3159 The *delta header* is different between versions &quot;1&quot;, &quot;2&quot;, and
3160 &quot;3&quot; of the changegroup format.
3160 &quot;3&quot; of the changegroup format.
3161 </p>
3161 </p>
3162 <p>
3162 <p>
3163 Version 1 (headerlen=80):
3163 Version 1 (headerlen=80):
3164 </p>
3164 </p>
3165 <pre>
3165 <pre>
3166 +------------------------------------------------------+
3166 +------------------------------------------------------+
3167 | | | | |
3167 | | | | |
3168 | node | p1 node | p2 node | link node |
3168 | node | p1 node | p2 node | link node |
3169 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3169 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3170 | | | | |
3170 | | | | |
3171 +------------------------------------------------------+
3171 +------------------------------------------------------+
3172 </pre>
3172 </pre>
3173 <p>
3173 <p>
3174 Version 2 (headerlen=100):
3174 Version 2 (headerlen=100):
3175 </p>
3175 </p>
3176 <pre>
3176 <pre>
3177 +------------------------------------------------------------------+
3177 +------------------------------------------------------------------+
3178 | | | | | |
3178 | | | | | |
3179 | node | p1 node | p2 node | base node | link node |
3179 | node | p1 node | p2 node | base node | link node |
3180 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3180 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3181 | | | | | |
3181 | | | | | |
3182 +------------------------------------------------------------------+
3182 +------------------------------------------------------------------+
3183 </pre>
3183 </pre>
3184 <p>
3184 <p>
3185 Version 3 (headerlen=102):
3185 Version 3 (headerlen=102):
3186 </p>
3186 </p>
3187 <pre>
3187 <pre>
3188 +------------------------------------------------------------------------------+
3188 +------------------------------------------------------------------------------+
3189 | | | | | | |
3189 | | | | | | |
3190 | node | p1 node | p2 node | base node | link node | flags |
3190 | node | p1 node | p2 node | base node | link node | flags |
3191 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
3191 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
3192 | | | | | | |
3192 | | | | | | |
3193 +------------------------------------------------------------------------------+
3193 +------------------------------------------------------------------------------+
3194 </pre>
3194 </pre>
3195 <p>
3195 <p>
3196 The *delta data* consists of &quot;chunklen - 4 - headerlen&quot; bytes, which contain a
3196 The *delta data* consists of &quot;chunklen - 4 - headerlen&quot; bytes, which contain a
3197 series of *delta*s, densely packed (no separators). These deltas describe a diff
3197 series of *delta*s, densely packed (no separators). These deltas describe a diff
3198 from an existing entry (either that the recipient already has, or previously
3198 from an existing entry (either that the recipient already has, or previously
3199 specified in the bundle/changegroup). The format is described more fully in
3199 specified in the bundle/changegroup). The format is described more fully in
3200 &quot;hg help internals.bdiff&quot;, but briefly:
3200 &quot;hg help internals.bdiff&quot;, but briefly:
3201 </p>
3201 </p>
3202 <p>
3202 <pre>
3203 +---------------------------------------------------------------+
3203 +---------------------------------------------------------------+
3204 | | | | |
3204 | | | | |
3205 | start offset | end offset | new length | content |
3205 | start offset | end offset | new length | content |
3206 | (4 bytes) | (4 bytes) | (4 bytes) | (&lt;new length&gt; bytes) |
3206 | (4 bytes) | (4 bytes) | (4 bytes) | (&lt;new length&gt; bytes) |
3207 | | | | |
3207 | | | | |
3208 +---------------------------------------------------------------+
3208 +---------------------------------------------------------------+
3209 </p>
3209 </pre>
3210 <p>
3210 <p>
3211 Please note that the length field in the delta data does *not* include itself.
3211 Please note that the length field in the delta data does *not* include itself.
3212 </p>
3212 </p>
3213 <p>
3213 <p>
3214 In version 1, the delta is always applied against the previous node from
3214 In version 1, the delta is always applied against the previous node from
3215 the changegroup or the first parent if this is the first entry in the
3215 the changegroup or the first parent if this is the first entry in the
3216 changegroup.
3216 changegroup.
3217 </p>
3217 </p>
3218 <p>
3218 <p>
3219 In version 2 and up, the delta base node is encoded in the entry in the
3219 In version 2 and up, the delta base node is encoded in the entry in the
3220 changegroup. This allows the delta to be expressed against any parent,
3220 changegroup. This allows the delta to be expressed against any parent,
3221 which can result in smaller deltas and more efficient encoding of data.
3221 which can result in smaller deltas and more efficient encoding of data.
3222 </p>
3222 </p>
3223 <h2>Changeset Segment</h2>
3223 <h2>Changeset Segment</h2>
3224 <p>
3224 <p>
3225 The *changeset segment* consists of a single *delta group* holding
3225 The *changeset segment* consists of a single *delta group* holding
3226 changelog data. The *empty chunk* at the end of the *delta group* denotes
3226 changelog data. The *empty chunk* at the end of the *delta group* denotes
3227 the boundary to the *manifest segment*.
3227 the boundary to the *manifest segment*.
3228 </p>
3228 </p>
3229 <h2>Manifest Segment</h2>
3229 <h2>Manifest Segment</h2>
3230 <p>
3230 <p>
3231 The *manifest segment* consists of a single *delta group* holding manifest
3231 The *manifest segment* consists of a single *delta group* holding manifest
3232 data. If treemanifests are in use, it contains only the manifest for the
3232 data. If treemanifests are in use, it contains only the manifest for the
3233 root directory of the repository. Otherwise, it contains the entire
3233 root directory of the repository. Otherwise, it contains the entire
3234 manifest data. The *empty chunk* at the end of the *delta group* denotes
3234 manifest data. The *empty chunk* at the end of the *delta group* denotes
3235 the boundary to the next segment (either the *treemanifests segment* or the
3235 the boundary to the next segment (either the *treemanifests segment* or the
3236 *filelogs segment*, depending on version and the request options).
3236 *filelogs segment*, depending on version and the request options).
3237 </p>
3237 </p>
3238 <h3>Treemanifests Segment</h3>
3238 <h3>Treemanifests Segment</h3>
3239 <p>
3239 <p>
3240 The *treemanifests segment* only exists in changegroup version &quot;3&quot;, and
3240 The *treemanifests segment* only exists in changegroup version &quot;3&quot;, and
3241 only if the 'treemanifest' param is part of the bundle2 changegroup part
3241 only if the 'treemanifest' param is part of the bundle2 changegroup part
3242 (it is not possible to use changegroup version 3 outside of bundle2).
3242 (it is not possible to use changegroup version 3 outside of bundle2).
3243 Aside from the filenames in the *treemanifests segment* containing a
3243 Aside from the filenames in the *treemanifests segment* containing a
3244 trailing &quot;/&quot; character, it behaves identically to the *filelogs segment*
3244 trailing &quot;/&quot; character, it behaves identically to the *filelogs segment*
3245 (see below). The final sub-segment is followed by an *empty chunk* (logically,
3245 (see below). The final sub-segment is followed by an *empty chunk* (logically,
3246 a sub-segment with filename size 0). This denotes the boundary to the
3246 a sub-segment with filename size 0). This denotes the boundary to the
3247 *filelogs segment*.
3247 *filelogs segment*.
3248 </p>
3248 </p>
3249 <h2>Filelogs Segment</h2>
3249 <h2>Filelogs Segment</h2>
3250 <p>
3250 <p>
3251 The *filelogs segment* consists of multiple sub-segments, each
3251 The *filelogs segment* consists of multiple sub-segments, each
3252 corresponding to an individual file whose data is being described:
3252 corresponding to an individual file whose data is being described:
3253 </p>
3253 </p>
3254 <pre>
3254 <pre>
3255 +--------------------------------------------------+
3255 +--------------------------------------------------+
3256 | | | | | |
3256 | | | | | |
3257 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
3257 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
3258 | | | | | (4 bytes) |
3258 | | | | | (4 bytes) |
3259 | | | | | |
3259 | | | | | |
3260 +--------------------------------------------------+
3260 +--------------------------------------------------+
3261 </pre>
3261 </pre>
3262 <p>
3262 <p>
3263 The final filelog sub-segment is followed by an *empty chunk* (logically,
3263 The final filelog sub-segment is followed by an *empty chunk* (logically,
3264 a sub-segment with filename size 0). This denotes the end of the segment
3264 a sub-segment with filename size 0). This denotes the end of the segment
3265 and of the overall changegroup.
3265 and of the overall changegroup.
3266 </p>
3266 </p>
3267 <p>
3267 <p>
3268 Each filelog sub-segment consists of the following:
3268 Each filelog sub-segment consists of the following:
3269 </p>
3269 </p>
3270 <pre>
3270 <pre>
3271 +------------------------------------------------------+
3271 +------------------------------------------------------+
3272 | | | |
3272 | | | |
3273 | filename length | filename | delta group |
3273 | filename length | filename | delta group |
3274 | (4 bytes) | (&lt;length - 4&gt; bytes) | (various) |
3274 | (4 bytes) | (&lt;length - 4&gt; bytes) | (various) |
3275 | | | |
3275 | | | |
3276 +------------------------------------------------------+
3276 +------------------------------------------------------+
3277 </pre>
3277 </pre>
3278 <p>
3278 <p>
3279 That is, a *chunk* consisting of the filename (not terminated or padded)
3279 That is, a *chunk* consisting of the filename (not terminated or padded)
3280 followed by N chunks constituting the *delta group* for this file. The
3280 followed by N chunks constituting the *delta group* for this file. The
3281 *empty chunk* at the end of each *delta group* denotes the boundary to the
3281 *empty chunk* at the end of each *delta group* denotes the boundary to the
3282 next filelog sub-segment.
3282 next filelog sub-segment.
3283 </p>
3283 </p>
3284
3284
3285 </div>
3285 </div>
3286 </div>
3286 </div>
3287 </div>
3287 </div>
3288
3288
3289
3289
3290
3290
3291 </body>
3291 </body>
3292 </html>
3292 </html>
3293
3293
3294
3294
3295 $ killdaemons.py
3295 $ killdaemons.py
3296
3296
3297 #endif
3297 #endif
General Comments 0
You need to be logged in to leave comments. Login now