changeset 14297 | 2daa5179e73f |
parent 14291 | 1a791993ce59 |
child 14302 | b0f97b2589cc |
14296:62e25c63fb3a | 14297:2daa5179e73f |
---|---|
15 import merge as mergemod |
15 import merge as mergemod |
16 import minirst, revset, templatefilters |
16 import minirst, revset, templatefilters |
17 import dagparser, context, simplemerge |
17 import dagparser, context, simplemerge |
18 import random, setdiscovery, treediscovery, dagutil |
18 import random, setdiscovery, treediscovery, dagutil |
19 |
19 |
20 table = {} |
|
21 |
|
22 command = cmdutil.command(table) |
|
23 |
|
24 # common command options |
|
25 |
|
26 globalopts = [ |
|
27 ('R', 'repository', '', |
|
28 _('repository root directory or name of overlay bundle file'), |
|
29 _('REPO')), |
|
30 ('', 'cwd', '', |
|
31 _('change working directory'), _('DIR')), |
|
32 ('y', 'noninteractive', None, |
|
33 _('do not prompt, assume \'yes\' for any required answers')), |
|
34 ('q', 'quiet', None, _('suppress output')), |
|
35 ('v', 'verbose', None, _('enable additional output')), |
|
36 ('', 'config', [], |
|
37 _('set/override config option (use \'section.name=value\')'), |
|
38 _('CONFIG')), |
|
39 ('', 'debug', None, _('enable debugging output')), |
|
40 ('', 'debugger', None, _('start debugger')), |
|
41 ('', 'encoding', encoding.encoding, _('set the charset encoding'), |
|
42 _('ENCODE')), |
|
43 ('', 'encodingmode', encoding.encodingmode, |
|
44 _('set the charset encoding mode'), _('MODE')), |
|
45 ('', 'traceback', None, _('always print a traceback on exception')), |
|
46 ('', 'time', None, _('time how long the command takes')), |
|
47 ('', 'profile', None, _('print command execution profile')), |
|
48 ('', 'version', None, _('output version information and exit')), |
|
49 ('h', 'help', None, _('display help and exit')), |
|
50 ] |
|
51 |
|
52 dryrunopts = [('n', 'dry-run', None, |
|
53 _('do not perform actions, just print output'))] |
|
54 |
|
55 remoteopts = [ |
|
56 ('e', 'ssh', '', |
|
57 _('specify ssh command to use'), _('CMD')), |
|
58 ('', 'remotecmd', '', |
|
59 _('specify hg command to run on the remote side'), _('CMD')), |
|
60 ('', 'insecure', None, |
|
61 _('do not verify server certificate (ignoring web.cacerts config)')), |
|
62 ] |
|
63 |
|
64 walkopts = [ |
|
65 ('I', 'include', [], |
|
66 _('include names matching the given patterns'), _('PATTERN')), |
|
67 ('X', 'exclude', [], |
|
68 _('exclude names matching the given patterns'), _('PATTERN')), |
|
69 ] |
|
70 |
|
71 commitopts = [ |
|
72 ('m', 'message', '', |
|
73 _('use text as commit message'), _('TEXT')), |
|
74 ('l', 'logfile', '', |
|
75 _('read commit message from file'), _('FILE')), |
|
76 ] |
|
77 |
|
78 commitopts2 = [ |
|
79 ('d', 'date', '', |
|
80 _('record the specified date as commit date'), _('DATE')), |
|
81 ('u', 'user', '', |
|
82 _('record the specified user as committer'), _('USER')), |
|
83 ] |
|
84 |
|
85 templateopts = [ |
|
86 ('', 'style', '', |
|
87 _('display using template map file'), _('STYLE')), |
|
88 ('', 'template', '', |
|
89 _('display with template'), _('TEMPLATE')), |
|
90 ] |
|
91 |
|
92 logopts = [ |
|
93 ('p', 'patch', None, _('show patch')), |
|
94 ('g', 'git', None, _('use git extended diff format')), |
|
95 ('l', 'limit', '', |
|
96 _('limit number of changes displayed'), _('NUM')), |
|
97 ('M', 'no-merges', None, _('do not show merges')), |
|
98 ('', 'stat', None, _('output diffstat-style summary of changes')), |
|
99 ] + templateopts |
|
100 |
|
101 diffopts = [ |
|
102 ('a', 'text', None, _('treat all files as text')), |
|
103 ('g', 'git', None, _('use git extended diff format')), |
|
104 ('', 'nodates', None, _('omit dates from diff headers')) |
|
105 ] |
|
106 |
|
107 diffopts2 = [ |
|
108 ('p', 'show-function', None, _('show which function each change is in')), |
|
109 ('', 'reverse', None, _('produce a diff that undoes the changes')), |
|
110 ('w', 'ignore-all-space', None, |
|
111 _('ignore white space when comparing lines')), |
|
112 ('b', 'ignore-space-change', None, |
|
113 _('ignore changes in the amount of white space')), |
|
114 ('B', 'ignore-blank-lines', None, |
|
115 _('ignore changes whose lines are all blank')), |
|
116 ('U', 'unified', '', |
|
117 _('number of lines of context to show'), _('NUM')), |
|
118 ('', 'stat', None, _('output diffstat-style summary of changes')), |
|
119 ] |
|
120 |
|
121 similarityopts = [ |
|
122 ('s', 'similarity', '', |
|
123 _('guess renamed files by similarity (0<=s<=100)'), _('SIMILARITY')) |
|
124 ] |
|
125 |
|
126 subrepoopts = [ |
|
127 ('S', 'subrepos', None, |
|
128 _('recurse into subrepositories')) |
|
129 ] |
|
130 |
|
20 # Commands start here, listed alphabetically |
131 # Commands start here, listed alphabetically |
21 |
132 |
133 @command('^add', |
|
134 walkopts + subrepoopts + dryrunopts, |
|
135 _('[OPTION]... [FILE]...')) |
|
22 def add(ui, repo, *pats, **opts): |
136 def add(ui, repo, *pats, **opts): |
23 """add the specified files on the next commit |
137 """add the specified files on the next commit |
24 |
138 |
25 Schedule files to be version controlled and added to the |
139 Schedule files to be version controlled and added to the |
26 repository. |
140 repository. |
50 m = cmdutil.match(repo, pats, opts) |
164 m = cmdutil.match(repo, pats, opts) |
51 rejected = cmdutil.add(ui, repo, m, opts.get('dry_run'), |
165 rejected = cmdutil.add(ui, repo, m, opts.get('dry_run'), |
52 opts.get('subrepos'), prefix="") |
166 opts.get('subrepos'), prefix="") |
53 return rejected and 1 or 0 |
167 return rejected and 1 or 0 |
54 |
168 |
169 @command('addremove', |
|
170 similarityopts + walkopts + dryrunopts, |
|
171 _('[OPTION]... [FILE]...')) |
|
55 def addremove(ui, repo, *pats, **opts): |
172 def addremove(ui, repo, *pats, **opts): |
56 """add all new files, delete all missing files |
173 """add all new files, delete all missing files |
57 |
174 |
58 Add all new files and remove all missing files from the |
175 Add all new files and remove all missing files from the |
59 repository. |
176 repository. |
78 raise util.Abort(_('similarity must be a number')) |
195 raise util.Abort(_('similarity must be a number')) |
79 if sim < 0 or sim > 100: |
196 if sim < 0 or sim > 100: |
80 raise util.Abort(_('similarity must be between 0 and 100')) |
197 raise util.Abort(_('similarity must be between 0 and 100')) |
81 return cmdutil.addremove(repo, pats, opts, similarity=sim / 100.0) |
198 return cmdutil.addremove(repo, pats, opts, similarity=sim / 100.0) |
82 |
199 |
200 @command('^annotate|blame', |
|
201 [('r', 'rev', '', _('annotate the specified revision'), _('REV')), |
|
202 ('', 'follow', None, |
|
203 _('follow copies/renames and list the filename (DEPRECATED)')), |
|
204 ('', 'no-follow', None, _("don't follow copies and renames")), |
|
205 ('a', 'text', None, _('treat all files as text')), |
|
206 ('u', 'user', None, _('list the author (long with -v)')), |
|
207 ('f', 'file', None, _('list the filename')), |
|
208 ('d', 'date', None, _('list the date (short with -q)')), |
|
209 ('n', 'number', None, _('list the revision number (default)')), |
|
210 ('c', 'changeset', None, _('list the changeset')), |
|
211 ('l', 'line-number', None, _('show line number at the first appearance')) |
|
212 ] + walkopts, |
|
213 _('[-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FILE...')) |
|
83 def annotate(ui, repo, *pats, **opts): |
214 def annotate(ui, repo, *pats, **opts): |
84 """show changeset information by line for each file |
215 """show changeset information by line for each file |
85 |
216 |
86 List changes in files, showing the revision id responsible for |
217 List changes in files, showing the revision id responsible for |
87 each line |
218 each line |
152 |
283 |
153 if pieces: |
284 if pieces: |
154 for p, l in zip(zip(*pieces), lines): |
285 for p, l in zip(zip(*pieces), lines): |
155 ui.write("%s: %s" % (" ".join(p), l[1])) |
286 ui.write("%s: %s" % (" ".join(p), l[1])) |
156 |
287 |
288 @command('archive', |
|
289 [('', 'no-decode', None, _('do not pass files through decoders')), |
|
290 ('p', 'prefix', '', _('directory prefix for files in archive'), |
|
291 _('PREFIX')), |
|
292 ('r', 'rev', '', _('revision to distribute'), _('REV')), |
|
293 ('t', 'type', '', _('type of distribution to create'), _('TYPE')), |
|
294 ] + subrepoopts + walkopts, |
|
295 _('[OPTION]... DEST')) |
|
157 def archive(ui, repo, dest, **opts): |
296 def archive(ui, repo, dest, **opts): |
158 '''create an unversioned archive of a repository revision |
297 '''create an unversioned archive of a repository revision |
159 |
298 |
160 By default, the revision used is the parent of the working |
299 By default, the revision used is the parent of the working |
161 directory; use -r/--rev to specify a different revision. |
300 directory; use -r/--rev to specify a different revision. |
204 prefix = cmdutil.makefilename(repo, prefix, node) |
343 prefix = cmdutil.makefilename(repo, prefix, node) |
205 matchfn = cmdutil.match(repo, [], opts) |
344 matchfn = cmdutil.match(repo, [], opts) |
206 archival.archive(repo, dest, node, kind, not opts.get('no_decode'), |
345 archival.archive(repo, dest, node, kind, not opts.get('no_decode'), |
207 matchfn, prefix, subrepos=opts.get('subrepos')) |
346 matchfn, prefix, subrepos=opts.get('subrepos')) |
208 |
347 |
348 @command('backout', |
|
349 [('', 'merge', None, _('merge with old dirstate parent after backout')), |
|
350 ('', 'parent', '', _('parent to choose when backing out merge'), _('REV')), |
|
351 ('t', 'tool', '', _('specify merge tool')), |
|
352 ('r', 'rev', '', _('revision to backout'), _('REV')), |
|
353 ] + walkopts + commitopts + commitopts2, |
|
354 _('[OPTION]... [-r] REV')) |
|
209 def backout(ui, repo, node=None, rev=None, **opts): |
355 def backout(ui, repo, node=None, rev=None, **opts): |
210 '''reverse effect of earlier changeset |
356 '''reverse effect of earlier changeset |
211 |
357 |
212 Prepare a new changeset with the effect of REV undone in the |
358 Prepare a new changeset with the effect of REV undone in the |
213 current working directory. |
359 current working directory. |
305 return hg.merge(repo, hex(repo.changelog.tip())) |
451 return hg.merge(repo, hex(repo.changelog.tip())) |
306 finally: |
452 finally: |
307 ui.setconfig('ui', 'forcemerge', '') |
453 ui.setconfig('ui', 'forcemerge', '') |
308 return 0 |
454 return 0 |
309 |
455 |
456 @command('bisect', |
|
457 [('r', 'reset', False, _('reset bisect state')), |
|
458 ('g', 'good', False, _('mark changeset good')), |
|
459 ('b', 'bad', False, _('mark changeset bad')), |
|
460 ('s', 'skip', False, _('skip testing changeset')), |
|
461 ('e', 'extend', False, _('extend the bisect range')), |
|
462 ('c', 'command', '', _('use command to check changeset state'), _('CMD')), |
|
463 ('U', 'noupdate', False, _('do not update to target'))], |
|
464 _("[-gbsr] [-U] [-c CMD] [REV]")) |
|
310 def bisect(ui, repo, rev=None, extra=None, command=None, |
465 def bisect(ui, repo, rev=None, extra=None, command=None, |
311 reset=None, good=None, bad=None, skip=None, extend=None, |
466 reset=None, good=None, bad=None, skip=None, extend=None, |
312 noupdate=None): |
467 noupdate=None): |
313 """subdivision search of changesets |
468 """subdivision search of changesets |
314 |
469 |
481 % (rev, short(node), changesets, tests)) |
636 % (rev, short(node), changesets, tests)) |
482 if not noupdate: |
637 if not noupdate: |
483 cmdutil.bailifchanged(repo) |
638 cmdutil.bailifchanged(repo) |
484 return hg.clean(repo, node) |
639 return hg.clean(repo, node) |
485 |
640 |
641 @command('bookmarks', |
|
642 [('f', 'force', False, _('force')), |
|
643 ('r', 'rev', '', _('revision'), _('REV')), |
|
644 ('d', 'delete', False, _('delete a given bookmark')), |
|
645 ('m', 'rename', '', _('rename a given bookmark'), _('NAME')), |
|
646 ('i', 'inactive', False, _('do not mark a new bookmark active'))], |
|
647 _('hg bookmarks [-f] [-d] [-i] [-m NAME] [-r REV] [NAME]')) |
|
486 def bookmark(ui, repo, mark=None, rev=None, force=False, delete=False, |
648 def bookmark(ui, repo, mark=None, rev=None, force=False, delete=False, |
487 rename=None, inactive=False): |
649 rename=None, inactive=False): |
488 '''track a line of development with movable markers |
650 '''track a line of development with movable markers |
489 |
651 |
490 Bookmarks are pointers to certain commits that move when |
652 Bookmarks are pointers to certain commits that move when |
577 ui.write(" %s %-25s %d:%s\n" % ( |
739 ui.write(" %s %-25s %d:%s\n" % ( |
578 prefix, bmark, repo.changelog.rev(n), hexfn(n)), |
740 prefix, bmark, repo.changelog.rev(n), hexfn(n)), |
579 label=label) |
741 label=label) |
580 return |
742 return |
581 |
743 |
744 @command('branch', |
|
745 [('f', 'force', None, |
|
746 _('set branch name even if it shadows an existing branch')), |
|
747 ('C', 'clean', None, _('reset branch name to parent branch name'))], |
|
748 _('[-fC] [NAME]')) |
|
582 def branch(ui, repo, label=None, **opts): |
749 def branch(ui, repo, label=None, **opts): |
583 """set or show the current branch name |
750 """set or show the current branch name |
584 |
751 |
585 With no argument, show the current branch name. With one argument, |
752 With no argument, show the current branch name. With one argument, |
586 set the working directory branch name (the branch will not exist |
753 set the working directory branch name (the branch will not exist |
614 repo.dirstate.setbranch(label) |
781 repo.dirstate.setbranch(label) |
615 ui.status(_('marked working directory as branch %s\n') % label) |
782 ui.status(_('marked working directory as branch %s\n') % label) |
616 else: |
783 else: |
617 ui.write("%s\n" % repo.dirstate.branch()) |
784 ui.write("%s\n" % repo.dirstate.branch()) |
618 |
785 |
786 @command('branches', |
|
787 [('a', 'active', False, _('show only branches that have unmerged heads')), |
|
788 ('c', 'closed', False, _('show normal and closed branches'))], |
|
789 _('[-ac]')) |
|
619 def branches(ui, repo, active=False, closed=False): |
790 def branches(ui, repo, active=False, closed=False): |
620 """list repository named branches |
791 """list repository named branches |
621 |
792 |
622 List the repository's named branches, indicating which ones are |
793 List the repository's named branches, indicating which ones are |
623 inactive. If -c/--closed is specified, also list branches which have |
794 inactive. If -c/--closed is specified, also list branches which have |
663 rev = str(node).rjust(31 - encoding.colwidth(tag)) |
834 rev = str(node).rjust(31 - encoding.colwidth(tag)) |
664 rev = ui.label('%s:%s' % (rev, hexfunc(hn)), 'log.changeset') |
835 rev = ui.label('%s:%s' % (rev, hexfunc(hn)), 'log.changeset') |
665 tag = ui.label(tag, label) |
836 tag = ui.label(tag, label) |
666 ui.write("%s %s%s\n" % (tag, rev, notice)) |
837 ui.write("%s %s%s\n" % (tag, rev, notice)) |
667 |
838 |
839 @command('bundle', |
|
840 [('f', 'force', None, _('run even when the destination is unrelated')), |
|
841 ('r', 'rev', [], _('a changeset intended to be added to the destination'), |
|
842 _('REV')), |
|
843 ('b', 'branch', [], _('a specific branch you would like to bundle'), |
|
844 _('BRANCH')), |
|
845 ('', 'base', [], |
|
846 _('a base changeset assumed to be available at the destination'), |
|
847 _('REV')), |
|
848 ('a', 'all', None, _('bundle all changesets in the repository')), |
|
849 ('t', 'type', 'bzip2', _('bundle compression type to use'), _('TYPE')), |
|
850 ] + remoteopts, |
|
851 _('[-f] [-t TYPE] [-a] [-r REV]... [--base REV]... FILE [DEST]')) |
|
668 def bundle(ui, repo, fname, dest=None, **opts): |
852 def bundle(ui, repo, fname, dest=None, **opts): |
669 """create a changegroup file |
853 """create a changegroup file |
670 |
854 |
671 Generate a compressed changegroup file collecting changesets not |
855 Generate a compressed changegroup file collecting changesets not |
672 known to be in another repository. |
856 known to be in another repository. |
725 if bundletype not in changegroup.bundletypes: |
909 if bundletype not in changegroup.bundletypes: |
726 raise util.Abort(_('unknown bundle type specified with --type')) |
910 raise util.Abort(_('unknown bundle type specified with --type')) |
727 |
911 |
728 changegroup.writebundle(cg, fname, bundletype) |
912 changegroup.writebundle(cg, fname, bundletype) |
729 |
913 |
914 @command('cat', |
|
915 [('o', 'output', '', |
|
916 _('print output to file with formatted name'), _('FORMAT')), |
|
917 ('r', 'rev', '', _('print the given revision'), _('REV')), |
|
918 ('', 'decode', None, _('apply any matching decode filter')), |
|
919 ] + walkopts, |
|
920 _('[OPTION]... FILE...')) |
|
730 def cat(ui, repo, file1, *pats, **opts): |
921 def cat(ui, repo, file1, *pats, **opts): |
731 """output the current or given revision of files |
922 """output the current or given revision of files |
732 |
923 |
733 Print the specified files as they were at the given revision. If |
924 Print the specified files as they were at the given revision. If |
734 no revision is given, the parent of the working directory is used, |
925 no revision is given, the parent of the working directory is used, |
756 fp.write(data) |
947 fp.write(data) |
757 fp.close() |
948 fp.close() |
758 err = 0 |
949 err = 0 |
759 return err |
950 return err |
760 |
951 |
952 @command('^clone', |
|
953 [('U', 'noupdate', None, |
|
954 _('the clone will include an empty working copy (only a repository)')), |
|
955 ('u', 'updaterev', '', _('revision, tag or branch to check out'), _('REV')), |
|
956 ('r', 'rev', [], _('include the specified changeset'), _('REV')), |
|
957 ('b', 'branch', [], _('clone only the specified branch'), _('BRANCH')), |
|
958 ('', 'pull', None, _('use pull protocol to copy metadata')), |
|
959 ('', 'uncompressed', None, _('use uncompressed transfer (fast over LAN)')), |
|
960 ] + remoteopts, |
|
961 _('[OPTION]... SOURCE [DEST]')) |
|
761 def clone(ui, source, dest=None, **opts): |
962 def clone(ui, source, dest=None, **opts): |
762 """make a copy of an existing repository |
963 """make a copy of an existing repository |
763 |
964 |
764 Create a copy of an existing repository in a new directory. |
965 Create a copy of an existing repository in a new directory. |
765 |
966 |
832 update=opts.get('updaterev') or not opts.get('noupdate'), |
1033 update=opts.get('updaterev') or not opts.get('noupdate'), |
833 branch=opts.get('branch')) |
1034 branch=opts.get('branch')) |
834 |
1035 |
835 return r is None |
1036 return r is None |
836 |
1037 |
1038 @command('^commit|ci', |
|
1039 [('A', 'addremove', None, |
|
1040 _('mark new/missing files as added/removed before committing')), |
|
1041 ('', 'close-branch', None, |
|
1042 _('mark a branch as closed, hiding it from the branch list')), |
|
1043 ] + walkopts + commitopts + commitopts2, |
|
1044 _('[OPTION]... [FILE]...')) |
|
837 def commit(ui, repo, *pats, **opts): |
1045 def commit(ui, repo, *pats, **opts): |
838 """commit the specified files or all outstanding changes |
1046 """commit the specified files or all outstanding changes |
839 |
1047 |
840 Commit changes to the given files into the repository. Unlike a |
1048 Commit changes to the given files into the repository. Unlike a |
841 centralized SCM, this operation is a local operation. See |
1049 centralized SCM, this operation is a local operation. See |
927 if ui.debugflag: |
1135 if ui.debugflag: |
928 ui.write(_('committed changeset %d:%s\n') % (int(ctx), ctx.hex())) |
1136 ui.write(_('committed changeset %d:%s\n') % (int(ctx), ctx.hex())) |
929 elif ui.verbose: |
1137 elif ui.verbose: |
930 ui.write(_('committed changeset %d:%s\n') % (int(ctx), ctx)) |
1138 ui.write(_('committed changeset %d:%s\n') % (int(ctx), ctx)) |
931 |
1139 |
1140 @command('copy|cp', |
|
1141 [('A', 'after', None, _('record a copy that has already occurred')), |
|
1142 ('f', 'force', None, _('forcibly copy over an existing managed file')), |
|
1143 ] + walkopts + dryrunopts, |
|
1144 _('[OPTION]... [SOURCE]... DEST')) |
|
932 def copy(ui, repo, *pats, **opts): |
1145 def copy(ui, repo, *pats, **opts): |
933 """mark files as copied for the next commit |
1146 """mark files as copied for the next commit |
934 |
1147 |
935 Mark dest as having copies of source files. If dest is a |
1148 Mark dest as having copies of source files. If dest is a |
936 directory, copies are put in that directory. If dest is a file, |
1149 directory, copies are put in that directory. If dest is a file, |
949 try: |
1162 try: |
950 return cmdutil.copy(ui, repo, pats, opts) |
1163 return cmdutil.copy(ui, repo, pats, opts) |
951 finally: |
1164 finally: |
952 wlock.release() |
1165 wlock.release() |
953 |
1166 |
1167 @command('debugancestor', [], _('[INDEX] REV1 REV2')) |
|
954 def debugancestor(ui, repo, *args): |
1168 def debugancestor(ui, repo, *args): |
955 """find the ancestor revision of two revisions in a given index""" |
1169 """find the ancestor revision of two revisions in a given index""" |
956 if len(args) == 3: |
1170 if len(args) == 3: |
957 index, rev1, rev2 = args |
1171 index, rev1, rev2 = args |
958 r = revlog.revlog(scmutil.opener(os.getcwd(), audit=False), index) |
1172 r = revlog.revlog(scmutil.opener(os.getcwd(), audit=False), index) |
967 else: |
1181 else: |
968 raise util.Abort(_('either two or three arguments required')) |
1182 raise util.Abort(_('either two or three arguments required')) |
969 a = r.ancestor(lookup(rev1), lookup(rev2)) |
1183 a = r.ancestor(lookup(rev1), lookup(rev2)) |
970 ui.write("%d:%s\n" % (r.rev(a), hex(a))) |
1184 ui.write("%d:%s\n" % (r.rev(a), hex(a))) |
971 |
1185 |
1186 @command('debugbuilddag', |
|
1187 [('m', 'mergeable-file', None, _('add single file mergeable changes')), |
|
1188 ('o', 'overwritten-file', None, _('add single file all revs overwrite')), |
|
1189 ('n', 'new-file', None, _('add new file at each rev'))], |
|
1190 _('[OPTION]... [TEXT]')) |
|
972 def debugbuilddag(ui, repo, text=None, |
1191 def debugbuilddag(ui, repo, text=None, |
973 mergeable_file=False, |
1192 mergeable_file=False, |
974 overwritten_file=False, |
1193 overwritten_file=False, |
975 new_file=False): |
1194 new_file=False): |
976 """builds a repo with a given DAG from scratch in the current empty repo |
1195 """builds a repo with a given DAG from scratch in the current empty repo |
1109 tr.release() |
1328 tr.release() |
1110 |
1329 |
1111 if tags: |
1330 if tags: |
1112 repo.opener.write("localtags", "".join(tags)) |
1331 repo.opener.write("localtags", "".join(tags)) |
1113 |
1332 |
1333 @command('debugcommands', [], _('[COMMAND]')) |
|
1114 def debugcommands(ui, cmd='', *args): |
1334 def debugcommands(ui, cmd='', *args): |
1115 """list all available commands and options""" |
1335 """list all available commands and options""" |
1116 for cmd, vals in sorted(table.iteritems()): |
1336 for cmd, vals in sorted(table.iteritems()): |
1117 cmd = cmd.split('|')[0].strip('^') |
1337 cmd = cmd.split('|')[0].strip('^') |
1118 opts = ', '.join([i[1] for i in vals[1]]) |
1338 opts = ', '.join([i[1] for i in vals[1]]) |
1119 ui.write('%s: %s\n' % (cmd, opts)) |
1339 ui.write('%s: %s\n' % (cmd, opts)) |
1120 |
1340 |
1341 @command('debugcomplete', |
|
1342 [('o', 'options', None, _('show the command options'))], |
|
1343 _('[-o] CMD')) |
|
1121 def debugcomplete(ui, cmd='', **opts): |
1344 def debugcomplete(ui, cmd='', **opts): |
1122 """returns the completion list associated with the given command""" |
1345 """returns the completion list associated with the given command""" |
1123 |
1346 |
1124 if opts.get('options'): |
1347 if opts.get('options'): |
1125 options = [] |
1348 options = [] |
1140 cmdlist = cmdutil.findpossible(cmd, table) |
1363 cmdlist = cmdutil.findpossible(cmd, table) |
1141 if ui.verbose: |
1364 if ui.verbose: |
1142 cmdlist = [' '.join(c[0]) for c in cmdlist.values()] |
1365 cmdlist = [' '.join(c[0]) for c in cmdlist.values()] |
1143 ui.write("%s\n" % "\n".join(sorted(cmdlist))) |
1366 ui.write("%s\n" % "\n".join(sorted(cmdlist))) |
1144 |
1367 |
1368 @command('debugfsinfo', [], _('[PATH]')) |
|
1145 def debugfsinfo(ui, path = "."): |
1369 def debugfsinfo(ui, path = "."): |
1146 """show information detected about current filesystem""" |
1370 """show information detected about current filesystem""" |
1147 util.writefile('.debugfsinfo', '') |
1371 util.writefile('.debugfsinfo', '') |
1148 ui.write('exec: %s\n' % (util.checkexec(path) and 'yes' or 'no')) |
1372 ui.write('exec: %s\n' % (util.checkexec(path) and 'yes' or 'no')) |
1149 ui.write('symlink: %s\n' % (util.checklink(path) and 'yes' or 'no')) |
1373 ui.write('symlink: %s\n' % (util.checklink(path) and 'yes' or 'no')) |
1150 ui.write('case-sensitive: %s\n' % (util.checkcase('.debugfsinfo') |
1374 ui.write('case-sensitive: %s\n' % (util.checkcase('.debugfsinfo') |
1151 and 'yes' or 'no')) |
1375 and 'yes' or 'no')) |
1152 os.unlink('.debugfsinfo') |
1376 os.unlink('.debugfsinfo') |
1153 |
1377 |
1378 @command('debugrebuildstate', |
|
1379 [('r', 'rev', '', _('revision to rebuild to'), _('REV'))], |
|
1380 _('[-r REV] [REV]')) |
|
1154 def debugrebuildstate(ui, repo, rev="tip"): |
1381 def debugrebuildstate(ui, repo, rev="tip"): |
1155 """rebuild the dirstate as it would look like for the given revision""" |
1382 """rebuild the dirstate as it would look like for the given revision""" |
1156 ctx = cmdutil.revsingle(repo, rev) |
1383 ctx = cmdutil.revsingle(repo, rev) |
1157 wlock = repo.wlock() |
1384 wlock = repo.wlock() |
1158 try: |
1385 try: |
1159 repo.dirstate.rebuild(ctx.node(), ctx.manifest()) |
1386 repo.dirstate.rebuild(ctx.node(), ctx.manifest()) |
1160 finally: |
1387 finally: |
1161 wlock.release() |
1388 wlock.release() |
1162 |
1389 |
1390 @command('debugcheckstate', [], '') |
|
1163 def debugcheckstate(ui, repo): |
1391 def debugcheckstate(ui, repo): |
1164 """validate the correctness of the current dirstate""" |
1392 """validate the correctness of the current dirstate""" |
1165 parent1, parent2 = repo.dirstate.parents() |
1393 parent1, parent2 = repo.dirstate.parents() |
1166 m1 = repo[parent1].manifest() |
1394 m1 = repo[parent1].manifest() |
1167 m2 = repo[parent2].manifest() |
1395 m2 = repo[parent2].manifest() |
1185 errors += 1 |
1413 errors += 1 |
1186 if errors: |
1414 if errors: |
1187 error = _(".hg/dirstate inconsistent with current parent's manifest") |
1415 error = _(".hg/dirstate inconsistent with current parent's manifest") |
1188 raise util.Abort(error) |
1416 raise util.Abort(error) |
1189 |
1417 |
1418 @command('showconfig|debugconfig', |
|
1419 [('u', 'untrusted', None, _('show untrusted configuration options'))], |
|
1420 _('[-u] [NAME]...')) |
|
1190 def showconfig(ui, repo, *values, **opts): |
1421 def showconfig(ui, repo, *values, **opts): |
1191 """show combined config settings from all hgrc files |
1422 """show combined config settings from all hgrc files |
1192 |
1423 |
1193 With no arguments, print names and values of all config items. |
1424 With no arguments, print names and values of all config items. |
1194 |
1425 |
1228 else: |
1459 else: |
1229 ui.debug('%s: ' % |
1460 ui.debug('%s: ' % |
1230 ui.configsource(section, name, untrusted)) |
1461 ui.configsource(section, name, untrusted)) |
1231 ui.write('%s=%s\n' % (sectname, value)) |
1462 ui.write('%s=%s\n' % (sectname, value)) |
1232 |
1463 |
1464 @command('debugknown', [], _('REPO ID...')) |
|
1233 def debugknown(ui, repopath, *ids, **opts): |
1465 def debugknown(ui, repopath, *ids, **opts): |
1234 """test whether node ids are known to a repo |
1466 """test whether node ids are known to a repo |
1235 |
1467 |
1236 Every ID must be a full-length hex node id string. Returns a list of 0s and 1s |
1468 Every ID must be a full-length hex node id string. Returns a list of 0s and 1s |
1237 indicating unknown/known. |
1469 indicating unknown/known. |
1240 if not repo.capable('known'): |
1472 if not repo.capable('known'): |
1241 raise util.Abort("known() not supported by target repository") |
1473 raise util.Abort("known() not supported by target repository") |
1242 flags = repo.known([bin(s) for s in ids]) |
1474 flags = repo.known([bin(s) for s in ids]) |
1243 ui.write("%s\n" % ("".join([f and "1" or "0" for f in flags]))) |
1475 ui.write("%s\n" % ("".join([f and "1" or "0" for f in flags]))) |
1244 |
1476 |
1477 @command('debugbundle', [('a', 'all', None, _('show all details'))], _('FILE')) |
|
1245 def debugbundle(ui, bundlepath, all=None, **opts): |
1478 def debugbundle(ui, bundlepath, all=None, **opts): |
1246 """lists the contents of a bundle""" |
1479 """lists the contents of a bundle""" |
1247 f = url.open(ui, bundlepath) |
1480 f = url.open(ui, bundlepath) |
1248 try: |
1481 try: |
1249 gen = changegroup.readbundle(f, bundlepath) |
1482 gen = changegroup.readbundle(f, bundlepath) |
1289 ui.write("%s\n" % hex(node)) |
1522 ui.write("%s\n" % hex(node)) |
1290 chain = node |
1523 chain = node |
1291 finally: |
1524 finally: |
1292 f.close() |
1525 f.close() |
1293 |
1526 |
1527 @command('debuggetbundle', |
|
1528 [('H', 'head', [], _('id of head node'), _('ID')), |
|
1529 ('C', 'common', [], _('id of common node'), _('ID')), |
|
1530 ('t', 'type', 'bzip2', _('bundle compression type to use'), _('TYPE'))], |
|
1531 _('REPO FILE [-H|-C ID]...')) |
|
1294 def debuggetbundle(ui, repopath, bundlepath, head=None, common=None, **opts): |
1532 def debuggetbundle(ui, repopath, bundlepath, head=None, common=None, **opts): |
1295 """retrieves a bundle from a repo |
1533 """retrieves a bundle from a repo |
1296 |
1534 |
1297 Every ID must be a full-length hex node id string. Saves the bundle to the |
1535 Every ID must be a full-length hex node id string. Saves the bundle to the |
1298 given file. |
1536 given file. |
1312 bundletype = btypes.get(bundletype) |
1550 bundletype = btypes.get(bundletype) |
1313 if bundletype not in changegroup.bundletypes: |
1551 if bundletype not in changegroup.bundletypes: |
1314 raise util.Abort(_('unknown bundle type specified with --type')) |
1552 raise util.Abort(_('unknown bundle type specified with --type')) |
1315 changegroup.writebundle(bundle, bundlepath, bundletype) |
1553 changegroup.writebundle(bundle, bundlepath, bundletype) |
1316 |
1554 |
1555 @command('debugpushkey', [], _('REPO NAMESPACE [KEY OLD NEW]')) |
|
1317 def debugpushkey(ui, repopath, namespace, *keyinfo): |
1556 def debugpushkey(ui, repopath, namespace, *keyinfo): |
1318 '''access the pushkey key/value protocol |
1557 '''access the pushkey key/value protocol |
1319 |
1558 |
1320 With two args, list the keys in the given namespace. |
1559 With two args, list the keys in the given namespace. |
1321 |
1560 |
1332 else: |
1571 else: |
1333 for k, v in target.listkeys(namespace).iteritems(): |
1572 for k, v in target.listkeys(namespace).iteritems(): |
1334 ui.write("%s\t%s\n" % (k.encode('string-escape'), |
1573 ui.write("%s\t%s\n" % (k.encode('string-escape'), |
1335 v.encode('string-escape'))) |
1574 v.encode('string-escape'))) |
1336 |
1575 |
1576 @command('debugrevspec', [], ('REVSPEC')) |
|
1337 def debugrevspec(ui, repo, expr): |
1577 def debugrevspec(ui, repo, expr): |
1338 '''parse and apply a revision specification''' |
1578 '''parse and apply a revision specification''' |
1339 if ui.verbose: |
1579 if ui.verbose: |
1340 tree = revset.parse(expr)[0] |
1580 tree = revset.parse(expr)[0] |
1341 ui.note(tree, "\n") |
1581 ui.note(tree, "\n") |
1344 ui.note(newtree, "\n") |
1584 ui.note(newtree, "\n") |
1345 func = revset.match(ui, expr) |
1585 func = revset.match(ui, expr) |
1346 for c in func(repo, range(len(repo))): |
1586 for c in func(repo, range(len(repo))): |
1347 ui.write("%s\n" % c) |
1587 ui.write("%s\n" % c) |
1348 |
1588 |
1589 @command('debugsetparents', [], _('REV1 [REV2]')) |
|
1349 def debugsetparents(ui, repo, rev1, rev2=None): |
1590 def debugsetparents(ui, repo, rev1, rev2=None): |
1350 """manually set the parents of the current working directory |
1591 """manually set the parents of the current working directory |
1351 |
1592 |
1352 This is useful for writing repository conversion tools, but should |
1593 This is useful for writing repository conversion tools, but should |
1353 be used with care. |
1594 be used with care. |
1362 try: |
1603 try: |
1363 repo.dirstate.setparents(r1, r2) |
1604 repo.dirstate.setparents(r1, r2) |
1364 finally: |
1605 finally: |
1365 wlock.release() |
1606 wlock.release() |
1366 |
1607 |
1608 @command('debugstate', |
|
1609 [('', 'nodates', None, _('do not display the saved mtime')), |
|
1610 ('', 'datesort', None, _('sort by saved mtime'))], |
|
1611 _('[OPTION]...')) |
|
1367 def debugstate(ui, repo, nodates=None, datesort=None): |
1612 def debugstate(ui, repo, nodates=None, datesort=None): |
1368 """show the contents of the current dirstate""" |
1613 """show the contents of the current dirstate""" |
1369 timestr = "" |
1614 timestr = "" |
1370 showdate = not nodates |
1615 showdate = not nodates |
1371 if datesort: |
1616 if datesort: |
1390 mode = '%3o' % (ent[1] & 0777) |
1635 mode = '%3o' % (ent[1] & 0777) |
1391 ui.write("%c %s %10d %s%s\n" % (ent[0], mode, ent[2], timestr, file_)) |
1636 ui.write("%c %s %10d %s%s\n" % (ent[0], mode, ent[2], timestr, file_)) |
1392 for f in repo.dirstate.copies(): |
1637 for f in repo.dirstate.copies(): |
1393 ui.write(_("copy: %s -> %s\n") % (repo.dirstate.copied(f), f)) |
1638 ui.write(_("copy: %s -> %s\n") % (repo.dirstate.copied(f), f)) |
1394 |
1639 |
1640 @command('debugsub', |
|
1641 [('r', 'rev', '', |
|
1642 _('revision to check'), _('REV'))], |
|
1643 _('[-r REV] [REV]')) |
|
1395 def debugsub(ui, repo, rev=None): |
1644 def debugsub(ui, repo, rev=None): |
1396 ctx = cmdutil.revsingle(repo, rev, None) |
1645 ctx = cmdutil.revsingle(repo, rev, None) |
1397 for k, v in sorted(ctx.substate.items()): |
1646 for k, v in sorted(ctx.substate.items()): |
1398 ui.write('path %s\n' % k) |
1647 ui.write('path %s\n' % k) |
1399 ui.write(' source %s\n' % v[0]) |
1648 ui.write(' source %s\n' % v[0]) |
1400 ui.write(' revision %s\n' % v[1]) |
1649 ui.write(' revision %s\n' % v[1]) |
1401 |
1650 |
1651 @command('debugdag', |
|
1652 [('t', 'tags', None, _('use tags as labels')), |
|
1653 ('b', 'branches', None, _('annotate with branch names')), |
|
1654 ('', 'dots', None, _('use dots for runs')), |
|
1655 ('s', 'spaces', None, _('separate elements by spaces'))], |
|
1656 _('[OPTION]... [FILE [REV]...]')) |
|
1402 def debugdag(ui, repo, file_=None, *revs, **opts): |
1657 def debugdag(ui, repo, file_=None, *revs, **opts): |
1403 """format the changelog or an index DAG as a concise textual description |
1658 """format the changelog or an index DAG as a concise textual description |
1404 |
1659 |
1405 If you pass a revlog index, the revlog's DAG is emitted. If you list |
1660 If you pass a revlog index, the revlog's DAG is emitted. If you list |
1406 revision numbers, they get labelled in the output as rN. |
1661 revision numbers, they get labelled in the output as rN. |
1450 usedots=dots, |
1705 usedots=dots, |
1451 maxlinewidth=70): |
1706 maxlinewidth=70): |
1452 ui.write(line) |
1707 ui.write(line) |
1453 ui.write("\n") |
1708 ui.write("\n") |
1454 |
1709 |
1710 @command('debugdata', [], _('FILE REV')) |
|
1455 def debugdata(ui, repo, file_, rev): |
1711 def debugdata(ui, repo, file_, rev): |
1456 """dump the contents of a data file revision""" |
1712 """dump the contents of a data file revision""" |
1457 r = None |
1713 r = None |
1458 if repo: |
1714 if repo: |
1459 filelog = repo.file(file_) |
1715 filelog = repo.file(file_) |
1465 try: |
1721 try: |
1466 ui.write(r.revision(r.lookup(rev))) |
1722 ui.write(r.revision(r.lookup(rev))) |
1467 except KeyError: |
1723 except KeyError: |
1468 raise util.Abort(_('invalid revision identifier %s') % rev) |
1724 raise util.Abort(_('invalid revision identifier %s') % rev) |
1469 |
1725 |
1726 @command('debugdate', |
|
1727 [('e', 'extended', None, _('try extended date formats'))], |
|
1728 _('[-e] DATE [RANGE]')) |
|
1470 def debugdate(ui, date, range=None, **opts): |
1729 def debugdate(ui, date, range=None, **opts): |
1471 """parse and display a date""" |
1730 """parse and display a date""" |
1472 if opts["extended"]: |
1731 if opts["extended"]: |
1473 d = util.parsedate(date, util.extendeddateformats) |
1732 d = util.parsedate(date, util.extendeddateformats) |
1474 else: |
1733 else: |
1477 ui.write("standard: %s\n" % util.datestr(d)) |
1736 ui.write("standard: %s\n" % util.datestr(d)) |
1478 if range: |
1737 if range: |
1479 m = util.matchdate(range) |
1738 m = util.matchdate(range) |
1480 ui.write("match: %s\n" % m(d[0])) |
1739 ui.write("match: %s\n" % m(d[0])) |
1481 |
1740 |
1741 @command('debugignore', [], '') |
|
1482 def debugignore(ui, repo, *values, **opts): |
1742 def debugignore(ui, repo, *values, **opts): |
1483 """display the combined ignore pattern""" |
1743 """display the combined ignore pattern""" |
1484 ignore = repo.dirstate._ignore |
1744 ignore = repo.dirstate._ignore |
1485 if hasattr(ignore, 'includepat'): |
1745 if hasattr(ignore, 'includepat'): |
1486 ui.write("%s\n" % ignore.includepat) |
1746 ui.write("%s\n" % ignore.includepat) |
1487 else: |
1747 else: |
1488 raise util.Abort(_("no ignore patterns found")) |
1748 raise util.Abort(_("no ignore patterns found")) |
1489 |
1749 |
1750 @command('debugdiscovery', |
|
1751 [('', 'old', None, _('use old-style discovery')), |
|
1752 ('', 'nonheads', None, |
|
1753 _('use old-style discovery with non-heads included')), |
|
1754 ] + remoteopts, |
|
1755 _('[-l REV] [-r REV] [-b BRANCH]... [OTHER]')) |
|
1490 def debugdiscovery(ui, repo, remoteurl="default", **opts): |
1756 def debugdiscovery(ui, repo, remoteurl="default", **opts): |
1491 """runs the changeset discovery protocol in isolation""" |
1757 """runs the changeset discovery protocol in isolation""" |
1492 remoteurl, branches = hg.parseurl(ui.expandpath(remoteurl), opts.get('branch')) |
1758 remoteurl, branches = hg.parseurl(ui.expandpath(remoteurl), opts.get('branch')) |
1493 remote = hg.repository(hg.remoteui(repo, opts), remoteurl) |
1759 remote = hg.repository(hg.remoteui(repo, opts), remoteurl) |
1494 ui.status(_('comparing with %s\n') % util.hidepassword(remoteurl)) |
1760 ui.status(_('comparing with %s\n') % util.hidepassword(remoteurl)) |
1543 remoterevs, _checkout = hg.addbranchrevs(repo, remote, branches, |
1809 remoterevs, _checkout = hg.addbranchrevs(repo, remote, branches, |
1544 opts.get('remote_head')) |
1810 opts.get('remote_head')) |
1545 localrevs = opts.get('local_head') |
1811 localrevs = opts.get('local_head') |
1546 doit(localrevs, remoterevs) |
1812 doit(localrevs, remoterevs) |
1547 |
1813 |
1548 |
1814 @command('debugindex', |
1815 [('f', 'format', 0, _('revlog format'), _('FORMAT'))], |
|
1816 _('FILE')) |
|
1549 def debugindex(ui, repo, file_, **opts): |
1817 def debugindex(ui, repo, file_, **opts): |
1550 """dump the contents of an index file""" |
1818 """dump the contents of an index file""" |
1551 r = None |
1819 r = None |
1552 if repo: |
1820 if repo: |
1553 filelog = repo.file(file_) |
1821 filelog = repo.file(file_) |
1592 pr = r.parentrevs(i) |
1860 pr = r.parentrevs(i) |
1593 ui.write("% 6d %04x % 8d % 8d % 8d % 6d % 6d % 6d % 6d %s\n" % ( |
1861 ui.write("% 6d %04x % 8d % 8d % 8d % 6d % 6d % 6d % 6d %s\n" % ( |
1594 i, r.flags(i), r.start(i), r.length(i), r.rawsize(i), |
1862 i, r.flags(i), r.start(i), r.length(i), r.rawsize(i), |
1595 base, r.linkrev(i), pr[0], pr[1], short(node))) |
1863 base, r.linkrev(i), pr[0], pr[1], short(node))) |
1596 |
1864 |
1865 @command('debugindexdot', [], _('FILE')) |
|
1597 def debugindexdot(ui, repo, file_): |
1866 def debugindexdot(ui, repo, file_): |
1598 """dump an index DAG as a graphviz dot file""" |
1867 """dump an index DAG as a graphviz dot file""" |
1599 r = None |
1868 r = None |
1600 if repo: |
1869 if repo: |
1601 filelog = repo.file(file_) |
1870 filelog = repo.file(file_) |
1610 ui.write("\t%d -> %d\n" % (r.rev(pp[0]), i)) |
1879 ui.write("\t%d -> %d\n" % (r.rev(pp[0]), i)) |
1611 if pp[1] != nullid: |
1880 if pp[1] != nullid: |
1612 ui.write("\t%d -> %d\n" % (r.rev(pp[1]), i)) |
1881 ui.write("\t%d -> %d\n" % (r.rev(pp[1]), i)) |
1613 ui.write("}\n") |
1882 ui.write("}\n") |
1614 |
1883 |
1884 @command('debuginstall', [], '') |
|
1615 def debuginstall(ui): |
1885 def debuginstall(ui): |
1616 '''test Mercurial installation |
1886 '''test Mercurial installation |
1617 |
1887 |
1618 Returns 0 on success. |
1888 Returns 0 on success. |
1619 ''' |
1889 ''' |
1687 ui.write(_("%s problems detected," |
1957 ui.write(_("%s problems detected," |
1688 " please check your install!\n") % problems) |
1958 " please check your install!\n") % problems) |
1689 |
1959 |
1690 return problems |
1960 return problems |
1691 |
1961 |
1962 @command('debugrename', |
|
1963 [('r', 'rev', '', _('revision to debug'), _('REV'))], |
|
1964 _('[-r REV] FILE')) |
|
1692 def debugrename(ui, repo, file1, *pats, **opts): |
1965 def debugrename(ui, repo, file1, *pats, **opts): |
1693 """dump rename information""" |
1966 """dump rename information""" |
1694 |
1967 |
1695 ctx = cmdutil.revsingle(repo, opts.get('rev')) |
1968 ctx = cmdutil.revsingle(repo, opts.get('rev')) |
1696 m = cmdutil.match(repo, (file1,) + pats, opts) |
1969 m = cmdutil.match(repo, (file1,) + pats, opts) |
1701 if o: |
1974 if o: |
1702 ui.write(_("%s renamed from %s:%s\n") % (rel, o[0], hex(o[1]))) |
1975 ui.write(_("%s renamed from %s:%s\n") % (rel, o[0], hex(o[1]))) |
1703 else: |
1976 else: |
1704 ui.write(_("%s not renamed\n") % rel) |
1977 ui.write(_("%s not renamed\n") % rel) |
1705 |
1978 |
1979 @command('debugwalk', walkopts, _('[OPTION]... [FILE]...')) |
|
1706 def debugwalk(ui, repo, *pats, **opts): |
1980 def debugwalk(ui, repo, *pats, **opts): |
1707 """show how files match on given patterns""" |
1981 """show how files match on given patterns""" |
1708 m = cmdutil.match(repo, pats, opts) |
1982 m = cmdutil.match(repo, pats, opts) |
1709 items = list(repo.walk(m)) |
1983 items = list(repo.walk(m)) |
1710 if not items: |
1984 if not items: |
1714 max([len(m.rel(abs)) for abs in items])) |
1988 max([len(m.rel(abs)) for abs in items])) |
1715 for abs in items: |
1989 for abs in items: |
1716 line = fmt % (abs, m.rel(abs), m.exact(abs) and 'exact' or '') |
1990 line = fmt % (abs, m.rel(abs), m.exact(abs) and 'exact' or '') |
1717 ui.write("%s\n" % line.rstrip()) |
1991 ui.write("%s\n" % line.rstrip()) |
1718 |
1992 |
1993 @command('debugwireargs', |
|
1994 [('', 'three', '', 'three'), |
|
1995 ('', 'four', '', 'four'), |
|
1996 ('', 'five', '', 'five'), |
|
1997 ] + remoteopts, |
|
1998 _('REPO [OPTIONS]... [ONE [TWO]]')) |
|
1719 def debugwireargs(ui, repopath, *vals, **opts): |
1999 def debugwireargs(ui, repopath, *vals, **opts): |
1720 repo = hg.repository(hg.remoteui(ui, opts), repopath) |
2000 repo = hg.repository(hg.remoteui(ui, opts), repopath) |
1721 for opt in remoteopts: |
2001 for opt in remoteopts: |
1722 del opts[opt[1]] |
2002 del opts[opt[1]] |
1723 args = {} |
2003 args = {} |
1729 res2 = repo.debugwireargs(*vals, **args) |
2009 res2 = repo.debugwireargs(*vals, **args) |
1730 ui.write("%s\n" % res1) |
2010 ui.write("%s\n" % res1) |
1731 if res1 != res2: |
2011 if res1 != res2: |
1732 ui.warn("%s\n" % res2) |
2012 ui.warn("%s\n" % res2) |
1733 |
2013 |
2014 @command('^diff', |
|
2015 [('r', 'rev', [], _('revision'), _('REV')), |
|
2016 ('c', 'change', '', _('change made by revision'), _('REV')) |
|
2017 ] + diffopts + diffopts2 + walkopts + subrepoopts, |
|
2018 _('[OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...')) |
|
1734 def diff(ui, repo, *pats, **opts): |
2019 def diff(ui, repo, *pats, **opts): |
1735 """diff repository (or selected files) |
2020 """diff repository (or selected files) |
1736 |
2021 |
1737 Show differences between revisions for the specified files. |
2022 Show differences between revisions for the specified files. |
1738 |
2023 |
1782 diffopts = patch.diffopts(ui, opts) |
2067 diffopts = patch.diffopts(ui, opts) |
1783 m = cmdutil.match(repo, pats, opts) |
2068 m = cmdutil.match(repo, pats, opts) |
1784 cmdutil.diffordiffstat(ui, repo, diffopts, node1, node2, m, stat=stat, |
2069 cmdutil.diffordiffstat(ui, repo, diffopts, node1, node2, m, stat=stat, |
1785 listsubrepos=opts.get('subrepos')) |
2070 listsubrepos=opts.get('subrepos')) |
1786 |
2071 |
2072 @command('^export', |
|
2073 [('o', 'output', '', |
|
2074 _('print output to file with formatted name'), _('FORMAT')), |
|
2075 ('', 'switch-parent', None, _('diff against the second parent')), |
|
2076 ('r', 'rev', [], _('revisions to export'), _('REV')), |
|
2077 ] + diffopts, |
|
2078 _('[OPTION]... [-o OUTFILESPEC] REV...')) |
|
1787 def export(ui, repo, *changesets, **opts): |
2079 def export(ui, repo, *changesets, **opts): |
1788 """dump the header and diffs for one or more changesets |
2080 """dump the header and diffs for one or more changesets |
1789 |
2081 |
1790 Print the changeset header and diffs for one or more revisions. |
2082 Print the changeset header and diffs for one or more revisions. |
1791 |
2083 |
1832 ui.note(_('exporting patch:\n')) |
2124 ui.note(_('exporting patch:\n')) |
1833 cmdutil.export(repo, revs, template=opts.get('output'), |
2125 cmdutil.export(repo, revs, template=opts.get('output'), |
1834 switch_parent=opts.get('switch_parent'), |
2126 switch_parent=opts.get('switch_parent'), |
1835 opts=patch.diffopts(ui, opts)) |
2127 opts=patch.diffopts(ui, opts)) |
1836 |
2128 |
2129 @command('^forget', walkopts, _('[OPTION]... FILE...')) |
|
1837 def forget(ui, repo, *pats, **opts): |
2130 def forget(ui, repo, *pats, **opts): |
1838 """forget the specified files on the next commit |
2131 """forget the specified files on the next commit |
1839 |
2132 |
1840 Mark the specified files so they will no longer be tracked |
2133 Mark the specified files so they will no longer be tracked |
1841 after the next commit. |
2134 after the next commit. |
1868 ui.status(_('removing %s\n') % m.rel(f)) |
2161 ui.status(_('removing %s\n') % m.rel(f)) |
1869 |
2162 |
1870 repo[None].remove(forget, unlink=False) |
2163 repo[None].remove(forget, unlink=False) |
1871 return errs |
2164 return errs |
1872 |
2165 |
2166 @command('grep', |
|
2167 [('0', 'print0', None, _('end fields with NUL')), |
|
2168 ('', 'all', None, _('print all revisions that match')), |
|
2169 ('a', 'text', None, _('treat all files as text')), |
|
2170 ('f', 'follow', None, |
|
2171 _('follow changeset history,' |
|
2172 ' or file history across copies and renames')), |
|
2173 ('i', 'ignore-case', None, _('ignore case when matching')), |
|
2174 ('l', 'files-with-matches', None, |
|
2175 _('print only filenames and revisions that match')), |
|
2176 ('n', 'line-number', None, _('print matching line numbers')), |
|
2177 ('r', 'rev', [], |
|
2178 _('only search files changed within revision range'), _('REV')), |
|
2179 ('u', 'user', None, _('list the author (long with -v)')), |
|
2180 ('d', 'date', None, _('list the date (short with -q)')), |
|
2181 ] + walkopts, |
|
2182 _('[OPTION]... PATTERN [FILE]...')) |
|
1873 def grep(ui, repo, pattern, *pats, **opts): |
2183 def grep(ui, repo, pattern, *pats, **opts): |
1874 """search for a pattern in specified files and revisions |
2184 """search for a pattern in specified files and revisions |
1875 |
2185 |
1876 Search revisions of files for a regular expression. |
2186 Search revisions of files for a regular expression. |
1877 |
2187 |
2060 del matches[rev] |
2370 del matches[rev] |
2061 del revfiles[rev] |
2371 del revfiles[rev] |
2062 |
2372 |
2063 return not found |
2373 return not found |
2064 |
2374 |
2375 @command('heads', |
|
2376 [('r', 'rev', '', |
|
2377 _('show only heads which are descendants of STARTREV'), _('STARTREV')), |
|
2378 ('t', 'topo', False, _('show topological heads only')), |
|
2379 ('a', 'active', False, _('show active branchheads only (DEPRECATED)')), |
|
2380 ('c', 'closed', False, _('show normal and closed branch heads')), |
|
2381 ] + templateopts, |
|
2382 _('[-ac] [-r STARTREV] [REV]...')) |
|
2065 def heads(ui, repo, *branchrevs, **opts): |
2383 def heads(ui, repo, *branchrevs, **opts): |
2066 """show current repository heads or show branch heads |
2384 """show current repository heads or show branch heads |
2067 |
2385 |
2068 With no arguments, show all repository branch heads. |
2386 With no arguments, show all repository branch heads. |
2069 |
2387 |
2132 displayer = cmdutil.show_changeset(ui, repo, opts) |
2450 displayer = cmdutil.show_changeset(ui, repo, opts) |
2133 for ctx in heads: |
2451 for ctx in heads: |
2134 displayer.show(ctx) |
2452 displayer.show(ctx) |
2135 displayer.close() |
2453 displayer.close() |
2136 |
2454 |
2455 @command('help', |
|
2456 [('e', 'extension', None, _('show only help for extensions')), |
|
2457 ('c', 'command', None, _('show only help for commands'))], |
|
2458 _('[-ec] [TOPIC]')) |
|
2137 def help_(ui, name=None, with_version=False, unknowncmd=False, full=True, **opts): |
2459 def help_(ui, name=None, with_version=False, unknowncmd=False, full=True, **opts): |
2138 """show help for a given topic or a help overview |
2460 """show help for a given topic or a help overview |
2139 |
2461 |
2140 With no arguments, print a list of commands with short help messages. |
2462 With no arguments, print a list of commands with short help messages. |
2141 |
2463 |
2447 initindent=initindent, |
2769 initindent=initindent, |
2448 hangindent=hangindent))) |
2770 hangindent=hangindent))) |
2449 else: |
2771 else: |
2450 ui.write("%s\n" % opt) |
2772 ui.write("%s\n" % opt) |
2451 |
2773 |
2774 @command('identify|id', |
|
2775 [('r', 'rev', '', |
|
2776 _('identify the specified revision'), _('REV')), |
|
2777 ('n', 'num', None, _('show local revision number')), |
|
2778 ('i', 'id', None, _('show global revision id')), |
|
2779 ('b', 'branch', None, _('show branch')), |
|
2780 ('t', 'tags', None, _('show tags')), |
|
2781 ('B', 'bookmarks', None, _('show bookmarks'))], |
|
2782 _('[-nibtB] [-r REV] [SOURCE]')) |
|
2452 def identify(ui, repo, source=None, rev=None, |
2783 def identify(ui, repo, source=None, rev=None, |
2453 num=None, id=None, branch=None, tags=None, bookmarks=None): |
2784 num=None, id=None, branch=None, tags=None, bookmarks=None): |
2454 """identify the working copy or specified revision |
2785 """identify the working copy or specified revision |
2455 |
2786 |
2456 Print a summary identifying the repository state at REV using one or |
2787 Print a summary identifying the repository state at REV using one or |
2555 if bookmarks: |
2886 if bookmarks: |
2556 output.extend(ctx.bookmarks()) |
2887 output.extend(ctx.bookmarks()) |
2557 |
2888 |
2558 ui.write("%s\n" % ' '.join(output)) |
2889 ui.write("%s\n" % ' '.join(output)) |
2559 |
2890 |
2891 @command('import|patch', |
|
2892 [('p', 'strip', 1, |
|
2893 _('directory strip option for patch. This has the same ' |
|
2894 'meaning as the corresponding patch option'), _('NUM')), |
|
2895 ('b', 'base', '', _('base path'), _('PATH')), |
|
2896 ('f', 'force', None, _('skip check for outstanding uncommitted changes')), |
|
2897 ('', 'no-commit', None, |
|
2898 _("don't commit, just update the working directory")), |
|
2899 ('', 'exact', None, |
|
2900 _('apply patch to the nodes from which it was generated')), |
|
2901 ('', 'import-branch', None, |
|
2902 _('use any branch information in patch (implied by --exact)'))] + |
|
2903 commitopts + commitopts2 + similarityopts, |
|
2904 _('[OPTION]... PATCH...')) |
|
2560 def import_(ui, repo, patch1, *patches, **opts): |
2905 def import_(ui, repo, patch1, *patches, **opts): |
2561 """import an ordered set of patches |
2906 """import an ordered set of patches |
2562 |
2907 |
2563 Import a list of patches and commit them individually (unless |
2908 Import a list of patches and commit them individually (unless |
2564 --no-commit is specified). |
2909 --no-commit is specified). |
2715 if msgs: |
3060 if msgs: |
2716 repo.opener.write('last-message.txt', '\n* * *\n'.join(msgs)) |
3061 repo.opener.write('last-message.txt', '\n* * *\n'.join(msgs)) |
2717 finally: |
3062 finally: |
2718 release(lock, wlock) |
3063 release(lock, wlock) |
2719 |
3064 |
3065 @command('incoming|in', |
|
3066 [('f', 'force', None, |
|
3067 _('run even if remote repository is unrelated')), |
|
3068 ('n', 'newest-first', None, _('show newest record first')), |
|
3069 ('', 'bundle', '', |
|
3070 _('file to store the bundles into'), _('FILE')), |
|
3071 ('r', 'rev', [], _('a remote changeset intended to be added'), _('REV')), |
|
3072 ('B', 'bookmarks', False, _("compare bookmarks")), |
|
3073 ('b', 'branch', [], |
|
3074 _('a specific branch you would like to pull'), _('BRANCH')), |
|
3075 ] + logopts + remoteopts + subrepoopts, |
|
3076 _('[-p] [-n] [-M] [-f] [-r REV]... [--bundle FILENAME] [SOURCE]')) |
|
2720 def incoming(ui, repo, source="default", **opts): |
3077 def incoming(ui, repo, source="default", **opts): |
2721 """show new changesets found in source |
3078 """show new changesets found in source |
2722 |
3079 |
2723 Show new changesets found in the specified path/URL or the default |
3080 Show new changesets found in the specified path/URL or the default |
2724 pull location. These are the changesets that would have been pulled |
3081 pull location. These are the changesets that would have been pulled |
2745 return bookmarks.diff(ui, repo, other) |
3102 return bookmarks.diff(ui, repo, other) |
2746 |
3103 |
2747 ret = hg.incoming(ui, repo, source, opts) |
3104 ret = hg.incoming(ui, repo, source, opts) |
2748 return ret |
3105 return ret |
2749 |
3106 |
3107 @command('^init', remoteopts, _('[-e CMD] [--remotecmd CMD] [DEST]')) |
|
2750 def init(ui, dest=".", **opts): |
3108 def init(ui, dest=".", **opts): |
2751 """create a new repository in the given directory |
3109 """create a new repository in the given directory |
2752 |
3110 |
2753 Initialize a new repository in the given directory. If the given |
3111 Initialize a new repository in the given directory. If the given |
2754 directory does not exist, it will be created. |
3112 directory does not exist, it will be created. |
2760 |
3118 |
2761 Returns 0 on success. |
3119 Returns 0 on success. |
2762 """ |
3120 """ |
2763 hg.repository(hg.remoteui(ui, opts), ui.expandpath(dest), create=1) |
3121 hg.repository(hg.remoteui(ui, opts), ui.expandpath(dest), create=1) |
2764 |
3122 |
3123 @command('locate', |
|
3124 [('r', 'rev', '', _('search the repository as it is in REV'), _('REV')), |
|
3125 ('0', 'print0', None, _('end filenames with NUL, for use with xargs')), |
|
3126 ('f', 'fullpath', None, _('print complete paths from the filesystem root')), |
|
3127 ] + walkopts, |
|
3128 _('[OPTION]... [PATTERN]...')) |
|
2765 def locate(ui, repo, *pats, **opts): |
3129 def locate(ui, repo, *pats, **opts): |
2766 """locate files matching specific patterns |
3130 """locate files matching specific patterns |
2767 |
3131 |
2768 Print files under Mercurial control in the working directory whose |
3132 Print files under Mercurial control in the working directory whose |
2769 names match the given patterns. |
3133 names match the given patterns. |
2797 ui.write(((pats and m.rel(abs)) or abs), end) |
3161 ui.write(((pats and m.rel(abs)) or abs), end) |
2798 ret = 0 |
3162 ret = 0 |
2799 |
3163 |
2800 return ret |
3164 return ret |
2801 |
3165 |
3166 @command('^log|history', |
|
3167 [('f', 'follow', None, |
|
3168 _('follow changeset history, or file history across copies and renames')), |
|
3169 ('', 'follow-first', None, |
|
3170 _('only follow the first parent of merge changesets')), |
|
3171 ('d', 'date', '', _('show revisions matching date spec'), _('DATE')), |
|
3172 ('C', 'copies', None, _('show copied files')), |
|
3173 ('k', 'keyword', [], |
|
3174 _('do case-insensitive search for a given text'), _('TEXT')), |
|
3175 ('r', 'rev', [], _('show the specified revision or range'), _('REV')), |
|
3176 ('', 'removed', None, _('include revisions where files were removed')), |
|
3177 ('m', 'only-merges', None, _('show only merges')), |
|
3178 ('u', 'user', [], _('revisions committed by user'), _('USER')), |
|
3179 ('', 'only-branch', [], |
|
3180 _('show only changesets within the given named branch (DEPRECATED)'), |
|
3181 _('BRANCH')), |
|
3182 ('b', 'branch', [], |
|
3183 _('show changesets within the given named branch'), _('BRANCH')), |
|
3184 ('P', 'prune', [], |
|
3185 _('do not display revision or any of its ancestors'), _('REV')), |
|
3186 ] + logopts + walkopts, |
|
3187 _('[OPTION]... [FILE]')) |
|
2802 def log(ui, repo, *pats, **opts): |
3188 def log(ui, repo, *pats, **opts): |
2803 """show revision history of entire repository or files |
3189 """show revision history of entire repository or files |
2804 |
3190 |
2805 Print the revision history of the specified files or the entire |
3191 Print the revision history of the specified files or the entire |
2806 project. |
3192 project. |
2896 break |
3282 break |
2897 if displayer.flush(ctx.rev()): |
3283 if displayer.flush(ctx.rev()): |
2898 count += 1 |
3284 count += 1 |
2899 displayer.close() |
3285 displayer.close() |
2900 |
3286 |
3287 @command('manifest', |
|
3288 [('r', 'rev', '', _('revision to display'), _('REV'))], |
|
3289 _('[-r REV]')) |
|
2901 def manifest(ui, repo, node=None, rev=None): |
3290 def manifest(ui, repo, node=None, rev=None): |
2902 """output the current or given revision of the project manifest |
3291 """output the current or given revision of the project manifest |
2903 |
3292 |
2904 Print a list of version controlled files for the given revision. |
3293 Print a list of version controlled files for the given revision. |
2905 If no revision is given, the first parent of the working directory |
3294 If no revision is given, the first parent of the working directory |
2924 ui.write("%40s " % hex(ctx.manifest()[f])) |
3313 ui.write("%40s " % hex(ctx.manifest()[f])) |
2925 if ui.verbose: |
3314 if ui.verbose: |
2926 ui.write(decor[ctx.flags(f)]) |
3315 ui.write(decor[ctx.flags(f)]) |
2927 ui.write("%s\n" % f) |
3316 ui.write("%s\n" % f) |
2928 |
3317 |
3318 @command('^merge', |
|
3319 [('f', 'force', None, _('force a merge with outstanding changes')), |
|
3320 ('t', 'tool', '', _('specify merge tool')), |
|
3321 ('r', 'rev', '', _('revision to merge'), _('REV')), |
|
3322 ('P', 'preview', None, |
|
3323 _('review revisions to merge (no merge is performed)'))], |
|
3324 _('[-P] [-f] [[-r] REV]')) |
|
2929 def merge(ui, repo, node=None, **opts): |
3325 def merge(ui, repo, node=None, **opts): |
2930 """merge working directory with another revision |
3326 """merge working directory with another revision |
2931 |
3327 |
2932 The current working directory is updated with all changes made in |
3328 The current working directory is updated with all changes made in |
2933 the requested revision since the last common predecessor revision. |
3329 the requested revision since the last common predecessor revision. |
3006 ui.setconfig('ui', 'forcemerge', opts.get('tool', '')) |
3402 ui.setconfig('ui', 'forcemerge', opts.get('tool', '')) |
3007 return hg.merge(repo, node, force=opts.get('force')) |
3403 return hg.merge(repo, node, force=opts.get('force')) |
3008 finally: |
3404 finally: |
3009 ui.setconfig('ui', 'forcemerge', '') |
3405 ui.setconfig('ui', 'forcemerge', '') |
3010 |
3406 |
3407 @command('outgoing|out', |
|
3408 [('f', 'force', None, _('run even when the destination is unrelated')), |
|
3409 ('r', 'rev', [], |
|
3410 _('a changeset intended to be included in the destination'), _('REV')), |
|
3411 ('n', 'newest-first', None, _('show newest record first')), |
|
3412 ('B', 'bookmarks', False, _('compare bookmarks')), |
|
3413 ('b', 'branch', [], _('a specific branch you would like to push'), |
|
3414 _('BRANCH')), |
|
3415 ] + logopts + remoteopts + subrepoopts, |
|
3416 _('[-M] [-p] [-n] [-f] [-r REV]... [DEST]')) |
|
3011 def outgoing(ui, repo, dest=None, **opts): |
3417 def outgoing(ui, repo, dest=None, **opts): |
3012 """show changesets not found in the destination |
3418 """show changesets not found in the destination |
3013 |
3419 |
3014 Show changesets not found in the specified destination repository |
3420 Show changesets not found in the specified destination repository |
3015 or the default push location. These are the changesets that would |
3421 or the default push location. These are the changesets that would |
3031 return bookmarks.diff(ui, other, repo) |
3437 return bookmarks.diff(ui, other, repo) |
3032 |
3438 |
3033 ret = hg.outgoing(ui, repo, dest, opts) |
3439 ret = hg.outgoing(ui, repo, dest, opts) |
3034 return ret |
3440 return ret |
3035 |
3441 |
3442 @command('parents', |
|
3443 [('r', 'rev', '', _('show parents of the specified revision'), _('REV')), |
|
3444 ] + templateopts, |
|
3445 _('[-r REV] [FILE]')) |
|
3036 def parents(ui, repo, file_=None, **opts): |
3446 def parents(ui, repo, file_=None, **opts): |
3037 """show the parents of the working directory or revision |
3447 """show the parents of the working directory or revision |
3038 |
3448 |
3039 Print the working directory's parent revisions. If a revision is |
3449 Print the working directory's parent revisions. If a revision is |
3040 given via -r/--rev, the parent of that revision will be printed. |
3450 given via -r/--rev, the parent of that revision will be printed. |
3071 for n in p: |
3481 for n in p: |
3072 if n != nullid: |
3482 if n != nullid: |
3073 displayer.show(repo[n]) |
3483 displayer.show(repo[n]) |
3074 displayer.close() |
3484 displayer.close() |
3075 |
3485 |
3486 @command('paths', [], _('[NAME]')) |
|
3076 def paths(ui, repo, search=None): |
3487 def paths(ui, repo, search=None): |
3077 """show aliases for remote repositories |
3488 """show aliases for remote repositories |
3078 |
3489 |
3079 Show definition of symbolic path name NAME. If no name is given, |
3490 Show definition of symbolic path name NAME. If no name is given, |
3080 show definition of all available names. |
3491 show definition of all available names. |
3126 else: |
3537 else: |
3127 ui.status(_("(run 'hg heads' to see heads)\n")) |
3538 ui.status(_("(run 'hg heads' to see heads)\n")) |
3128 else: |
3539 else: |
3129 ui.status(_("(run 'hg update' to get a working copy)\n")) |
3540 ui.status(_("(run 'hg update' to get a working copy)\n")) |
3130 |
3541 |
3542 @command('^pull', |
|
3543 [('u', 'update', None, |
|
3544 _('update to new branch head if changesets were pulled')), |
|
3545 ('f', 'force', None, _('run even when remote repository is unrelated')), |
|
3546 ('r', 'rev', [], _('a remote changeset intended to be added'), _('REV')), |
|
3547 ('B', 'bookmark', [], _("bookmark to pull"), _('BOOKMARK')), |
|
3548 ('b', 'branch', [], _('a specific branch you would like to pull'), |
|
3549 _('BRANCH')), |
|
3550 ] + remoteopts, |
|
3551 _('[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]')) |
|
3131 def pull(ui, repo, source="default", **opts): |
3552 def pull(ui, repo, source="default", **opts): |
3132 """pull changes from the specified source |
3553 """pull changes from the specified source |
3133 |
3554 |
3134 Pull changes from a remote repository to a local one. |
3555 Pull changes from a remote repository to a local one. |
3135 |
3556 |
3189 repo._bookmarks[b] = repo[rb[b]].node() |
3610 repo._bookmarks[b] = repo[rb[b]].node() |
3190 bookmarks.write(repo) |
3611 bookmarks.write(repo) |
3191 |
3612 |
3192 return ret |
3613 return ret |
3193 |
3614 |
3615 @command('^push', |
|
3616 [('f', 'force', None, _('force push')), |
|
3617 ('r', 'rev', [], |
|
3618 _('a changeset intended to be included in the destination'), |
|
3619 _('REV')), |
|
3620 ('B', 'bookmark', [], _("bookmark to push"), _('BOOKMARK')), |
|
3621 ('b', 'branch', [], |
|
3622 _('a specific branch you would like to push'), _('BRANCH')), |
|
3623 ('', 'new-branch', False, _('allow pushing a new branch')), |
|
3624 ] + remoteopts, |
|
3625 _('[-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]')) |
|
3194 def push(ui, repo, dest=None, **opts): |
3626 def push(ui, repo, dest=None, **opts): |
3195 """push changes to the specified destination |
3627 """push changes to the specified destination |
3196 |
3628 |
3197 Push changesets from the local repository to the specified |
3629 Push changesets from the local repository to the specified |
3198 destination. |
3630 destination. |
3275 if not result: |
3707 if not result: |
3276 result = 2 |
3708 result = 2 |
3277 |
3709 |
3278 return result |
3710 return result |
3279 |
3711 |
3712 @command('recover', []) |
|
3280 def recover(ui, repo): |
3713 def recover(ui, repo): |
3281 """roll back an interrupted transaction |
3714 """roll back an interrupted transaction |
3282 |
3715 |
3283 Recover from an interrupted commit or pull. |
3716 Recover from an interrupted commit or pull. |
3284 |
3717 |
3290 """ |
3723 """ |
3291 if repo.recover(): |
3724 if repo.recover(): |
3292 return hg.verify(repo) |
3725 return hg.verify(repo) |
3293 return 1 |
3726 return 1 |
3294 |
3727 |
3728 @command('^remove|rm', |
|
3729 [('A', 'after', None, _('record delete for missing files')), |
|
3730 ('f', 'force', None, |
|
3731 _('remove (and delete) file even if added or modified')), |
|
3732 ] + walkopts, |
|
3733 _('[OPTION]... FILE...')) |
|
3295 def remove(ui, repo, *pats, **opts): |
3734 def remove(ui, repo, *pats, **opts): |
3296 """remove the specified files on the next commit |
3735 """remove the specified files on the next commit |
3297 |
3736 |
3298 Schedule the indicated files for removal from the repository. |
3737 Schedule the indicated files for removal from the repository. |
3299 |
3738 |
3360 |
3799 |
3361 repo[None].forget(forget) |
3800 repo[None].forget(forget) |
3362 repo[None].remove(remove, unlink=not after) |
3801 repo[None].remove(remove, unlink=not after) |
3363 return ret |
3802 return ret |
3364 |
3803 |
3804 @command('rename|move|mv', |
|
3805 [('A', 'after', None, _('record a rename that has already occurred')), |
|
3806 ('f', 'force', None, _('forcibly copy over an existing managed file')), |
|
3807 ] + walkopts + dryrunopts, |
|
3808 _('[OPTION]... SOURCE... DEST')) |
|
3365 def rename(ui, repo, *pats, **opts): |
3809 def rename(ui, repo, *pats, **opts): |
3366 """rename files; equivalent of copy + remove |
3810 """rename files; equivalent of copy + remove |
3367 |
3811 |
3368 Mark dest as copies of sources; mark sources for deletion. If dest |
3812 Mark dest as copies of sources; mark sources for deletion. If dest |
3369 is a directory, copies are put in that directory. If dest is a |
3813 is a directory, copies are put in that directory. If dest is a |
3382 try: |
3826 try: |
3383 return cmdutil.copy(ui, repo, pats, opts, rename=True) |
3827 return cmdutil.copy(ui, repo, pats, opts, rename=True) |
3384 finally: |
3828 finally: |
3385 wlock.release() |
3829 wlock.release() |
3386 |
3830 |
3831 @command('resolve', |
|
3832 [('a', 'all', None, _('select all unresolved files')), |
|
3833 ('l', 'list', None, _('list state of files needing merge')), |
|
3834 ('m', 'mark', None, _('mark files as resolved')), |
|
3835 ('u', 'unmark', None, _('mark files as unresolved')), |
|
3836 ('t', 'tool', '', _('specify merge tool')), |
|
3837 ('n', 'no-status', None, _('hide status prefix'))] |
|
3838 + walkopts, |
|
3839 _('[OPTION]... [FILE]...')) |
|
3387 def resolve(ui, repo, *pats, **opts): |
3840 def resolve(ui, repo, *pats, **opts): |
3388 """redo merges or set/view the merge status of files |
3841 """redo merges or set/view the merge status of files |
3389 |
3842 |
3390 Merges with unresolved conflicts are often the result of |
3843 Merges with unresolved conflicts are often the result of |
3391 non-interactive merging using the ``internal:merge`` configuration |
3844 non-interactive merging using the ``internal:merge`` configuration |
3468 util.rename(a + ".resolve", a + ".orig") |
3921 util.rename(a + ".resolve", a + ".orig") |
3469 |
3922 |
3470 ms.commit() |
3923 ms.commit() |
3471 return ret |
3924 return ret |
3472 |
3925 |
3926 @command('revert', |
|
3927 [('a', 'all', None, _('revert all changes when no arguments given')), |
|
3928 ('d', 'date', '', _('tipmost revision matching date'), _('DATE')), |
|
3929 ('r', 'rev', '', _('revert to the specified revision'), _('REV')), |
|
3930 ('', 'no-backup', None, _('do not save backup copies of files')), |
|
3931 ] + walkopts + dryrunopts, |
|
3932 _('[OPTION]... [-r REV] [NAME]...')) |
|
3473 def revert(ui, repo, *pats, **opts): |
3933 def revert(ui, repo, *pats, **opts): |
3474 """restore individual files or directories to an earlier state |
3934 """restore individual files or directories to an earlier state |
3475 |
3935 |
3476 .. note:: |
3936 .. note:: |
3477 This command is most likely not what you are looking for. |
3937 This command is most likely not what you are looking for. |
3696 normal(f) |
4156 normal(f) |
3697 |
4157 |
3698 finally: |
4158 finally: |
3699 wlock.release() |
4159 wlock.release() |
3700 |
4160 |
4161 @command('rollback', dryrunopts) |
|
3701 def rollback(ui, repo, **opts): |
4162 def rollback(ui, repo, **opts): |
3702 """roll back the last transaction (dangerous) |
4163 """roll back the last transaction (dangerous) |
3703 |
4164 |
3704 This command should be used with care. There is only one level of |
4165 This command should be used with care. There is only one level of |
3705 rollback, and there is no way to undo a rollback. It will also |
4166 rollback, and there is no way to undo a rollback. It will also |
3727 |
4188 |
3728 Returns 0 on success, 1 if no rollback data is available. |
4189 Returns 0 on success, 1 if no rollback data is available. |
3729 """ |
4190 """ |
3730 return repo.rollback(opts.get('dry_run')) |
4191 return repo.rollback(opts.get('dry_run')) |
3731 |
4192 |
4193 @command('root', []) |
|
3732 def root(ui, repo): |
4194 def root(ui, repo): |
3733 """print the root (top) of the current working directory |
4195 """print the root (top) of the current working directory |
3734 |
4196 |
3735 Print the root directory of the current repository. |
4197 Print the root directory of the current repository. |
3736 |
4198 |
3737 Returns 0 on success. |
4199 Returns 0 on success. |
3738 """ |
4200 """ |
3739 ui.write(repo.root + "\n") |
4201 ui.write(repo.root + "\n") |
3740 |
4202 |
4203 @command('^serve', |
|
4204 [('A', 'accesslog', '', _('name of access log file to write to'), |
|
4205 _('FILE')), |
|
4206 ('d', 'daemon', None, _('run server in background')), |
|
4207 ('', 'daemon-pipefds', '', _('used internally by daemon mode'), _('NUM')), |
|
4208 ('E', 'errorlog', '', _('name of error log file to write to'), _('FILE')), |
|
4209 # use string type, then we can check if something was passed |
|
4210 ('p', 'port', '', _('port to listen on (default: 8000)'), _('PORT')), |
|
4211 ('a', 'address', '', _('address to listen on (default: all interfaces)'), |
|
4212 _('ADDR')), |
|
4213 ('', 'prefix', '', _('prefix path to serve from (default: server root)'), |
|
4214 _('PREFIX')), |
|
4215 ('n', 'name', '', |
|
4216 _('name to show in web pages (default: working directory)'), _('NAME')), |
|
4217 ('', 'web-conf', '', |
|
4218 _('name of the hgweb config file (see "hg help hgweb")'), _('FILE')), |
|
4219 ('', 'webdir-conf', '', _('name of the hgweb config file (DEPRECATED)'), |
|
4220 _('FILE')), |
|
4221 ('', 'pid-file', '', _('name of file to write process ID to'), _('FILE')), |
|
4222 ('', 'stdio', None, _('for remote clients')), |
|
4223 ('t', 'templates', '', _('web templates to use'), _('TEMPLATE')), |
|
4224 ('', 'style', '', _('template style to use'), _('STYLE')), |
|
4225 ('6', 'ipv6', None, _('use IPv6 in addition to IPv4')), |
|
4226 ('', 'certificate', '', _('SSL certificate file'), _('FILE'))], |
|
4227 _('[OPTION]...')) |
|
3741 def serve(ui, repo, **opts): |
4228 def serve(ui, repo, **opts): |
3742 """start stand-alone webserver |
4229 """start stand-alone webserver |
3743 |
4230 |
3744 Start a local HTTP repository browser and pull server. You can use |
4231 Start a local HTTP repository browser and pull server. You can use |
3745 this for ad-hoc sharing and browsing of repositories. It is |
4232 this for ad-hoc sharing and browsing of repositories. It is |
3832 |
4319 |
3833 service = service() |
4320 service = service() |
3834 |
4321 |
3835 cmdutil.service(opts, initfn=service.init, runfn=service.run) |
4322 cmdutil.service(opts, initfn=service.init, runfn=service.run) |
3836 |
4323 |
4324 @command('^status|st', |
|
4325 [('A', 'all', None, _('show status of all files')), |
|
4326 ('m', 'modified', None, _('show only modified files')), |
|
4327 ('a', 'added', None, _('show only added files')), |
|
4328 ('r', 'removed', None, _('show only removed files')), |
|
4329 ('d', 'deleted', None, _('show only deleted (but tracked) files')), |
|
4330 ('c', 'clean', None, _('show only files without changes')), |
|
4331 ('u', 'unknown', None, _('show only unknown (not tracked) files')), |
|
4332 ('i', 'ignored', None, _('show only ignored files')), |
|
4333 ('n', 'no-status', None, _('hide status prefix')), |
|
4334 ('C', 'copies', None, _('show source of copied files')), |
|
4335 ('0', 'print0', None, _('end filenames with NUL, for use with xargs')), |
|
4336 ('', 'rev', [], _('show difference from revision'), _('REV')), |
|
4337 ('', 'change', '', _('list the changed files of a revision'), _('REV')), |
|
4338 ] + walkopts + subrepoopts, |
|
4339 _('[OPTION]... [FILE]...')) |
|
3837 def status(ui, repo, *pats, **opts): |
4340 def status(ui, repo, *pats, **opts): |
3838 """show changed files in the working directory |
4341 """show changed files in the working directory |
3839 |
4342 |
3840 Show status of files in the repository. If names are given, only |
4343 Show status of files in the repository. If names are given, only |
3841 files that match are shown. Files that are clean or ignored or |
4344 files that match are shown. Files that are clean or ignored or |
3924 label='status.' + state) |
4427 label='status.' + state) |
3925 if f in copy: |
4428 if f in copy: |
3926 ui.write(' %s%s' % (repo.pathto(copy[f], cwd), end), |
4429 ui.write(' %s%s' % (repo.pathto(copy[f], cwd), end), |
3927 label='status.copied') |
4430 label='status.copied') |
3928 |
4431 |
4432 @command('^summary|sum', |
|
4433 [('', 'remote', None, _('check for push and pull'))], '[--remote]') |
|
3929 def summary(ui, repo, **opts): |
4434 def summary(ui, repo, **opts): |
3930 """summarize working directory state |
4435 """summarize working directory state |
3931 |
4436 |
3932 This generates a brief summary of the working directory state, |
4437 This generates a brief summary of the working directory state, |
3933 including parents, branch, commit status, and available updates. |
4438 including parents, branch, commit status, and available updates. |
4086 if t: |
4591 if t: |
4087 ui.write(_('remote: %s\n') % (', '.join(t))) |
4592 ui.write(_('remote: %s\n') % (', '.join(t))) |
4088 else: |
4593 else: |
4089 ui.status(_('remote: (synced)\n')) |
4594 ui.status(_('remote: (synced)\n')) |
4090 |
4595 |
4596 @command('tag', |
|
4597 [('f', 'force', None, _('force tag')), |
|
4598 ('l', 'local', None, _('make the tag local')), |
|
4599 ('r', 'rev', '', _('revision to tag'), _('REV')), |
|
4600 ('', 'remove', None, _('remove a tag')), |
|
4601 # -l/--local is already there, commitopts cannot be used |
|
4602 ('e', 'edit', None, _('edit commit message')), |
|
4603 ('m', 'message', '', _('use <text> as commit message'), _('TEXT')), |
|
4604 ] + commitopts2, |
|
4605 _('[-f] [-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME...')) |
|
4091 def tag(ui, repo, name1, *names, **opts): |
4606 def tag(ui, repo, name1, *names, **opts): |
4092 """add one or more tags for the current or given revision |
4607 """add one or more tags for the current or given revision |
4093 |
4608 |
4094 Name a particular revision using <name>. |
4609 Name a particular revision using <name>. |
4095 |
4610 |
4175 if opts.get('edit'): |
4690 if opts.get('edit'): |
4176 message = ui.edit(message, ui.username()) |
4691 message = ui.edit(message, ui.username()) |
4177 |
4692 |
4178 repo.tag(names, r, message, opts.get('local'), opts.get('user'), date) |
4693 repo.tag(names, r, message, opts.get('local'), opts.get('user'), date) |
4179 |
4694 |
4695 @command('tags', [], '') |
|
4180 def tags(ui, repo): |
4696 def tags(ui, repo): |
4181 """list repository tags |
4697 """list repository tags |
4182 |
4698 |
4183 This lists both regular and local tags. When the -v/--verbose |
4699 This lists both regular and local tags. When the -v/--verbose |
4184 switch is used, a third column "local" is printed for local tags. |
4700 switch is used, a third column "local" is printed for local tags. |
4203 tagtype = " local" |
4719 tagtype = " local" |
4204 else: |
4720 else: |
4205 tagtype = "" |
4721 tagtype = "" |
4206 ui.write("%s%s %s%s\n" % (t, spaces, r, tagtype)) |
4722 ui.write("%s%s %s%s\n" % (t, spaces, r, tagtype)) |
4207 |
4723 |
4724 @command('tip', |
|
4725 [('p', 'patch', None, _('show patch')), |
|
4726 ('g', 'git', None, _('use git extended diff format')), |
|
4727 ] + templateopts, |
|
4728 _('[-p] [-g]')) |
|
4208 def tip(ui, repo, **opts): |
4729 def tip(ui, repo, **opts): |
4209 """show the tip revision |
4730 """show the tip revision |
4210 |
4731 |
4211 The tip revision (usually just called the tip) is the changeset |
4732 The tip revision (usually just called the tip) is the changeset |
4212 most recently added to the repository (and therefore the most |
4733 most recently added to the repository (and therefore the most |
4221 """ |
4742 """ |
4222 displayer = cmdutil.show_changeset(ui, repo, opts) |
4743 displayer = cmdutil.show_changeset(ui, repo, opts) |
4223 displayer.show(repo[len(repo) - 1]) |
4744 displayer.show(repo[len(repo) - 1]) |
4224 displayer.close() |
4745 displayer.close() |
4225 |
4746 |
4747 @command('unbundle', |
|
4748 [('u', 'update', None, |
|
4749 _('update to new branch head if changesets were unbundled'))], |
|
4750 _('[-u] FILE...')) |
|
4226 def unbundle(ui, repo, fname1, *fnames, **opts): |
4751 def unbundle(ui, repo, fname1, *fnames, **opts): |
4227 """apply one or more changegroup files |
4752 """apply one or more changegroup files |
4228 |
4753 |
4229 Apply one or more compressed changegroup files generated by the |
4754 Apply one or more compressed changegroup files generated by the |
4230 bundle command. |
4755 bundle command. |
4244 bookmarks.updatecurrentbookmark(repo, wc.node(), wc.branch()) |
4769 bookmarks.updatecurrentbookmark(repo, wc.node(), wc.branch()) |
4245 finally: |
4770 finally: |
4246 lock.release() |
4771 lock.release() |
4247 return postincoming(ui, repo, modheads, opts.get('update'), None) |
4772 return postincoming(ui, repo, modheads, opts.get('update'), None) |
4248 |
4773 |
4774 @command('^update|up|checkout|co', |
|
4775 [('C', 'clean', None, _('discard uncommitted changes (no backup)')), |
|
4776 ('c', 'check', None, |
|
4777 _('update across branches if no uncommitted changes')), |
|
4778 ('d', 'date', '', _('tipmost revision matching date'), _('DATE')), |
|
4779 ('r', 'rev', '', _('revision'), _('REV'))], |
|
4780 _('[-c] [-C] [-d DATE] [[-r] REV]')) |
|
4249 def update(ui, repo, node=None, rev=None, clean=False, date=None, check=False): |
4781 def update(ui, repo, node=None, rev=None, clean=False, date=None, check=False): |
4250 """update working directory (or switch revisions) |
4782 """update working directory (or switch revisions) |
4251 |
4783 |
4252 Update the repository's working directory to the specified |
4784 Update the repository's working directory to the specified |
4253 changeset. If no changeset is specified, update to the tip of the |
4785 changeset. If no changeset is specified, update to the tip of the |
4319 if brev in repo._bookmarks: |
4851 if brev in repo._bookmarks: |
4320 bookmarks.setcurrent(repo, brev) |
4852 bookmarks.setcurrent(repo, brev) |
4321 |
4853 |
4322 return ret |
4854 return ret |
4323 |
4855 |
4856 @command('verify', []) |
|
4324 def verify(ui, repo): |
4857 def verify(ui, repo): |
4325 """verify the integrity of the repository |
4858 """verify the integrity of the repository |
4326 |
4859 |
4327 Verify the integrity of the current repository. |
4860 Verify the integrity of the current repository. |
4328 |
4861 |
4333 |
4866 |
4334 Returns 0 on success, 1 if errors are encountered. |
4867 Returns 0 on success, 1 if errors are encountered. |
4335 """ |
4868 """ |
4336 return hg.verify(repo) |
4869 return hg.verify(repo) |
4337 |
4870 |
4871 @command('version', []) |
|
4338 def version_(ui): |
4872 def version_(ui): |
4339 """output version and copyright information""" |
4873 """output version and copyright information""" |
4340 ui.write(_("Mercurial Distributed SCM (version %s)\n") |
4874 ui.write(_("Mercurial Distributed SCM (version %s)\n") |
4341 % util.version()) |
4875 % util.version()) |
4342 ui.status(_( |
4876 ui.status(_( |
4345 "This is free software; see the source for copying conditions. " |
4879 "This is free software; see the source for copying conditions. " |
4346 "There is NO\nwarranty; " |
4880 "There is NO\nwarranty; " |
4347 "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" |
4881 "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" |
4348 )) |
4882 )) |
4349 |
4883 |
4350 # Command options and aliases are listed here, alphabetically |
|
4351 |
|
4352 globalopts = [ |
|
4353 ('R', 'repository', '', |
|
4354 _('repository root directory or name of overlay bundle file'), |
|
4355 _('REPO')), |
|
4356 ('', 'cwd', '', |
|
4357 _('change working directory'), _('DIR')), |
|
4358 ('y', 'noninteractive', None, |
|
4359 _('do not prompt, assume \'yes\' for any required answers')), |
|
4360 ('q', 'quiet', None, _('suppress output')), |
|
4361 ('v', 'verbose', None, _('enable additional output')), |
|
4362 ('', 'config', [], |
|
4363 _('set/override config option (use \'section.name=value\')'), |
|
4364 _('CONFIG')), |
|
4365 ('', 'debug', None, _('enable debugging output')), |
|
4366 ('', 'debugger', None, _('start debugger')), |
|
4367 ('', 'encoding', encoding.encoding, _('set the charset encoding'), |
|
4368 _('ENCODE')), |
|
4369 ('', 'encodingmode', encoding.encodingmode, |
|
4370 _('set the charset encoding mode'), _('MODE')), |
|
4371 ('', 'traceback', None, _('always print a traceback on exception')), |
|
4372 ('', 'time', None, _('time how long the command takes')), |
|
4373 ('', 'profile', None, _('print command execution profile')), |
|
4374 ('', 'version', None, _('output version information and exit')), |
|
4375 ('h', 'help', None, _('display help and exit')), |
|
4376 ] |
|
4377 |
|
4378 dryrunopts = [('n', 'dry-run', None, |
|
4379 _('do not perform actions, just print output'))] |
|
4380 |
|
4381 remoteopts = [ |
|
4382 ('e', 'ssh', '', |
|
4383 _('specify ssh command to use'), _('CMD')), |
|
4384 ('', 'remotecmd', '', |
|
4385 _('specify hg command to run on the remote side'), _('CMD')), |
|
4386 ('', 'insecure', None, |
|
4387 _('do not verify server certificate (ignoring web.cacerts config)')), |
|
4388 ] |
|
4389 |
|
4390 walkopts = [ |
|
4391 ('I', 'include', [], |
|
4392 _('include names matching the given patterns'), _('PATTERN')), |
|
4393 ('X', 'exclude', [], |
|
4394 _('exclude names matching the given patterns'), _('PATTERN')), |
|
4395 ] |
|
4396 |
|
4397 commitopts = [ |
|
4398 ('m', 'message', '', |
|
4399 _('use text as commit message'), _('TEXT')), |
|
4400 ('l', 'logfile', '', |
|
4401 _('read commit message from file'), _('FILE')), |
|
4402 ] |
|
4403 |
|
4404 commitopts2 = [ |
|
4405 ('d', 'date', '', |
|
4406 _('record the specified date as commit date'), _('DATE')), |
|
4407 ('u', 'user', '', |
|
4408 _('record the specified user as committer'), _('USER')), |
|
4409 ] |
|
4410 |
|
4411 templateopts = [ |
|
4412 ('', 'style', '', |
|
4413 _('display using template map file'), _('STYLE')), |
|
4414 ('', 'template', '', |
|
4415 _('display with template'), _('TEMPLATE')), |
|
4416 ] |
|
4417 |
|
4418 logopts = [ |
|
4419 ('p', 'patch', None, _('show patch')), |
|
4420 ('g', 'git', None, _('use git extended diff format')), |
|
4421 ('l', 'limit', '', |
|
4422 _('limit number of changes displayed'), _('NUM')), |
|
4423 ('M', 'no-merges', None, _('do not show merges')), |
|
4424 ('', 'stat', None, _('output diffstat-style summary of changes')), |
|
4425 ] + templateopts |
|
4426 |
|
4427 diffopts = [ |
|
4428 ('a', 'text', None, _('treat all files as text')), |
|
4429 ('g', 'git', None, _('use git extended diff format')), |
|
4430 ('', 'nodates', None, _('omit dates from diff headers')) |
|
4431 ] |
|
4432 |
|
4433 diffopts2 = [ |
|
4434 ('p', 'show-function', None, _('show which function each change is in')), |
|
4435 ('', 'reverse', None, _('produce a diff that undoes the changes')), |
|
4436 ('w', 'ignore-all-space', None, |
|
4437 _('ignore white space when comparing lines')), |
|
4438 ('b', 'ignore-space-change', None, |
|
4439 _('ignore changes in the amount of white space')), |
|
4440 ('B', 'ignore-blank-lines', None, |
|
4441 _('ignore changes whose lines are all blank')), |
|
4442 ('U', 'unified', '', |
|
4443 _('number of lines of context to show'), _('NUM')), |
|
4444 ('', 'stat', None, _('output diffstat-style summary of changes')), |
|
4445 ] |
|
4446 |
|
4447 similarityopts = [ |
|
4448 ('s', 'similarity', '', |
|
4449 _('guess renamed files by similarity (0<=s<=100)'), _('SIMILARITY')) |
|
4450 ] |
|
4451 |
|
4452 subrepoopts = [ |
|
4453 ('S', 'subrepos', None, |
|
4454 _('recurse into subrepositories')) |
|
4455 ] |
|
4456 |
|
4457 table = { |
|
4458 "^add": (add, walkopts + subrepoopts + dryrunopts, |
|
4459 _('[OPTION]... [FILE]...')), |
|
4460 "addremove": |
|
4461 (addremove, similarityopts + walkopts + dryrunopts, |
|
4462 _('[OPTION]... [FILE]...')), |
|
4463 "^annotate|blame": |
|
4464 (annotate, |
|
4465 [('r', 'rev', '', |
|
4466 _('annotate the specified revision'), _('REV')), |
|
4467 ('', 'follow', None, |
|
4468 _('follow copies/renames and list the filename (DEPRECATED)')), |
|
4469 ('', 'no-follow', None, _("don't follow copies and renames")), |
|
4470 ('a', 'text', None, _('treat all files as text')), |
|
4471 ('u', 'user', None, _('list the author (long with -v)')), |
|
4472 ('f', 'file', None, _('list the filename')), |
|
4473 ('d', 'date', None, _('list the date (short with -q)')), |
|
4474 ('n', 'number', None, _('list the revision number (default)')), |
|
4475 ('c', 'changeset', None, _('list the changeset')), |
|
4476 ('l', 'line-number', None, |
|
4477 _('show line number at the first appearance')) |
|
4478 ] + walkopts, |
|
4479 _('[-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FILE...')), |
|
4480 "archive": |
|
4481 (archive, |
|
4482 [('', 'no-decode', None, _('do not pass files through decoders')), |
|
4483 ('p', 'prefix', '', |
|
4484 _('directory prefix for files in archive'), _('PREFIX')), |
|
4485 ('r', 'rev', '', |
|
4486 _('revision to distribute'), _('REV')), |
|
4487 ('t', 'type', '', |
|
4488 _('type of distribution to create'), _('TYPE')), |
|
4489 ] + subrepoopts + walkopts, |
|
4490 _('[OPTION]... DEST')), |
|
4491 "backout": |
|
4492 (backout, |
|
4493 [('', 'merge', None, |
|
4494 _('merge with old dirstate parent after backout')), |
|
4495 ('', 'parent', '', |
|
4496 _('parent to choose when backing out merge'), _('REV')), |
|
4497 ('t', 'tool', '', |
|
4498 _('specify merge tool')), |
|
4499 ('r', 'rev', '', |
|
4500 _('revision to backout'), _('REV')), |
|
4501 ] + walkopts + commitopts + commitopts2, |
|
4502 _('[OPTION]... [-r] REV')), |
|
4503 "bisect": |
|
4504 (bisect, |
|
4505 [('r', 'reset', False, _('reset bisect state')), |
|
4506 ('g', 'good', False, _('mark changeset good')), |
|
4507 ('b', 'bad', False, _('mark changeset bad')), |
|
4508 ('s', 'skip', False, _('skip testing changeset')), |
|
4509 ('e', 'extend', False, _('extend the bisect range')), |
|
4510 ('c', 'command', '', |
|
4511 _('use command to check changeset state'), _('CMD')), |
|
4512 ('U', 'noupdate', False, _('do not update to target'))], |
|
4513 _("[-gbsr] [-U] [-c CMD] [REV]")), |
|
4514 "bookmarks": |
|
4515 (bookmark, |
|
4516 [('f', 'force', False, _('force')), |
|
4517 ('r', 'rev', '', _('revision'), _('REV')), |
|
4518 ('d', 'delete', False, _('delete a given bookmark')), |
|
4519 ('m', 'rename', '', _('rename a given bookmark'), _('NAME')), |
|
4520 ('i', 'inactive', False, _('do not mark a new bookmark active'))], |
|
4521 _('hg bookmarks [-f] [-d] [-i] [-m NAME] [-r REV] [NAME]')), |
|
4522 "branch": |
|
4523 (branch, |
|
4524 [('f', 'force', None, |
|
4525 _('set branch name even if it shadows an existing branch')), |
|
4526 ('C', 'clean', None, _('reset branch name to parent branch name'))], |
|
4527 _('[-fC] [NAME]')), |
|
4528 "branches": |
|
4529 (branches, |
|
4530 [('a', 'active', False, |
|
4531 _('show only branches that have unmerged heads')), |
|
4532 ('c', 'closed', False, |
|
4533 _('show normal and closed branches'))], |
|
4534 _('[-ac]')), |
|
4535 "bundle": |
|
4536 (bundle, |
|
4537 [('f', 'force', None, |
|
4538 _('run even when the destination is unrelated')), |
|
4539 ('r', 'rev', [], |
|
4540 _('a changeset intended to be added to the destination'), |
|
4541 _('REV')), |
|
4542 ('b', 'branch', [], |
|
4543 _('a specific branch you would like to bundle'), |
|
4544 _('BRANCH')), |
|
4545 ('', 'base', [], |
|
4546 _('a base changeset assumed to be available at the destination'), |
|
4547 _('REV')), |
|
4548 ('a', 'all', None, _('bundle all changesets in the repository')), |
|
4549 ('t', 'type', 'bzip2', |
|
4550 _('bundle compression type to use'), _('TYPE')), |
|
4551 ] + remoteopts, |
|
4552 _('[-f] [-t TYPE] [-a] [-r REV]... [--base REV]... FILE [DEST]')), |
|
4553 "cat": |
|
4554 (cat, |
|
4555 [('o', 'output', '', |
|
4556 _('print output to file with formatted name'), _('FORMAT')), |
|
4557 ('r', 'rev', '', |
|
4558 _('print the given revision'), _('REV')), |
|
4559 ('', 'decode', None, _('apply any matching decode filter')), |
|
4560 ] + walkopts, |
|
4561 _('[OPTION]... FILE...')), |
|
4562 "^clone": |
|
4563 (clone, |
|
4564 [('U', 'noupdate', None, |
|
4565 _('the clone will include an empty working copy (only a repository)')), |
|
4566 ('u', 'updaterev', '', |
|
4567 _('revision, tag or branch to check out'), _('REV')), |
|
4568 ('r', 'rev', [], |
|
4569 _('include the specified changeset'), _('REV')), |
|
4570 ('b', 'branch', [], |
|
4571 _('clone only the specified branch'), _('BRANCH')), |
|
4572 ('', 'pull', None, _('use pull protocol to copy metadata')), |
|
4573 ('', 'uncompressed', None, |
|
4574 _('use uncompressed transfer (fast over LAN)')), |
|
4575 ] + remoteopts, |
|
4576 _('[OPTION]... SOURCE [DEST]')), |
|
4577 "^commit|ci": |
|
4578 (commit, |
|
4579 [('A', 'addremove', None, |
|
4580 _('mark new/missing files as added/removed before committing')), |
|
4581 ('', 'close-branch', None, |
|
4582 _('mark a branch as closed, hiding it from the branch list')), |
|
4583 ] + walkopts + commitopts + commitopts2, |
|
4584 _('[OPTION]... [FILE]...')), |
|
4585 "copy|cp": |
|
4586 (copy, |
|
4587 [('A', 'after', None, _('record a copy that has already occurred')), |
|
4588 ('f', 'force', None, |
|
4589 _('forcibly copy over an existing managed file')), |
|
4590 ] + walkopts + dryrunopts, |
|
4591 _('[OPTION]... [SOURCE]... DEST')), |
|
4592 "debugancestor": (debugancestor, [], _('[INDEX] REV1 REV2')), |
|
4593 "debugbuilddag": |
|
4594 (debugbuilddag, |
|
4595 [('m', 'mergeable-file', None, _('add single file mergeable changes')), |
|
4596 ('o', 'overwritten-file', None, _('add single file all revs overwrite')), |
|
4597 ('n', 'new-file', None, _('add new file at each rev')), |
|
4598 ], |
|
4599 _('[OPTION]... [TEXT]')), |
|
4600 "debugbundle": |
|
4601 (debugbundle, |
|
4602 [('a', 'all', None, _('show all details')), |
|
4603 ], |
|
4604 _('FILE')), |
|
4605 "debugcheckstate": (debugcheckstate, [], ''), |
|
4606 "debugcommands": (debugcommands, [], _('[COMMAND]')), |
|
4607 "debugcomplete": |
|
4608 (debugcomplete, |
|
4609 [('o', 'options', None, _('show the command options'))], |
|
4610 _('[-o] CMD')), |
|
4611 "debugdag": |
|
4612 (debugdag, |
|
4613 [('t', 'tags', None, _('use tags as labels')), |
|
4614 ('b', 'branches', None, _('annotate with branch names')), |
|
4615 ('', 'dots', None, _('use dots for runs')), |
|
4616 ('s', 'spaces', None, _('separate elements by spaces')), |
|
4617 ], |
|
4618 _('[OPTION]... [FILE [REV]...]')), |
|
4619 "debugdate": |
|
4620 (debugdate, |
|
4621 [('e', 'extended', None, _('try extended date formats'))], |
|
4622 _('[-e] DATE [RANGE]')), |
|
4623 "debugdata": (debugdata, [], _('FILE REV')), |
|
4624 "debugdiscovery": (debugdiscovery, |
|
4625 [('', 'old', None, |
|
4626 _('use old-style discovery')), |
|
4627 ('', 'nonheads', None, |
|
4628 _('use old-style discovery with non-heads included')), |
|
4629 ] + remoteopts, |
|
4630 _('[-l REV] [-r REV] [-b BRANCH]...' |
|
4631 ' [OTHER]')), |
|
4632 "debugfsinfo": (debugfsinfo, [], _('[PATH]')), |
|
4633 "debuggetbundle": |
|
4634 (debuggetbundle, |
|
4635 [('H', 'head', [], _('id of head node'), _('ID')), |
|
4636 ('C', 'common', [], _('id of common node'), _('ID')), |
|
4637 ('t', 'type', 'bzip2', _('bundle compression type to use'), _('TYPE')), |
|
4638 ], |
|
4639 _('REPO FILE [-H|-C ID]...')), |
|
4640 "debugignore": (debugignore, [], ''), |
|
4641 "debugindex": (debugindex, |
|
4642 [('f', 'format', 0, _('revlog format'), _('FORMAT'))], |
|
4643 _('FILE')), |
|
4644 "debugindexdot": (debugindexdot, [], _('FILE')), |
|
4645 "debuginstall": (debuginstall, [], ''), |
|
4646 "debugknown": (debugknown, [], _('REPO ID...')), |
|
4647 "debugpushkey": (debugpushkey, [], _('REPO NAMESPACE [KEY OLD NEW]')), |
|
4648 "debugrebuildstate": |
|
4649 (debugrebuildstate, |
|
4650 [('r', 'rev', '', |
|
4651 _('revision to rebuild to'), _('REV'))], |
|
4652 _('[-r REV] [REV]')), |
|
4653 "debugrename": |
|
4654 (debugrename, |
|
4655 [('r', 'rev', '', |
|
4656 _('revision to debug'), _('REV'))], |
|
4657 _('[-r REV] FILE')), |
|
4658 "debugrevspec": |
|
4659 (debugrevspec, [], ('REVSPEC')), |
|
4660 "debugsetparents": |
|
4661 (debugsetparents, [], _('REV1 [REV2]')), |
|
4662 "debugstate": |
|
4663 (debugstate, |
|
4664 [('', 'nodates', None, _('do not display the saved mtime')), |
|
4665 ('', 'datesort', None, _('sort by saved mtime'))], |
|
4666 _('[OPTION]...')), |
|
4667 "debugsub": |
|
4668 (debugsub, |
|
4669 [('r', 'rev', '', |
|
4670 _('revision to check'), _('REV'))], |
|
4671 _('[-r REV] [REV]')), |
|
4672 "debugwalk": (debugwalk, walkopts, _('[OPTION]... [FILE]...')), |
|
4673 "debugwireargs": |
|
4674 (debugwireargs, |
|
4675 [('', 'three', '', 'three'), |
|
4676 ('', 'four', '', 'four'), |
|
4677 ('', 'five', '', 'five'), |
|
4678 ] + remoteopts, |
|
4679 _('REPO [OPTIONS]... [ONE [TWO]]')), |
|
4680 "^diff": |
|
4681 (diff, |
|
4682 [('r', 'rev', [], |
|
4683 _('revision'), _('REV')), |
|
4684 ('c', 'change', '', |
|
4685 _('change made by revision'), _('REV')) |
|
4686 ] + diffopts + diffopts2 + walkopts + subrepoopts, |
|
4687 _('[OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...')), |
|
4688 "^export": |
|
4689 (export, |
|
4690 [('o', 'output', '', |
|
4691 _('print output to file with formatted name'), _('FORMAT')), |
|
4692 ('', 'switch-parent', None, _('diff against the second parent')), |
|
4693 ('r', 'rev', [], |
|
4694 _('revisions to export'), _('REV')), |
|
4695 ] + diffopts, |
|
4696 _('[OPTION]... [-o OUTFILESPEC] REV...')), |
|
4697 "^forget": |
|
4698 (forget, |
|
4699 [] + walkopts, |
|
4700 _('[OPTION]... FILE...')), |
|
4701 "grep": |
|
4702 (grep, |
|
4703 [('0', 'print0', None, _('end fields with NUL')), |
|
4704 ('', 'all', None, _('print all revisions that match')), |
|
4705 ('a', 'text', None, _('treat all files as text')), |
|
4706 ('f', 'follow', None, |
|
4707 _('follow changeset history,' |
|
4708 ' or file history across copies and renames')), |
|
4709 ('i', 'ignore-case', None, _('ignore case when matching')), |
|
4710 ('l', 'files-with-matches', None, |
|
4711 _('print only filenames and revisions that match')), |
|
4712 ('n', 'line-number', None, _('print matching line numbers')), |
|
4713 ('r', 'rev', [], |
|
4714 _('only search files changed within revision range'), _('REV')), |
|
4715 ('u', 'user', None, _('list the author (long with -v)')), |
|
4716 ('d', 'date', None, _('list the date (short with -q)')), |
|
4717 ] + walkopts, |
|
4718 _('[OPTION]... PATTERN [FILE]...')), |
|
4719 "heads": |
|
4720 (heads, |
|
4721 [('r', 'rev', '', |
|
4722 _('show only heads which are descendants of STARTREV'), |
|
4723 _('STARTREV')), |
|
4724 ('t', 'topo', False, _('show topological heads only')), |
|
4725 ('a', 'active', False, |
|
4726 _('show active branchheads only (DEPRECATED)')), |
|
4727 ('c', 'closed', False, |
|
4728 _('show normal and closed branch heads')), |
|
4729 ] + templateopts, |
|
4730 _('[-ac] [-r STARTREV] [REV]...')), |
|
4731 "help": (help_, |
|
4732 [('e', 'extension', None, _('show only help for extensions')), |
|
4733 ('c', 'command', None, _('show only help for commands'))], |
|
4734 _('[-ec] [TOPIC]')), |
|
4735 "identify|id": |
|
4736 (identify, |
|
4737 [('r', 'rev', '', |
|
4738 _('identify the specified revision'), _('REV')), |
|
4739 ('n', 'num', None, _('show local revision number')), |
|
4740 ('i', 'id', None, _('show global revision id')), |
|
4741 ('b', 'branch', None, _('show branch')), |
|
4742 ('t', 'tags', None, _('show tags')), |
|
4743 ('B', 'bookmarks', None, _('show bookmarks'))], |
|
4744 _('[-nibtB] [-r REV] [SOURCE]')), |
|
4745 "import|patch": |
|
4746 (import_, |
|
4747 [('p', 'strip', 1, |
|
4748 _('directory strip option for patch. This has the same ' |
|
4749 'meaning as the corresponding patch option'), |
|
4750 _('NUM')), |
|
4751 ('b', 'base', '', |
|
4752 _('base path'), _('PATH')), |
|
4753 ('f', 'force', None, |
|
4754 _('skip check for outstanding uncommitted changes')), |
|
4755 ('', 'no-commit', None, |
|
4756 _("don't commit, just update the working directory")), |
|
4757 ('', 'exact', None, |
|
4758 _('apply patch to the nodes from which it was generated')), |
|
4759 ('', 'import-branch', None, |
|
4760 _('use any branch information in patch (implied by --exact)'))] + |
|
4761 commitopts + commitopts2 + similarityopts, |
|
4762 _('[OPTION]... PATCH...')), |
|
4763 "incoming|in": |
|
4764 (incoming, |
|
4765 [('f', 'force', None, |
|
4766 _('run even if remote repository is unrelated')), |
|
4767 ('n', 'newest-first', None, _('show newest record first')), |
|
4768 ('', 'bundle', '', |
|
4769 _('file to store the bundles into'), _('FILE')), |
|
4770 ('r', 'rev', [], |
|
4771 _('a remote changeset intended to be added'), _('REV')), |
|
4772 ('B', 'bookmarks', False, _("compare bookmarks")), |
|
4773 ('b', 'branch', [], |
|
4774 _('a specific branch you would like to pull'), _('BRANCH')), |
|
4775 ] + logopts + remoteopts + subrepoopts, |
|
4776 _('[-p] [-n] [-M] [-f] [-r REV]...' |
|
4777 ' [--bundle FILENAME] [SOURCE]')), |
|
4778 "^init": |
|
4779 (init, |
|
4780 remoteopts, |
|
4781 _('[-e CMD] [--remotecmd CMD] [DEST]')), |
|
4782 "locate": |
|
4783 (locate, |
|
4784 [('r', 'rev', '', |
|
4785 _('search the repository as it is in REV'), _('REV')), |
|
4786 ('0', 'print0', None, |
|
4787 _('end filenames with NUL, for use with xargs')), |
|
4788 ('f', 'fullpath', None, |
|
4789 _('print complete paths from the filesystem root')), |
|
4790 ] + walkopts, |
|
4791 _('[OPTION]... [PATTERN]...')), |
|
4792 "^log|history": |
|
4793 (log, |
|
4794 [('f', 'follow', None, |
|
4795 _('follow changeset history,' |
|
4796 ' or file history across copies and renames')), |
|
4797 ('', 'follow-first', None, |
|
4798 _('only follow the first parent of merge changesets')), |
|
4799 ('d', 'date', '', |
|
4800 _('show revisions matching date spec'), _('DATE')), |
|
4801 ('C', 'copies', None, _('show copied files')), |
|
4802 ('k', 'keyword', [], |
|
4803 _('do case-insensitive search for a given text'), _('TEXT')), |
|
4804 ('r', 'rev', [], |
|
4805 _('show the specified revision or range'), _('REV')), |
|
4806 ('', 'removed', None, _('include revisions where files were removed')), |
|
4807 ('m', 'only-merges', None, _('show only merges')), |
|
4808 ('u', 'user', [], |
|
4809 _('revisions committed by user'), _('USER')), |
|
4810 ('', 'only-branch', [], |
|
4811 _('show only changesets within the given named branch (DEPRECATED)'), |
|
4812 _('BRANCH')), |
|
4813 ('b', 'branch', [], |
|
4814 _('show changesets within the given named branch'), _('BRANCH')), |
|
4815 ('P', 'prune', [], |
|
4816 _('do not display revision or any of its ancestors'), _('REV')), |
|
4817 ] + logopts + walkopts, |
|
4818 _('[OPTION]... [FILE]')), |
|
4819 "manifest": |
|
4820 (manifest, |
|
4821 [('r', 'rev', '', |
|
4822 _('revision to display'), _('REV'))], |
|
4823 _('[-r REV]')), |
|
4824 "^merge": |
|
4825 (merge, |
|
4826 [('f', 'force', None, _('force a merge with outstanding changes')), |
|
4827 ('t', 'tool', '', _('specify merge tool')), |
|
4828 ('r', 'rev', '', |
|
4829 _('revision to merge'), _('REV')), |
|
4830 ('P', 'preview', None, |
|
4831 _('review revisions to merge (no merge is performed)'))], |
|
4832 _('[-P] [-f] [[-r] REV]')), |
|
4833 "outgoing|out": |
|
4834 (outgoing, |
|
4835 [('f', 'force', None, |
|
4836 _('run even when the destination is unrelated')), |
|
4837 ('r', 'rev', [], |
|
4838 _('a changeset intended to be included in the destination'), |
|
4839 _('REV')), |
|
4840 ('n', 'newest-first', None, _('show newest record first')), |
|
4841 ('B', 'bookmarks', False, _("compare bookmarks")), |
|
4842 ('b', 'branch', [], |
|
4843 _('a specific branch you would like to push'), _('BRANCH')), |
|
4844 ] + logopts + remoteopts + subrepoopts, |
|
4845 _('[-M] [-p] [-n] [-f] [-r REV]... [DEST]')), |
|
4846 "parents": |
|
4847 (parents, |
|
4848 [('r', 'rev', '', |
|
4849 _('show parents of the specified revision'), _('REV')), |
|
4850 ] + templateopts, |
|
4851 _('[-r REV] [FILE]')), |
|
4852 "paths": (paths, [], _('[NAME]')), |
|
4853 "^pull": |
|
4854 (pull, |
|
4855 [('u', 'update', None, |
|
4856 _('update to new branch head if changesets were pulled')), |
|
4857 ('f', 'force', None, |
|
4858 _('run even when remote repository is unrelated')), |
|
4859 ('r', 'rev', [], |
|
4860 _('a remote changeset intended to be added'), _('REV')), |
|
4861 ('B', 'bookmark', [], _("bookmark to pull"), _('BOOKMARK')), |
|
4862 ('b', 'branch', [], |
|
4863 _('a specific branch you would like to pull'), _('BRANCH')), |
|
4864 ] + remoteopts, |
|
4865 _('[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]')), |
|
4866 "^push": |
|
4867 (push, |
|
4868 [('f', 'force', None, _('force push')), |
|
4869 ('r', 'rev', [], |
|
4870 _('a changeset intended to be included in the destination'), |
|
4871 _('REV')), |
|
4872 ('B', 'bookmark', [], _("bookmark to push"), _('BOOKMARK')), |
|
4873 ('b', 'branch', [], |
|
4874 _('a specific branch you would like to push'), _('BRANCH')), |
|
4875 ('', 'new-branch', False, _('allow pushing a new branch')), |
|
4876 ] + remoteopts, |
|
4877 _('[-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]')), |
|
4878 "recover": (recover, []), |
|
4879 "^remove|rm": |
|
4880 (remove, |
|
4881 [('A', 'after', None, _('record delete for missing files')), |
|
4882 ('f', 'force', None, |
|
4883 _('remove (and delete) file even if added or modified')), |
|
4884 ] + walkopts, |
|
4885 _('[OPTION]... FILE...')), |
|
4886 "rename|move|mv": |
|
4887 (rename, |
|
4888 [('A', 'after', None, _('record a rename that has already occurred')), |
|
4889 ('f', 'force', None, |
|
4890 _('forcibly copy over an existing managed file')), |
|
4891 ] + walkopts + dryrunopts, |
|
4892 _('[OPTION]... SOURCE... DEST')), |
|
4893 "resolve": |
|
4894 (resolve, |
|
4895 [('a', 'all', None, _('select all unresolved files')), |
|
4896 ('l', 'list', None, _('list state of files needing merge')), |
|
4897 ('m', 'mark', None, _('mark files as resolved')), |
|
4898 ('u', 'unmark', None, _('mark files as unresolved')), |
|
4899 ('t', 'tool', '', _('specify merge tool')), |
|
4900 ('n', 'no-status', None, _('hide status prefix'))] |
|
4901 + walkopts, |
|
4902 _('[OPTION]... [FILE]...')), |
|
4903 "revert": |
|
4904 (revert, |
|
4905 [('a', 'all', None, _('revert all changes when no arguments given')), |
|
4906 ('d', 'date', '', |
|
4907 _('tipmost revision matching date'), _('DATE')), |
|
4908 ('r', 'rev', '', |
|
4909 _('revert to the specified revision'), _('REV')), |
|
4910 ('', 'no-backup', None, _('do not save backup copies of files')), |
|
4911 ] + walkopts + dryrunopts, |
|
4912 _('[OPTION]... [-r REV] [NAME]...')), |
|
4913 "rollback": (rollback, dryrunopts), |
|
4914 "root": (root, []), |
|
4915 "^serve": |
|
4916 (serve, |
|
4917 [('A', 'accesslog', '', |
|
4918 _('name of access log file to write to'), _('FILE')), |
|
4919 ('d', 'daemon', None, _('run server in background')), |
|
4920 ('', 'daemon-pipefds', '', |
|
4921 _('used internally by daemon mode'), _('NUM')), |
|
4922 ('E', 'errorlog', '', |
|
4923 _('name of error log file to write to'), _('FILE')), |
|
4924 # use string type, then we can check if something was passed |
|
4925 ('p', 'port', '', |
|
4926 _('port to listen on (default: 8000)'), _('PORT')), |
|
4927 ('a', 'address', '', |
|
4928 _('address to listen on (default: all interfaces)'), _('ADDR')), |
|
4929 ('', 'prefix', '', |
|
4930 _('prefix path to serve from (default: server root)'), _('PREFIX')), |
|
4931 ('n', 'name', '', |
|
4932 _('name to show in web pages (default: working directory)'), |
|
4933 _('NAME')), |
|
4934 ('', 'web-conf', '', |
|
4935 _('name of the hgweb config file (see "hg help hgweb")'), |
|
4936 _('FILE')), |
|
4937 ('', 'webdir-conf', '', |
|
4938 _('name of the hgweb config file (DEPRECATED)'), _('FILE')), |
|
4939 ('', 'pid-file', '', |
|
4940 _('name of file to write process ID to'), _('FILE')), |
|
4941 ('', 'stdio', None, _('for remote clients')), |
|
4942 ('t', 'templates', '', |
|
4943 _('web templates to use'), _('TEMPLATE')), |
|
4944 ('', 'style', '', |
|
4945 _('template style to use'), _('STYLE')), |
|
4946 ('6', 'ipv6', None, _('use IPv6 in addition to IPv4')), |
|
4947 ('', 'certificate', '', |
|
4948 _('SSL certificate file'), _('FILE'))], |
|
4949 _('[OPTION]...')), |
|
4950 "showconfig|debugconfig": |
|
4951 (showconfig, |
|
4952 [('u', 'untrusted', None, _('show untrusted configuration options'))], |
|
4953 _('[-u] [NAME]...')), |
|
4954 "^summary|sum": |
|
4955 (summary, |
|
4956 [('', 'remote', None, _('check for push and pull'))], '[--remote]'), |
|
4957 "^status|st": |
|
4958 (status, |
|
4959 [('A', 'all', None, _('show status of all files')), |
|
4960 ('m', 'modified', None, _('show only modified files')), |
|
4961 ('a', 'added', None, _('show only added files')), |
|
4962 ('r', 'removed', None, _('show only removed files')), |
|
4963 ('d', 'deleted', None, _('show only deleted (but tracked) files')), |
|
4964 ('c', 'clean', None, _('show only files without changes')), |
|
4965 ('u', 'unknown', None, _('show only unknown (not tracked) files')), |
|
4966 ('i', 'ignored', None, _('show only ignored files')), |
|
4967 ('n', 'no-status', None, _('hide status prefix')), |
|
4968 ('C', 'copies', None, _('show source of copied files')), |
|
4969 ('0', 'print0', None, |
|
4970 _('end filenames with NUL, for use with xargs')), |
|
4971 ('', 'rev', [], |
|
4972 _('show difference from revision'), _('REV')), |
|
4973 ('', 'change', '', |
|
4974 _('list the changed files of a revision'), _('REV')), |
|
4975 ] + walkopts + subrepoopts, |
|
4976 _('[OPTION]... [FILE]...')), |
|
4977 "tag": |
|
4978 (tag, |
|
4979 [('f', 'force', None, _('force tag')), |
|
4980 ('l', 'local', None, _('make the tag local')), |
|
4981 ('r', 'rev', '', |
|
4982 _('revision to tag'), _('REV')), |
|
4983 ('', 'remove', None, _('remove a tag')), |
|
4984 # -l/--local is already there, commitopts cannot be used |
|
4985 ('e', 'edit', None, _('edit commit message')), |
|
4986 ('m', 'message', '', |
|
4987 _('use <text> as commit message'), _('TEXT')), |
|
4988 ] + commitopts2, |
|
4989 _('[-f] [-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME...')), |
|
4990 "tags": (tags, [], ''), |
|
4991 "tip": |
|
4992 (tip, |
|
4993 [('p', 'patch', None, _('show patch')), |
|
4994 ('g', 'git', None, _('use git extended diff format')), |
|
4995 ] + templateopts, |
|
4996 _('[-p] [-g]')), |
|
4997 "unbundle": |
|
4998 (unbundle, |
|
4999 [('u', 'update', None, |
|
5000 _('update to new branch head if changesets were unbundled'))], |
|
5001 _('[-u] FILE...')), |
|
5002 "^update|up|checkout|co": |
|
5003 (update, |
|
5004 [('C', 'clean', None, _('discard uncommitted changes (no backup)')), |
|
5005 ('c', 'check', None, |
|
5006 _('update across branches if no uncommitted changes')), |
|
5007 ('d', 'date', '', |
|
5008 _('tipmost revision matching date'), _('DATE')), |
|
5009 ('r', 'rev', '', |
|
5010 _('revision'), _('REV'))], |
|
5011 _('[-c] [-C] [-d DATE] [[-r] REV]')), |
|
5012 "verify": (verify, []), |
|
5013 "version": (version_, []), |
|
5014 } |
|
5015 |
|
5016 norepo = ("clone init version help debugcommands debugcomplete" |
4884 norepo = ("clone init version help debugcommands debugcomplete" |
5017 " debugdate debuginstall debugfsinfo debugpushkey debugwireargs" |
4885 " debugdate debuginstall debugfsinfo debugpushkey debugwireargs" |
5018 " debugknown debuggetbundle debugbundle") |
4886 " debugknown debuggetbundle debugbundle") |
5019 optionalrepo = ("identify paths serve showconfig debugancestor debugdag" |
4887 optionalrepo = ("identify paths serve showconfig debugancestor debugdag" |
5020 " debugdata debugindex debugindexdot") |
4888 " debugdata debugindex debugindexdot") |