author | mpm@selenic.com |
Fri, 01 Jul 2005 09:01:07 -0800 | |
changeset 558 | 0ceea19182a9 |
parent 553 | f2442a6a5893 |
child 580 | 353a2ce50423 |
permissions | -rw-r--r-- |
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 |
|
132 |
export [revision]:: |
|
133 |
Print the changeset header and diffs for a particular revision. |
|
134 |
||
135 |
The information shown in the changeset header is: author, changeset hash, |
|
136 |
parent and commit comment. |
|
137 |
||
138 |
forget [files]:: |
|
139 |
Undo an 'hg add' scheduled for the next commit. |
|
140 |
||
141 |
heads:: |
|
142 |
Show all repository head changesets. |
|
143 |
||
498 | 144 |
Repository "heads" are changesets that don't have children |
145 |
changesets. They are where development generally takes place and |
|
146 |
are the usual targets for update and merge operations. |
|
497 | 147 |
|
148 |
identify:: |
|
149 |
Print a short summary of the current state of the repo. |
|
150 |
||
151 |
This summary identifies the repository state using one or two parent |
|
152 |
hash identifiers, followed by a "+" if there are uncommitted changes |
|
153 |
in the working directory, followed by a list of tags for this revision. |
|
154 |
||
155 |
aliases: id |
|
156 |
||
157 |
import [-p <n> -b <base> -q] <patches>:: |
|
158 |
Import a list of patches and commit them individually. |
|
159 |
||
160 |
options: |
|
161 |
-p, --strip <n> directory strip option for patch. This has the same |
|
162 |
meaning as the correnponding patch option |
|
163 |
-b <path> base directory to read patches from |
|
164 |
||
165 |
aliases: patch |
|
166 |
||
496 | 167 |
init:: |
168 |
Initialize a new repository in the current directory. |
|
177 | 169 |
|
552
2204311609a0
Allow specifying revisions in 'hg log' like with 'hg diff'.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
523
diff
changeset
|
170 |
log [-r revision ...] [file]:: |
509 | 171 |
Print the revision history of the specified file or the entire project. |
177 | 172 |
|
509 | 173 |
By default this command outputs: changeset id and hash, tags, |
174 |
parents, user, date and time, and a summary for each commit. The |
|
175 |
-v switch adds some more detail, such as changed files, manifest |
|
176 |
hashes or message signatures. |
|
177 |
||
552
2204311609a0
Allow specifying revisions in 'hg log' like with 'hg diff'.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
523
diff
changeset
|
178 |
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
|
179 |
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
|
180 |
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
|
181 |
cycle. |
2204311609a0
Allow specifying revisions in 'hg log' like with 'hg diff'.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
523
diff
changeset
|
182 |
|
509 | 183 |
aliases: history |
497 | 184 |
|
438 | 185 |
manifest [revision]:: |
497 | 186 |
Print a list of version controlled files for the given revision. |
187 |
||
188 |
The manifest is the list of files being version controlled. If no revision |
|
189 |
is given then the tip is used. |
|
438 | 190 |
|
191 |
parents:: |
|
192 |
Print the working directory's parent revisions. |
|
193 |
||
194 |
pull <repository path>:: |
|
498 | 195 |
Pull changes from a remote repository to a local one. |
497 | 196 |
|
498 | 197 |
This finds all changes from the repository at the specified path |
198 |
or URL and adds them to the local repository. By default, this |
|
199 |
does not update the copy of the project in the working directory. |
|
438 | 200 |
|
201 |
options: |
|
202 |
-u, --update update the working directory to tip after pull |
|
203 |
||
204 |
push <destination>:: |
|
497 | 205 |
Push changes from the local repository to the given destination. |
206 |
||
498 | 207 |
This is the symmetrical operation for pull. It helps to move |
208 |
changes from the current repository to a different one. If the |
|
209 |
destination is local this is identical to a pull in that directory |
|
210 |
from the current one. |
|
438 | 211 |
|
212 |
The other currently available push method is SSH. This requires an |
|
213 |
accessible shell account on the destination machine and a copy of |
|
214 |
hg in the remote path. Destinations are specified in the following |
|
215 |
form: |
|
216 |
||
217 |
ssh://[user@]host[:port]/path |
|
218 |
||
219 |
rawcommit [-p -d -u -F -t -l]:: |
|
497 | 220 |
Lowlevel commit, for use in helper scripts. |
221 |
||
222 |
This command is not intended to be used by normal users, as it is |
|
223 |
primarily useful for importing from other SCMs. |
|
177 | 224 |
|
196
48827121af7e
add export, recover, and undo to the man page
jake@edge2.net
parents:
182
diff
changeset
|
225 |
recover:: |
497 | 226 |
Recover from an interrupted commit or pull. |
227 |
||
228 |
This command tries to fix the repository status after an interrupted |
|
229 |
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
|
230 |
|
177 | 231 |
remove [files ...]:: |
497 | 232 |
Schedule the indicated files for removal from the repository. |
233 |
||
498 | 234 |
This command shedules the files to be removed at the next commit. |
235 |
This only removes files from the current branch, not from the |
|
236 |
entire project history. |
|
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
237 |
|
438 | 238 |
aliases: rm |
177 | 239 |
|
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
240 |
root:: |
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
241 |
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
|
242 |
|
177 | 243 |
serve [-a addr -n name -p port -t templatedir]:: |
438 | 244 |
Start a local HTTP repository browser and pull server. |
245 |
||
246 |
options: |
|
247 |
-a, --address <addr> address to use |
|
248 |
-p, --port <n> port to use (default: 8000) |
|
249 |
-n, --name <name> name to show in web pages (default: working dir) |
|
250 |
-t, --templatedir <path> web templates to use |
|
177 | 251 |
|
252 |
status:: |
|
438 | 253 |
Show changed files in the working directory. |
254 |
||
497 | 255 |
The codes used to show the status of files are: |
256 |
||
438 | 257 |
C = changed |
258 |
A = added |
|
259 |
R = removed |
|
260 |
? = not tracked |
|
261 |
||
262 |
tag [-t <text> -d <datecode> -u <user>] <name> [revision]:: |
|
497 | 263 |
Name a particular revision using <name>. |
264 |
||
265 |
Tags are used to name particular revisions of the repository and are |
|
266 |
very useful to compare different revision, to go back to significant |
|
498 | 267 |
earlier versions or to mark branch points as releases, etc. |
497 | 268 |
|
498 | 269 |
If no revision is given, the tip is used. |
438 | 270 |
|
498 | 271 |
To facilitate version control, distribution, and merging of tags, |
272 |
they are stored as a file named ".hgtags" which is managed |
|
273 |
similarly to other project files and can be hand-edited if |
|
274 |
necessary. |
|
275 |
||
438 | 276 |
options: |
277 |
-t, --text <text> message for tag commit log entry |
|
278 |
-d, --date <datecode> datecode for commit |
|
279 |
-u, --user <user> user for commit |
|
177 | 280 |
|
498 | 281 |
Note: Mercurial also has support for "local tags" that are not |
282 |
version-controlled or distributed which are stored in the .hg/hgrc |
|
283 |
file. |
|
284 |
||
177 | 285 |
tags:: |
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
286 |
List the repository tags. |
438 | 287 |
|
498 | 288 |
This lists both regular and local tags. |
497 | 289 |
|
438 | 290 |
tip:: |
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
291 |
Show the tip revision. |
177 | 292 |
|
196
48827121af7e
add export, recover, and undo to the man page
jake@edge2.net
parents:
182
diff
changeset
|
293 |
undo:: |
438 | 294 |
Undo the last commit or pull transaction. |
295 |
||
296 |
update [-m -C] [revision]:: |
|
498 | 297 |
Update the working directory to the specified revision. |
438 | 298 |
|
498 | 299 |
By default, update will refuse to run if doing so would require |
300 |
merging or discarding local changes. |
|
301 |
||
302 |
With the -m option, a merge will be performed. |
|
303 |
||
304 |
With the -C option, local changes will be lost. |
|
497 | 305 |
|
438 | 306 |
options: |
307 |
-m, --merge allow merging of branches |
|
308 |
-C, --clean overwrite locally modified files |
|
309 |
||
310 |
aliases: up checkout co |
|
311 |
||
312 |
verify:: |
|
313 |
Verify the integrity of the current repository. |
|
314 |
||
315 |
This will perform an extensive check of the repository's |
|
316 |
integrity, validating the hashes and checksums of each entry in |
|
317 |
the changelog, manifest, and tracked files, as well as the |
|
318 |
integrity of their crosslinks and indices. |
|
319 |
||
196
48827121af7e
add export, recover, and undo to the man page
jake@edge2.net
parents:
182
diff
changeset
|
320 |
|
177 | 321 |
ENVIRONMENT VARIABLES |
322 |
--------------------- |
|
438 | 323 |
|
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
324 |
HGEDITOR:: |
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
325 |
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
|
326 |
value of EDITOR. |
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
327 |
|
177 | 328 |
HGMERGE:: |
498 | 329 |
An executable to use for resolving merge conflicts. The program |
438 | 330 |
will be executed with three arguments: local file, remote file, |
331 |
ancestor file. |
|
332 |
||
333 |
The default program is "hgmerge", which is a shell script provided |
|
334 |
by Mercurial with some sensible defaults. |
|
177 | 335 |
|
336 |
HGUSER:: |
|
438 | 337 |
This is the string used for the author of a commit. |
177 | 338 |
|
339 |
EMAIL:: |
|
438 | 340 |
If HGUSER is not set, this will be used as the author for a commit. |
177 | 341 |
|
342 |
LOGNAME:: |
|
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
343 |
If neither HGUSER nor EMAIL is set, LOGNAME will be used (with |
438 | 344 |
'@hostname' appended) as the author value for a commit. |
177 | 345 |
|
346 |
EDITOR:: |
|
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
347 |
This is the name of the editor used in the hgmerge script. It will be |
498 | 348 |
used for commit messages if HGEDITOR isn't set. Defaults to 'vi'. |
438 | 349 |
|
350 |
PYTHONPATH:: |
|
351 |
This is used by Python to find imported modules and may need to be set |
|
352 |
appropriately if Mercurial is not installed system-wide. |
|
177 | 353 |
|
354 |
FILES |
|
355 |
----- |
|
356 |
.hgignore:: |
|
438 | 357 |
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
|
358 |
names that should be ignored by hg. |
177 | 359 |
|
360 |
.hgtags:: |
|
438 | 361 |
This file contains changeset hash values and text tag names (one of each |
177 | 362 |
seperated by spaces) that correspond to tagged versions of the repository |
363 |
contents. |
|
364 |
||
438 | 365 |
$HOME/.hgrc, .hg/hgrc:: |
366 |
This file contains defaults and configuration. Values in .hg/hgrc |
|
367 |
override those in .hgrc. |
|
368 |
||
369 |
NAMED REPOSITORIES |
|
370 |
------------------ |
|
371 |
||
487 | 372 |
To give symbolic names to a repository, create a section in .hgrc |
373 |
or .hg/hgrc containing assignments of names to paths. Example: |
|
438 | 374 |
|
487 | 375 |
----------------- |
438 | 376 |
[paths] |
377 |
hg = http://selenic.com/hg |
|
478
f1804f2e7f35
Update of doc/hg.1.txt
Thomas Arendsen Hein <thomas@intevation.de>
parents:
438
diff
changeset
|
378 |
tah = http://hg.intevation.org/mercurial-tah/ |
487 | 379 |
----------------- |
380 |
||
381 |
||
498 | 382 |
LOCAL TAGS |
383 |
---------- |
|
384 |
||
385 |
To create tags that are local to the repository and not distributed or |
|
386 |
version-controlled, create an hgrc section like the following: |
|
387 |
||
388 |
---------------- |
|
389 |
[tags] |
|
390 |
working = 2dcced388cab3677a8f543c3c47a0ad34ac9d435 |
|
391 |
tested = 12e0fdbc57a0be78f0e817fd1d170a3615cd35da |
|
392 |
---------------- |
|
393 |
||
394 |
||
487 | 395 |
HOOKS |
396 |
----- |
|
397 |
||
398 |
Mercurial supports a set of 'hook', commands that get automatically |
|
399 |
executed by various actions such as starting or finishing a commit. To |
|
400 |
specify a hook, simply create an hgrc section like the following: |
|
401 |
||
402 |
----------------- |
|
403 |
[hooks] |
|
404 |
precommit = echo "this hook gets executed immediately before a commit" |
|
405 |
commit = hg export $NODE | mail -s "new commit $NODE" commit-list |
|
406 |
----------------- |
|
407 |
||
181
038e4d8602bd
updated for .hgpaths and http/old-http protocol name change
jake@edge2.net
parents:
177
diff
changeset
|
408 |
|
321 | 409 |
NON_TRANSPARENT PROXY SUPPORT |
438 | 410 |
----------------------------- |
321 | 411 |
|
487 | 412 |
To access a Mercurial repository through a proxy, create a file |
413 |
$HOME/.hgrc in the following format: |
|
321 | 414 |
|
487 | 415 |
-------------- |
321 | 416 |
[http_proxy] |
417 |
host=myproxy:8080 |
|
418 |
user=<username> |
|
419 |
passwd=<password> |
|
420 |
no=<localhost1>,<localhost2>,<localhost3>,... |
|
487 | 421 |
-------------- |
321 | 422 |
|
498 | 423 |
"user" and "passwd" fields are used for authenticating proxies, "no" is a |
424 |
comma-separated list of local host names to not proxy. |
|
321 | 425 |
|
177 | 426 |
BUGS |
427 |
---- |
|
428 |
Probably lots, please post them to the mailing list (See Resources below) |
|
429 |
when you find them. |
|
430 |
||
431 |
AUTHOR |
|
432 |
------ |
|
433 |
Written by Matt Mackall <mpm@selenic.com> |
|
434 |
||
435 |
RESOURCES |
|
436 |
--------- |
|
437 |
http://selenic.com/mercurial[Main Web Site] |
|
438 |
||
439 |
http://selenic.com/hg[Source code repository] |
|
440 |
||
441 |
http://selenic.com/mailman/listinfo/mercurial[Mailing list] |
|
442 |
||
443 |
COPYING |
|
444 |
------- |
|
445 |
Copyright (C) 2005 Matt Mackall. |
|
446 |
Free use of this software is granted under the terms of the GNU General |
|
447 |
Public License (GPL). |