Mercurial > hg > mercurial-crew-with-dirclash
annotate doc/hg.1.txt @ 595:c2c2c6d617bd
Expand undo docs
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Expand undo docs
manifest hash: 4381a35ef96ce10176dde3c9c6c2503f65ae8a09
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCyD93ywK+sNU5EO8RAianAJ97+hYOTwV3OvAAekcYn3f1Ahzf4ACeLjgz
kUAHrjSmhs2F421lXxbgCfw=
=gbg9
-----END PGP SIGNATURE-----
author | mpm@selenic.com |
---|---|
date | Sun, 03 Jul 2005 11:41:43 -0800 |
parents | 0c3bae18403b |
children | 8e82fd763be2 |
rev | line source |
---|---|
177 | 1 HG(1) |
2 ===== | |
3 Matt Mackall <mpm@selenic.com> | |
4 | |
5 NAME | |
6 ---- | |
438 | 7 hg - Mercurial source code management system |
177 | 8 |
9 SYNOPSIS | |
10 -------- | |
11 'hg' [-v -d -q -y] <command> [command options] [files] | |
12 | |
13 DESCRIPTION | |
14 ----------- | |
15 The hg(1) command provides a command line interface to the Mercurial system. | |
16 | |
17 OPTIONS | |
18 ------- | |
438 | 19 |
177 | 20 --debug, -d:: |
21 enable debugging output | |
22 | |
23 --quiet, -q:: | |
24 suppress output | |
25 | |
26 --verbose, -v:: | |
27 enable additional output | |
28 | |
29 --noninteractive, -y:: | |
30 do not prompt, assume 'yes' for any required answers | |
31 | |
32 COMMAND ELEMENTS | |
33 ---------------- | |
34 | |
35 files ...:: | |
36 indicates one or more filename or relative path filenames | |
37 | |
38 path:: | |
39 indicates a path on the local machine | |
40 | |
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
41 revision:: |
438 | 42 indicates a changeset which can be specified as a changeset revision |
43 number, a tag, or a unique substring of the changeset hash value | |
177 | 44 |
45 repository path:: | |
498 | 46 either the pathname of a local repository or the URI of a remote |
181
038e4d8602bd
updated for .hgpaths and http/old-http protocol name change
jake@edge2.net
parents:
177
diff
changeset
|
47 repository. There are two available URI protocols, http:// which is |
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
48 fast and the old-http:// protocol which is much slower but does not |
438 | 49 require a special server on the web host. |
177 | 50 |
51 COMMANDS | |
52 -------- | |
438 | 53 |
177 | 54 add [files ...]:: |
497 | 55 Schedule files to be version controlled and added to the repository. |
56 | |
498 | 57 The files will be added to the repository at the next commit. |
177 | 58 |
59 addremove:: | |
497 | 60 Add all new files and remove all missing files from the repository. |
61 | |
62 New files are ignored if they match any of the patterns in .hgignore. As | |
498 | 63 with add, these changes take effect at the next commit. |
177 | 64 |
438 | 65 annotate [-r <rev> -u -n -c] [files ...]:: |
497 | 66 List changes in files, showing the revision id responsible for each line |
67 | |
68 This command is useful to discover who did a change or when a change took | |
69 place. | |
70 | |
438 | 71 options: |
72 -r, --revision <rev> annotate the specified revision | |
73 -u, --user list the author | |
74 -c, --changeset list the changeset | |
75 -n, --number list the revision number (default) | |
177 | 76 |
438 | 77 cat <file> [revision]:: |
497 | 78 Output to stdout the given revision for the specified file. |
79 | |
498 | 80 If no revision is given then the tip is used. |
177 | 81 |
485 | 82 clone [-U] <source> [dest]:: |
497 | 83 Create a copy of an existing repository in a new directory. |
84 | |
523
003df62ae39f
[PATCH] Force "hg clone" to always create a new directory
mpm@selenic.com
parents:
509
diff
changeset
|
85 If no destination directory name is specified, it defaults to the |
003df62ae39f
[PATCH] Force "hg clone" to always create a new directory
mpm@selenic.com
parents:
509
diff
changeset
|
86 basename of the source. |
497 | 87 |
498 | 88 The source is added to the new repository's .hg/hgrc file to be used in |
497 | 89 future pulls. |
90 | |
498 | 91 For efficiency, hardlinks are used for cloning whenever the |
92 source and destination are on the same filesystem. | |
497 | 93 |
94 options: | |
505 | 95 -U, --noupdate do not update the new working directory |
497 | 96 |
97 commit [-A -t -l <file> -t <text> -u <user> -d <datecode>] [files...]:: | |
498 | 98 Commit changes to the given files into the repository. |
497 | 99 |
498 | 100 If a list of files is omitted, all changes reported by "hg status" |
101 will be commited. | |
497 | 102 |
498 | 103 The HGEDITOR or EDITOR environment variables are used to start an |
104 editor to add a commit comment. | |
497 | 105 |
106 Options: | |
107 | |
108 -A, --addremove run addremove during commit | |
109 -t, --text <text> use <text> as commit message | |
110 -l, --logfile <file> show the commit message for the given file | |
111 -d, --date <datecode> record datecode as commit date | |
112 -u, --user <user> record user as commiter | |
113 | |
114 aliases: ci | |
115 | |
116 copy <source> <dest>:: | |
117 Mark <dest> file as a copy or rename of a <source> one | |
118 | |
119 This command takes effect for the next commit. | |
120 | |
121 diff [-r revision] [-r revision] [files ...]:: | |
122 Show differences between revisions for the specified files. | |
123 | |
124 Differences between files are shown using the unified diff format. | |
125 | |
498 | 126 When two revision arguments are given, then changes are shown |
127 between those revisions. If only one revision is specified then | |
128 that revision is compared to the working directory, and, when no | |
129 revisions are specified, the working directory files are compared | |
130 to its parent. | |
497 | 131 |
580 | 132 export [-o filespec] [revision] ...:: |
133 Print the changeset header and diffs for one or more revisions. | |
134 | |
135 The information shown in the changeset header is: author, | |
136 changeset hash, parent and commit comment. | |
137 | |
138 Output may be to a file, in which case the name of the file is | |
139 given using a format string. The formatting rules are as follows: | |
497 | 140 |
580 | 141 %% literal "%" character |
142 %H changeset hash (40 bytes of hexadecimal) | |
143 %N number of patches being generated | |
144 %R changeset revision number | |
145 %b basename of the exporting repository | |
146 %h short-form changeset hash (12 bytes of hexadecimal) | |
147 %n zero-padded sequence number, starting at 1 | |
148 %r zero-padded changeset revision number | |
149 | |
150 Options: | |
151 | |
152 -o, --output <filespec> print output to file with formatted named | |
497 | 153 |
154 forget [files]:: | |
155 Undo an 'hg add' scheduled for the next commit. | |
156 | |
157 heads:: | |
158 Show all repository head changesets. | |
159 | |
498 | 160 Repository "heads" are changesets that don't have children |
161 changesets. They are where development generally takes place and | |
162 are the usual targets for update and merge operations. | |
497 | 163 |
164 identify:: | |
165 Print a short summary of the current state of the repo. | |
166 | |
167 This summary identifies the repository state using one or two parent | |
168 hash identifiers, followed by a "+" if there are uncommitted changes | |
169 in the working directory, followed by a list of tags for this revision. | |
170 | |
171 aliases: id | |
172 | |
173 import [-p <n> -b <base> -q] <patches>:: | |
174 Import a list of patches and commit them individually. | |
175 | |
176 options: | |
177 -p, --strip <n> directory strip option for patch. This has the same | |
178 meaning as the correnponding patch option | |
179 -b <path> base directory to read patches from | |
180 | |
181 aliases: patch | |
182 | |
496 | 183 init:: |
184 Initialize a new repository in the current directory. | |
177 | 185 |
552
2204311609a0
Allow specifying revisions in 'hg log' like with 'hg diff'.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
523
diff
changeset
|
186 log [-r revision ...] [file]:: |
509 | 187 Print the revision history of the specified file or the entire project. |
177 | 188 |
509 | 189 By default this command outputs: changeset id and hash, tags, |
190 parents, user, date and time, and a summary for each commit. The | |
191 -v switch adds some more detail, such as changed files, manifest | |
192 hashes or message signatures. | |
193 | |
552
2204311609a0
Allow specifying revisions in 'hg log' like with 'hg diff'.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
523
diff
changeset
|
194 When a revision argument is given, only this file or changelog revision |
2204311609a0
Allow specifying revisions in 'hg log' like with 'hg diff'.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
523
diff
changeset
|
195 is displayed. With two revision arguments all revisions in this range |
2204311609a0
Allow specifying revisions in 'hg log' like with 'hg diff'.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
523
diff
changeset
|
196 are listed. Additional revision arguments may be given repeating the above |
2204311609a0
Allow specifying revisions in 'hg log' like with 'hg diff'.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
523
diff
changeset
|
197 cycle. |
2204311609a0
Allow specifying revisions in 'hg log' like with 'hg diff'.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
523
diff
changeset
|
198 |
509 | 199 aliases: history |
497 | 200 |
438 | 201 manifest [revision]:: |
497 | 202 Print a list of version controlled files for the given revision. |
203 | |
204 The manifest is the list of files being version controlled. If no revision | |
205 is given then the tip is used. | |
438 | 206 |
207 parents:: | |
208 Print the working directory's parent revisions. | |
209 | |
210 pull <repository path>:: | |
498 | 211 Pull changes from a remote repository to a local one. |
497 | 212 |
498 | 213 This finds all changes from the repository at the specified path |
214 or URL and adds them to the local repository. By default, this | |
215 does not update the copy of the project in the working directory. | |
438 | 216 |
217 options: | |
218 -u, --update update the working directory to tip after pull | |
219 | |
220 push <destination>:: | |
497 | 221 Push changes from the local repository to the given destination. |
222 | |
498 | 223 This is the symmetrical operation for pull. It helps to move |
224 changes from the current repository to a different one. If the | |
225 destination is local this is identical to a pull in that directory | |
226 from the current one. | |
438 | 227 |
228 The other currently available push method is SSH. This requires an | |
229 accessible shell account on the destination machine and a copy of | |
230 hg in the remote path. Destinations are specified in the following | |
231 form: | |
232 | |
233 ssh://[user@]host[:port]/path | |
234 | |
235 rawcommit [-p -d -u -F -t -l]:: | |
497 | 236 Lowlevel commit, for use in helper scripts. |
237 | |
238 This command is not intended to be used by normal users, as it is | |
239 primarily useful for importing from other SCMs. | |
177 | 240 |
196
48827121af7e
add export, recover, and undo to the man page
jake@edge2.net
parents:
182
diff
changeset
|
241 recover:: |
497 | 242 Recover from an interrupted commit or pull. |
243 | |
244 This command tries to fix the repository status after an interrupted | |
245 operation. It should only be necessary when Mercurial suggests it. | |
196
48827121af7e
add export, recover, and undo to the man page
jake@edge2.net
parents:
182
diff
changeset
|
246 |
177 | 247 remove [files ...]:: |
497 | 248 Schedule the indicated files for removal from the repository. |
249 | |
498 | 250 This command shedules the files to be removed at the next commit. |
251 This only removes files from the current branch, not from the | |
252 entire project history. | |
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
253 |
438 | 254 aliases: rm |
177 | 255 |
588 | 256 revert [names ...]:: |
257 Revert any uncommitted modifications made to the named files or | |
258 directories. This restores the contents of the affected files to | |
259 an unmodified state. | |
260 | |
261 If a file has been deleted, it is recreated. If the executable | |
262 mode of a file was changed, it is reset. | |
263 | |
264 If a directory is given, all files in that directory and its | |
265 subdirectories are reverted. | |
266 | |
267 If no arguments are given, all files in the current directory and | |
268 its subdirectories are reverted. | |
269 | |
270 options: | |
271 -r, --rev <rev> revision to revert to | |
272 -n, --nonrecursive do not recurse into subdirectories | |
273 | |
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
274 root:: |
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
275 Print the root directory of the current repository. |
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
276 |
177 | 277 serve [-a addr -n name -p port -t templatedir]:: |
438 | 278 Start a local HTTP repository browser and pull server. |
279 | |
280 options: | |
281 -a, --address <addr> address to use | |
282 -p, --port <n> port to use (default: 8000) | |
283 -n, --name <name> name to show in web pages (default: working dir) | |
284 -t, --templatedir <path> web templates to use | |
177 | 285 |
286 status:: | |
438 | 287 Show changed files in the working directory. |
288 | |
497 | 289 The codes used to show the status of files are: |
290 | |
438 | 291 C = changed |
292 A = added | |
293 R = removed | |
294 ? = not tracked | |
295 | |
296 tag [-t <text> -d <datecode> -u <user>] <name> [revision]:: | |
497 | 297 Name a particular revision using <name>. |
298 | |
299 Tags are used to name particular revisions of the repository and are | |
300 very useful to compare different revision, to go back to significant | |
498 | 301 earlier versions or to mark branch points as releases, etc. |
497 | 302 |
498 | 303 If no revision is given, the tip is used. |
438 | 304 |
498 | 305 To facilitate version control, distribution, and merging of tags, |
306 they are stored as a file named ".hgtags" which is managed | |
307 similarly to other project files and can be hand-edited if | |
308 necessary. | |
309 | |
438 | 310 options: |
311 -t, --text <text> message for tag commit log entry | |
312 -d, --date <datecode> datecode for commit | |
313 -u, --user <user> user for commit | |
177 | 314 |
498 | 315 Note: Mercurial also has support for "local tags" that are not |
316 version-controlled or distributed which are stored in the .hg/hgrc | |
317 file. | |
318 | |
177 | 319 tags:: |
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
320 List the repository tags. |
438 | 321 |
498 | 322 This lists both regular and local tags. |
497 | 323 |
438 | 324 tip:: |
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
325 Show the tip revision. |
177 | 326 |
196
48827121af7e
add export, recover, and undo to the man page
jake@edge2.net
parents:
182
diff
changeset
|
327 undo:: |
438 | 328 Undo the last commit or pull transaction. |
329 | |
595 | 330 Roll back the last pull or commit transaction on the |
331 repository, restoring the project to its earlier state. | |
332 | |
333 This command should be used with care. There is only one level of | |
334 undo and there is no redo. | |
335 | |
336 This command is not intended for use on public repositories. Once | |
337 a change is visible for pull by other users, undoing it locally is | |
338 ineffective. | |
339 | |
438 | 340 update [-m -C] [revision]:: |
498 | 341 Update the working directory to the specified revision. |
438 | 342 |
498 | 343 By default, update will refuse to run if doing so would require |
344 merging or discarding local changes. | |
345 | |
346 With the -m option, a merge will be performed. | |
347 | |
348 With the -C option, local changes will be lost. | |
497 | 349 |
438 | 350 options: |
351 -m, --merge allow merging of branches | |
352 -C, --clean overwrite locally modified files | |
353 | |
354 aliases: up checkout co | |
355 | |
356 verify:: | |
357 Verify the integrity of the current repository. | |
358 | |
359 This will perform an extensive check of the repository's | |
360 integrity, validating the hashes and checksums of each entry in | |
361 the changelog, manifest, and tracked files, as well as the | |
362 integrity of their crosslinks and indices. | |
363 | |
580 | 364 SPECIFYING SINGLE REVISIONS |
365 --------------------------- | |
366 | |
367 Mercurial accepts several notations for identifying individual | |
368 revisions. | |
369 | |
370 A plain integer is treated as a revision number. Negative | |
371 integers are treated as offsets from the tip, with -1 denoting the | |
372 tip. | |
373 | |
374 A 40-digit hexadecimal string is treated as a unique revision | |
375 identifier. | |
376 | |
377 A hexadecimal string less than 40 characters long is treated as a | |
378 unique revision identifier, and referred to as a short-form | |
379 identifier. A short-form identifier is only valid if it is the | |
380 prefix of one full-length identifier. | |
381 | |
382 Any other string is treated as a tag name, which is a symbolic | |
383 name associated with a revision identifier. Tag names may not | |
384 contain the ":" character. | |
385 | |
386 The reserved name "tip" is a special tag that always identifies | |
387 the most recent revision. | |
388 | |
389 SPECIFYING MULTIPLE REVISIONS | |
390 ----------------------------- | |
391 | |
392 When Mercurial accepts more than one revision, they may be | |
393 specified individually, or provided as a continuous range, | |
394 separated by the ":" character. | |
395 | |
396 The syntax of range notation is [BEGIN]:[END], where BEGIN and END | |
397 are revision identifiers. Both BEGIN and END are optional. If | |
398 BEGIN is not specified, it defaults to revision number 0. If END | |
399 is not specified, it defaults to the tip. The range ":" thus | |
400 means "all revisions". | |
401 | |
402 If BEGIN is greater than END, revisions are treated in reverse | |
403 order. | |
404 | |
405 A range acts as an open interval. This means that a range of 3:5 | |
406 gives 3, 4 and 5. Similarly, a range of 4:2 gives 4, 3, and 2. | |
196
48827121af7e
add export, recover, and undo to the man page
jake@edge2.net
parents:
182
diff
changeset
|
407 |
177 | 408 ENVIRONMENT VARIABLES |
409 --------------------- | |
438 | 410 |
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
411 HGEDITOR:: |
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
412 This is the name of the editor to use when committing. Defaults to the |
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
413 value of EDITOR. |
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
414 |
177 | 415 HGMERGE:: |
498 | 416 An executable to use for resolving merge conflicts. The program |
438 | 417 will be executed with three arguments: local file, remote file, |
418 ancestor file. | |
419 | |
420 The default program is "hgmerge", which is a shell script provided | |
421 by Mercurial with some sensible defaults. | |
177 | 422 |
423 HGUSER:: | |
438 | 424 This is the string used for the author of a commit. |
177 | 425 |
426 EMAIL:: | |
438 | 427 If HGUSER is not set, this will be used as the author for a commit. |
177 | 428 |
429 LOGNAME:: | |
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
430 If neither HGUSER nor EMAIL is set, LOGNAME will be used (with |
438 | 431 '@hostname' appended) as the author value for a commit. |
177 | 432 |
433 EDITOR:: | |
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
434 This is the name of the editor used in the hgmerge script. It will be |
498 | 435 used for commit messages if HGEDITOR isn't set. Defaults to 'vi'. |
438 | 436 |
437 PYTHONPATH:: | |
438 This is used by Python to find imported modules and may need to be set | |
439 appropriately if Mercurial is not installed system-wide. | |
177 | 440 |
441 FILES | |
442 ----- | |
443 .hgignore:: | |
438 | 444 This file contains regular expressions (one per line) that describe file |
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
445 names that should be ignored by hg. |
177 | 446 |
447 .hgtags:: | |
438 | 448 This file contains changeset hash values and text tag names (one of each |
177 | 449 seperated by spaces) that correspond to tagged versions of the repository |
450 contents. | |
451 | |
438 | 452 $HOME/.hgrc, .hg/hgrc:: |
453 This file contains defaults and configuration. Values in .hg/hgrc | |
454 override those in .hgrc. | |
455 | |
456 NAMED REPOSITORIES | |
457 ------------------ | |
458 | |
487 | 459 To give symbolic names to a repository, create a section in .hgrc |
460 or .hg/hgrc containing assignments of names to paths. Example: | |
438 | 461 |
487 | 462 ----------------- |
438 | 463 [paths] |
464 hg = http://selenic.com/hg | |
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
465 tah = http://hg.intevation.org/mercurial-tah/ |
487 | 466 ----------------- |
467 | |
468 | |
498 | 469 LOCAL TAGS |
470 ---------- | |
471 | |
472 To create tags that are local to the repository and not distributed or | |
473 version-controlled, create an hgrc section like the following: | |
474 | |
475 ---------------- | |
476 [tags] | |
477 working = 2dcced388cab3677a8f543c3c47a0ad34ac9d435 | |
478 tested = 12e0fdbc57a0be78f0e817fd1d170a3615cd35da | |
479 ---------------- | |
480 | |
481 | |
487 | 482 HOOKS |
483 ----- | |
484 | |
485 Mercurial supports a set of 'hook', commands that get automatically | |
486 executed by various actions such as starting or finishing a commit. To | |
487 specify a hook, simply create an hgrc section like the following: | |
488 | |
489 ----------------- | |
490 [hooks] | |
491 precommit = echo "this hook gets executed immediately before a commit" | |
492 commit = hg export $NODE | mail -s "new commit $NODE" commit-list | |
493 ----------------- | |
494 | |
181
038e4d8602bd
updated for .hgpaths and http/old-http protocol name change
jake@edge2.net
parents:
177
diff
changeset
|
495 |
321 | 496 NON_TRANSPARENT PROXY SUPPORT |
438 | 497 ----------------------------- |
321 | 498 |
487 | 499 To access a Mercurial repository through a proxy, create a file |
500 $HOME/.hgrc in the following format: | |
321 | 501 |
487 | 502 -------------- |
321 | 503 [http_proxy] |
504 host=myproxy:8080 | |
505 user=<username> | |
506 passwd=<password> | |
507 no=<localhost1>,<localhost2>,<localhost3>,... | |
487 | 508 -------------- |
321 | 509 |
498 | 510 "user" and "passwd" fields are used for authenticating proxies, "no" is a |
511 comma-separated list of local host names to not proxy. | |
321 | 512 |
177 | 513 BUGS |
514 ---- | |
515 Probably lots, please post them to the mailing list (See Resources below) | |
516 when you find them. | |
517 | |
518 AUTHOR | |
519 ------ | |
520 Written by Matt Mackall <mpm@selenic.com> | |
521 | |
522 RESOURCES | |
523 --------- | |
524 http://selenic.com/mercurial[Main Web Site] | |
525 | |
526 http://selenic.com/hg[Source code repository] | |
527 | |
528 http://selenic.com/mailman/listinfo/mercurial[Mailing list] | |
529 | |
530 COPYING | |
531 ------- | |
532 Copyright (C) 2005 Matt Mackall. | |
533 Free use of this software is granted under the terms of the GNU General | |
534 Public License (GPL). |