Mercurial > hg-stable
annotate mercurial/commands.py @ 17192:1ac628cd7113
peer: introduce real peer classes
This change separates peer implementations from the repository implementation.
localpeer currently is a simple pass-through to localrepository, except for
legacy calls, which have already been removed from localpeer. This ensures that
the local client code only uses the most modern peer API when talking to local
repos.
Peers have a .local() method which returns either None or the underlying
localrepository (or descendant thereof). Repos have a .peer() method to return
a freshly constructed localpeer. The latter is used by hg.peer(), and also to
allow folks to pass either a peer or a repo to some generic helper methods.
We might want to get rid of .peer() eventually.
The only user of locallegacypeer is debugdiscovery, which uses it to pose as a
pre-setdiscovery client. But we decided to leave the old API defined in
locallegacypeer for clarity and maybe for other uses in the future.
It might be nice to actually define the peer API directly in peer.py as stub
methods. One problem there is, however, that localpeer implements
lock/addchangegroup, whereas the true remote peers implement unbundle.
It might be desireable to get rid of this distinction eventually.
author | Peter Arrenbrecht <peter.arrenbrecht@gmail.com> |
---|---|
date | Fri, 13 Jul 2012 21:47:06 +0200 |
parents | 5884812686f7 |
children | b8661d7c940f |
rev | line source |
---|---|
249 | 1 # commands.py - command processing for mercurial |
2 # | |
4635
63b9d2deed48
Updated copyright notices and add "and others" to "hg version"
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4614
diff
changeset
|
3 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com> |
249 | 4 # |
8225
46293a0c7e9f
updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents:
8210
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
10263 | 6 # GNU General Public License version 2 or any later version. |
249 | 7 |
13723
e615765fdcc7
wireproto: add known([id]) function
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13720
diff
changeset
|
8 from node import hex, bin, nullid, nullrev, short |
8109
496ae1ea4698
switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents:
8088
diff
changeset
|
9 from lock import release |
7013
f56e788fa292
i18n: mark help strings for translation
Martin Geisler <mg@daimi.au.dk>
parents:
7012
diff
changeset
|
10 from i18n import _, gettext |
14639
e59a7b8f521a
commands: use ui descriptors when reading/writing from stdin/out
Idan Kamara <idankk86@gmail.com>
parents:
14635
diff
changeset
|
11 import os, re, difflib, time, tempfile, errno |
13970
d13913355390
move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents:
13965
diff
changeset
|
12 import hg, scmutil, util, revlog, extensions, copies, error, bookmarks |
14064
e4bfb9c337f3
remove unused imports and variables
Alexander Solovyov <alexander@solovyov.net>
parents:
14055
diff
changeset
|
13 import patch, help, url, encoding, templatekw, discovery |
14647
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
14 import archival, changegroup, cmdutil, hbisect |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
15 import sshserver, hgweb, hgweb.server, commandserver |
15856
6bed6cc6d0d0
commands: partial backout of fbb68b382040
Martin Geisler <mg@aragost.com>
parents:
15855
diff
changeset
|
16 import merge as mergemod |
14511
30506b894359
filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents:
14509
diff
changeset
|
17 import minirst, revset, fileset |
17182
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
18 import dagparser, context, simplemerge, graphmod |
17192
1ac628cd7113
peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
17191
diff
changeset
|
19 import random, setdiscovery, treediscovery, dagutil, pvec, localrepo |
17074
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
20 import phases, obsolete |
2731
ad4155e757da
Kill ui.setconfig_remoteopts
Matt Mackall <mpm@selenic.com>
parents:
2718
diff
changeset
|
21 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
22 table = {} |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
23 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
24 command = cmdutil.command(table) |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
25 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
26 # common command options |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
27 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
28 globalopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
29 ('R', 'repository', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
30 _('repository root directory or name of overlay bundle file'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
31 _('REPO')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
32 ('', 'cwd', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
33 _('change working directory'), _('DIR')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
34 ('y', 'noninteractive', None, |
14849
d87814992728
commands: improve help for -y/--noninteractive
Martin Geisler <mg@aragost.com>
parents:
14755
diff
changeset
|
35 _('do not prompt, automatically pick the first choice for all prompts')), |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
36 ('q', 'quiet', None, _('suppress output')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
37 ('v', 'verbose', None, _('enable additional output')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
38 ('', 'config', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
39 _('set/override config option (use \'section.name=value\')'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
40 _('CONFIG')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
41 ('', 'debug', None, _('enable debugging output')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
42 ('', 'debugger', None, _('start debugger')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
43 ('', 'encoding', encoding.encoding, _('set the charset encoding'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
44 _('ENCODE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
45 ('', 'encodingmode', encoding.encodingmode, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
46 _('set the charset encoding mode'), _('MODE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
47 ('', 'traceback', None, _('always print a traceback on exception')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
48 ('', 'time', None, _('time how long the command takes')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
49 ('', 'profile', None, _('print command execution profile')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
50 ('', 'version', None, _('output version information and exit')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
51 ('h', 'help', None, _('display help and exit')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
52 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
53 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
54 dryrunopts = [('n', 'dry-run', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
55 _('do not perform actions, just print output'))] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
56 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
57 remoteopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
58 ('e', 'ssh', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
59 _('specify ssh command to use'), _('CMD')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
60 ('', 'remotecmd', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
61 _('specify hg command to run on the remote side'), _('CMD')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
62 ('', 'insecure', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
63 _('do not verify server certificate (ignoring web.cacerts config)')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
64 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
65 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
66 walkopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
67 ('I', 'include', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
68 _('include names matching the given patterns'), _('PATTERN')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
69 ('X', 'exclude', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
70 _('exclude names matching the given patterns'), _('PATTERN')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
71 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
72 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
73 commitopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
74 ('m', 'message', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
75 _('use text as commit message'), _('TEXT')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
76 ('l', 'logfile', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
77 _('read commit message from file'), _('FILE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
78 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
79 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
80 commitopts2 = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
81 ('d', 'date', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
82 _('record the specified date as commit date'), _('DATE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
83 ('u', 'user', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
84 _('record the specified user as committer'), _('USER')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
85 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
86 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
87 templateopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
88 ('', 'style', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
89 _('display using template map file'), _('STYLE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
90 ('', 'template', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
91 _('display with template'), _('TEMPLATE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
92 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
93 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
94 logopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
95 ('p', 'patch', None, _('show patch')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
96 ('g', 'git', None, _('use git extended diff format')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
97 ('l', 'limit', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
98 _('limit number of changes displayed'), _('NUM')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
99 ('M', 'no-merges', None, _('do not show merges')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
100 ('', 'stat', None, _('output diffstat-style summary of changes')), |
17182
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
101 ('G', 'graph', None, _("show the revision DAG")), |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
102 ] + templateopts |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
103 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
104 diffopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
105 ('a', 'text', None, _('treat all files as text')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
106 ('g', 'git', None, _('use git extended diff format')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
107 ('', 'nodates', None, _('omit dates from diff headers')) |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
108 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
109 |
15528
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
110 diffwsopts = [ |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
111 ('w', 'ignore-all-space', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
112 _('ignore white space when comparing lines')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
113 ('b', 'ignore-space-change', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
114 _('ignore changes in the amount of white space')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
115 ('B', 'ignore-blank-lines', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
116 _('ignore changes whose lines are all blank')), |
15528
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
117 ] |
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
118 |
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
119 diffopts2 = [ |
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
120 ('p', 'show-function', None, _('show which function each change is in')), |
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
121 ('', 'reverse', None, _('produce a diff that undoes the changes')), |
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
122 ] + diffwsopts + [ |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
123 ('U', 'unified', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
124 _('number of lines of context to show'), _('NUM')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
125 ('', 'stat', None, _('output diffstat-style summary of changes')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
126 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
127 |
14852
cac04f2f475b
commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents:
14840
diff
changeset
|
128 mergetoolopts = [ |
cac04f2f475b
commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents:
14840
diff
changeset
|
129 ('t', 'tool', '', _('specify merge tool')), |
cac04f2f475b
commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents:
14840
diff
changeset
|
130 ] |
cac04f2f475b
commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents:
14840
diff
changeset
|
131 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
132 similarityopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
133 ('s', 'similarity', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
134 _('guess renamed files by similarity (0<=s<=100)'), _('SIMILARITY')) |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
135 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
136 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
137 subrepoopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
138 ('S', 'subrepos', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
139 _('recurse into subrepositories')) |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
140 ] |
2731
ad4155e757da
Kill ui.setconfig_remoteopts
Matt Mackall <mpm@selenic.com>
parents:
2718
diff
changeset
|
141 |
255 | 142 # Commands start here, listed alphabetically |
209 | 143 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
144 @command('^add', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
145 walkopts + subrepoopts + dryrunopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
146 _('[OPTION]... [FILE]...')) |
724
1c0c413cccdd
Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
723
diff
changeset
|
147 def add(ui, repo, *pats, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
148 """add the specified files on the next commit |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
149 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
150 Schedule files to be version controlled and added to the |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
151 repository. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
152 |
3829
531c116b2028
Add doc notes about revert and hg status vs diff
Matt Mackall <mpm@selenic.com>
parents:
3822
diff
changeset
|
153 The files will be added to the repository at the next commit. To |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
154 undo an add before that, see :hg:`forget`. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
155 |
7807
bd8f44638847
help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents:
7765
diff
changeset
|
156 If no names are given, add all files to the repository. |
10446
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
157 |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
158 .. container:: verbose |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
159 |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
160 An example showing how new (unknown) files are added |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
161 automatically by :hg:`add`:: |
10446
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
162 |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
163 $ ls |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
164 foo.c |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
165 $ hg status |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
166 ? foo.c |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
167 $ hg add |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
168 adding foo.c |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
169 $ hg status |
10448
6e5a47398fc5
commands: correct example in add help text
Martin Geisler <mg@lazybytes.net>
parents:
10446
diff
changeset
|
170 A foo.c |
11507
35e2d453cf0d
commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11488
diff
changeset
|
171 |
35e2d453cf0d
commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11488
diff
changeset
|
172 Returns 0 if all files are successfully added. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
173 """ |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
174 |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
175 m = scmutil.match(repo[None], pats, opts) |
12270
166b9866580a
add: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents:
12269
diff
changeset
|
176 rejected = cmdutil.add(ui, repo, m, opts.get('dry_run'), |
15911
c654eac03452
add: fix subrepo recursion for explicit path handling
David M. Carr <david@carrclan.us>
parents:
15906
diff
changeset
|
177 opts.get('subrepos'), prefix="", explicitonly=False) |
12269
877236cdd437
add: move main part to cmdutil to make it easier to reuse
Martin Geisler <mg@lazybytes.net>
parents:
12266
diff
changeset
|
178 return rejected and 1 or 0 |
213 | 179 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
180 @command('addremove', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
181 similarityopts + walkopts + dryrunopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
182 _('[OPTION]... [FILE]...')) |
766
b444a7e053f1
Get addremove to use new walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
764
diff
changeset
|
183 def addremove(ui, repo, *pats, **opts): |
3181
3637d5d17cbc
Documentation fixes for addremove.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3172
diff
changeset
|
184 """add all new files, delete all missing files |
2181
690da72b0b16
deprecate addremove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2179
diff
changeset
|
185 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
186 Add all new files and remove all missing files from the |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
187 repository. |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
188 |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
189 New files are ignored if they match any of the patterns in |
13344
6367459decf7
doc: Add back quotes around filenames
Javi Merino <cibervicho@gmail.com>
parents:
13343
diff
changeset
|
190 ``.hgignore``. As with add, these changes take effect at the next |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
191 commit. |
2958
ff3ea21a981a
addremove: add -s/--similarity option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2956
diff
changeset
|
192 |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
193 Use the -s/--similarity option to detect renamed files. With a |
9249
16f4cfc69e4f
commands: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
194 parameter greater than 0, this compares every removed file with |
16f4cfc69e4f
commands: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
195 every added file and records those similar enough as renames. This |
16f4cfc69e4f
commands: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
196 option takes a percentage between 0 (disabled) and 100 (files must |
16f4cfc69e4f
commands: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
197 be identical) as its parameter. Detecting renamed files this way |
11518
8d827f4a23f1
commands: mention "hg status -C" in addremove help
Arnab Bose <hirak99@gmail.com>
parents:
11515
diff
changeset
|
198 can be expensive. After using this option, :hg:`status -C` can be |
8d827f4a23f1
commands: mention "hg status -C" in addremove help
Arnab Bose <hirak99@gmail.com>
parents:
11515
diff
changeset
|
199 used to check which files were identified as moved or renamed. |
16637
265daefc00b2
addremove: document default similarity behavior (issue3429)
Levi Bard <levi@unity3d.com>
parents:
16593
diff
changeset
|
200 If this option is not specified, only renames of identical files |
265daefc00b2
addremove: document default similarity behavior (issue3429)
Levi Bard <levi@unity3d.com>
parents:
16593
diff
changeset
|
201 are detected. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
202 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
203 Returns 0 if all files are successfully added. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
204 """ |
4966
8d982aef0be1
addremove: print meaningful error message if --similar not numeric
Bryan O'Sullivan <bos@serpentine.com>
parents:
4950
diff
changeset
|
205 try: |
11551
4484a7b661f2
commands: addremove does similarity 100 by default
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
11525
diff
changeset
|
206 sim = float(opts.get('similarity') or 100) |
4966
8d982aef0be1
addremove: print meaningful error message if --similar not numeric
Bryan O'Sullivan <bos@serpentine.com>
parents:
4950
diff
changeset
|
207 except ValueError: |
8d982aef0be1
addremove: print meaningful error message if --similar not numeric
Bryan O'Sullivan <bos@serpentine.com>
parents:
4950
diff
changeset
|
208 raise util.Abort(_('similarity must be a number')) |
2958
ff3ea21a981a
addremove: add -s/--similarity option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2956
diff
changeset
|
209 if sim < 0 or sim > 100: |
ff3ea21a981a
addremove: add -s/--similarity option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2956
diff
changeset
|
210 raise util.Abort(_('similarity must be between 0 and 100')) |
14321
003d63bb4fa5
scmutil: drop some aliases in cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14319
diff
changeset
|
211 return scmutil.addremove(repo, pats, opts, similarity=sim / 100.0) |
219
8ff4532376a4
hg checkout: refuse to checkout if there are outstanding changes
mpm@selenic.com
parents:
214
diff
changeset
|
212 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
213 @command('^annotate|blame', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
214 [('r', 'rev', '', _('annotate the specified revision'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
215 ('', 'follow', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
216 _('follow copies/renames and list the filename (DEPRECATED)')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
217 ('', 'no-follow', None, _("don't follow copies and renames")), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
218 ('a', 'text', None, _('treat all files as text')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
219 ('u', 'user', None, _('list the author (long with -v)')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
220 ('f', 'file', None, _('list the filename')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
221 ('d', 'date', None, _('list the date (short with -q)')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
222 ('n', 'number', None, _('list the revision number (default)')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
223 ('c', 'changeset', None, _('list the changeset')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
224 ('l', 'line-number', None, _('show line number at the first appearance')) |
15528
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
225 ] + diffwsopts + walkopts, |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
226 _('[-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FILE...')) |
733
1966c553f652
Convert annotate over to walk interface.
Bryan O'Sullivan <bos@serpentine.com>
parents:
732
diff
changeset
|
227 def annotate(ui, repo, *pats, **opts): |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
228 """show changeset information by line for each file |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
229 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
230 List changes in files, showing the revision id responsible for |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
231 each line |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
232 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
233 This command is useful for discovering when a change was made and |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
234 by whom. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
235 |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
236 Without the -a/--text option, annotate will avoid processing files |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
237 it detects as binary. With -a, annotate will annotate the file |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
238 anyway, although the results will probably be neither useful |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
239 nor desirable. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
240 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
241 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
242 """ |
10579
f142fa3c0a8c
Make annotate --follow an alias for -f/--file to behave like in older versions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
10564
diff
changeset
|
243 if opts.get('follow'): |
f142fa3c0a8c
Make annotate --follow an alias for -f/--file to behave like in older versions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
10564
diff
changeset
|
244 # --follow is deprecated and now just an alias for -f/--file |
f142fa3c0a8c
Make annotate --follow an alias for -f/--file to behave like in older versions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
10564
diff
changeset
|
245 # to mimic the behavior of Mercurial before version 1.5 |
14216
e3da95f84bcd
annotate: use real Booleans instead of 0/1
Martin Geisler <mg@aragost.com>
parents:
14198
diff
changeset
|
246 opts['file'] = True |
10579
f142fa3c0a8c
Make annotate --follow an alias for -f/--file to behave like in older versions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
10564
diff
changeset
|
247 |
6134
7b937b26adf7
Make annotae/grep print short dates with -q/--quiet.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6133
diff
changeset
|
248 datefunc = ui.quiet and util.shortdate or util.datestr |
7b937b26adf7
Make annotae/grep print short dates with -q/--quiet.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6133
diff
changeset
|
249 getdate = util.cachefunc(lambda x: datefunc(x[0].date())) |
1522 | 250 |
744 | 251 if not pats: |
8761
0289f384e1e5
Generally replace "file name" with "filename" in help and comments.
timeless <timeless@gmail.com>
parents:
8760
diff
changeset
|
252 raise util.Abort(_('at least one filename or pattern is required')) |
744 | 253 |
15631
e5fd140a4e69
annotate: show full changeset hash when invoked with --debug and -c
Ion Savin <comp_@gmx.net>
parents:
15623
diff
changeset
|
254 hexfn = ui.debugflag and hex or short |
e5fd140a4e69
annotate: show full changeset hash when invoked with --debug and -c
Ion Savin <comp_@gmx.net>
parents:
15623
diff
changeset
|
255 |
14358
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
256 opmap = [('user', ' ', lambda x: ui.shortuser(x[0].user())), |
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
257 ('number', ' ', lambda x: str(x[0].rev())), |
15631
e5fd140a4e69
annotate: show full changeset hash when invoked with --debug and -c
Ion Savin <comp_@gmx.net>
parents:
15623
diff
changeset
|
258 ('changeset', ' ', lambda x: hexfn(x[0].node())), |
14358
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
259 ('date', ' ', getdate), |
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
260 ('file', ' ', lambda x: x[0].path()), |
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
261 ('line_number', ':', lambda x: str(x[1])), |
4857
2192001e4bb4
Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4849
diff
changeset
|
262 ] |
2192001e4bb4
Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4849
diff
changeset
|
263 |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10270
diff
changeset
|
264 if (not opts.get('user') and not opts.get('changeset') |
10369
98a0421b9e52
commands: annotate follows by default, separate -f/--file option
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10365
diff
changeset
|
265 and not opts.get('date') and not opts.get('file')): |
14216
e3da95f84bcd
annotate: use real Booleans instead of 0/1
Martin Geisler <mg@aragost.com>
parents:
14198
diff
changeset
|
266 opts['number'] = True |
209 | 267 |
4857
2192001e4bb4
Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4849
diff
changeset
|
268 linenumber = opts.get('line_number') is not None |
10394
4612cded5176
fix coding style (reported by pylint)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10390
diff
changeset
|
269 if linenumber and (not opts.get('changeset')) and (not opts.get('number')): |
4857
2192001e4bb4
Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4849
diff
changeset
|
270 raise util.Abort(_('at least one of -n/-c is required for -l')) |
2192001e4bb4
Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4849
diff
changeset
|
271 |
14358
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
272 funcmap = [(func, sep) for op, sep, func in opmap if opts.get(op)] |
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
273 funcmap[0] = (funcmap[0][0], '') # no separator in front of first column |
4857
2192001e4bb4
Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4849
diff
changeset
|
274 |
13697
eaee75036725
annotate: catch nonexistent files using match.bad callback (issue1590)
Matt Mackall <mpm@selenic.com>
parents:
13694
diff
changeset
|
275 def bad(x, y): |
eaee75036725
annotate: catch nonexistent files using match.bad callback (issue1590)
Matt Mackall <mpm@selenic.com>
parents:
13694
diff
changeset
|
276 raise util.Abort("%s: %s" % (x, y)) |
eaee75036725
annotate: catch nonexistent files using match.bad callback (issue1590)
Matt Mackall <mpm@selenic.com>
parents:
13694
diff
changeset
|
277 |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
278 ctx = scmutil.revsingle(repo, opts.get('rev')) |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
279 m = scmutil.match(ctx, pats, opts) |
13697
eaee75036725
annotate: catch nonexistent files using match.bad callback (issue1590)
Matt Mackall <mpm@selenic.com>
parents:
13694
diff
changeset
|
280 m.bad = bad |
10369
98a0421b9e52
commands: annotate follows by default, separate -f/--file option
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10365
diff
changeset
|
281 follow = not opts.get('no_follow') |
15528
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
282 diffopts = patch.diffopts(ui, opts, section='annotate') |
6764 | 283 for abs in ctx.walk(m): |
284 fctx = ctx[abs] | |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
285 if not opts.get('text') and util.binary(fctx.data()): |
6584
29c77e5dfb3c
walk: remove rel and exact returns
Matt Mackall <mpm@selenic.com>
parents:
6583
diff
changeset
|
286 ui.write(_("%s: binary file\n") % ((pats and m.rel(abs)) or abs)) |
1016 | 287 continue |
288 | |
15528
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
289 lines = fctx.annotate(follow=follow, linenumber=linenumber, |
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
290 diffopts=diffopts) |
209 | 291 pieces = [] |
292 | |
14358
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
293 for f, sep in funcmap: |
4857
2192001e4bb4
Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4849
diff
changeset
|
294 l = [f(n) for n, dummy in lines] |
2192001e4bb4
Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4849
diff
changeset
|
295 if l: |
11611
4f5a6df2af92
i18n: use encoding.colwidth() for correct column width
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
11518
diff
changeset
|
296 sized = [(x, encoding.colwidth(x)) for x in l] |
4f5a6df2af92
i18n: use encoding.colwidth() for correct column width
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
11518
diff
changeset
|
297 ml = max([w for x, w in sized]) |
14358
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
298 pieces.append(["%s%s%s" % (sep, ' ' * (ml - w), x) |
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
299 for x, w in sized]) |
209 | 300 |
771 | 301 if pieces: |
302 for p, l in zip(zip(*pieces), lines): | |
14358
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
303 ui.write("%s: %s" % ("".join(p), l[1])) |
209 | 304 |
15829
2c480532f36e
annotate: append newline after non newline-terminated file listings
Ion Savin <ion.savin@tora.com>
parents:
15780
diff
changeset
|
305 if lines and not lines[-1][1].endswith('\n'): |
2c480532f36e
annotate: append newline after non newline-terminated file listings
Ion Savin <ion.savin@tora.com>
parents:
15780
diff
changeset
|
306 ui.write('\n') |
2c480532f36e
annotate: append newline after non newline-terminated file listings
Ion Savin <ion.savin@tora.com>
parents:
15780
diff
changeset
|
307 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
308 @command('archive', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
309 [('', 'no-decode', None, _('do not pass files through decoders')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
310 ('p', 'prefix', '', _('directory prefix for files in archive'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
311 _('PREFIX')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
312 ('r', 'rev', '', _('revision to distribute'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
313 ('t', 'type', '', _('type of distribution to create'), _('TYPE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
314 ] + subrepoopts + walkopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
315 _('[OPTION]... DEST')) |
2112
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
316 def archive(ui, repo, dest, **opts): |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
317 '''create an unversioned archive of a repository revision |
2112
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
318 |
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
319 By default, the revision used is the parent of the working |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
320 directory; use -r/--rev to specify a different revision. |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
321 |
10650
9ea7238ad935
archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents:
10649
diff
changeset
|
322 The archive type is automatically detected based on file |
9ea7238ad935
archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents:
10649
diff
changeset
|
323 extension (or override using -t/--type). |
9ea7238ad935
archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents:
10649
diff
changeset
|
324 |
15109
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
325 .. container:: verbose |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
326 |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
327 Examples: |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
328 |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
329 - create a zip file containing the 1.0 release:: |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
330 |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
331 hg archive -r 1.0 project-1.0.zip |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
332 |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
333 - create a tarball excluding .hg files:: |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
334 |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
335 hg archive project.tar.gz -X ".hg*" |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
336 |
10650
9ea7238ad935
archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents:
10649
diff
changeset
|
337 Valid types are: |
9892
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
338 |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
339 :``files``: a directory full of files (default) |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
340 :``tar``: tar archive, uncompressed |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
341 :``tbz2``: tar archive, compressed using bzip2 |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
342 :``tgz``: tar archive, compressed using gzip |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
343 :``uzip``: zip archive, uncompressed |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
344 :``zip``: zip archive, compressed using deflate |
2112
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
345 |
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
346 The exact name of the destination archive or directory is given |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
347 using a format string; see :hg:`help export` for details. |
2112
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
348 |
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
349 Each member added to an archive file has a directory prefix |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
350 prepended. Use -p/--prefix to specify a format string for the |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
351 prefix. The default is the basename of the archive, with suffixes |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
352 removed. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
353 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
354 Returns 0 on success. |
2112
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
355 ''' |
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
356 |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
357 ctx = scmutil.revsingle(repo, opts.get('rev')) |
5061
a49f2a4d5ff7
archive: abort on empty repository. Fixes #624.
Brendan Cully <brendan@kublai.com>
parents:
4966
diff
changeset
|
358 if not ctx: |
7528
eadcc075967e
archive: fix bogus error message with no working directory
Matt Mackall <mpm@selenic.com>
parents:
7527
diff
changeset
|
359 raise util.Abort(_('no working directory: please specify a revision')) |
5061
a49f2a4d5ff7
archive: abort on empty repository. Fixes #624.
Brendan Cully <brendan@kublai.com>
parents:
4966
diff
changeset
|
360 node = ctx.node() |
14290
86e70956da4f
cmdutil: make_filename -> makefilename
Matt Mackall <mpm@selenic.com>
parents:
14289
diff
changeset
|
361 dest = cmdutil.makefilename(repo, dest, node) |
15381
c519cd8f0169
backout dbdb777502dc (issue3077) (issue3071)
Matt Mackall <mpm@selenic.com>
parents:
15373
diff
changeset
|
362 if os.path.realpath(dest) == repo.root: |
2112
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
363 raise util.Abort(_('repository root cannot be destination')) |
10650
9ea7238ad935
archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents:
10649
diff
changeset
|
364 |
11557
57bdc2239535
archival: move commands.archive.guess_type to archival.guesskind
Martin Geisler <mg@lazybytes.net>
parents:
11551
diff
changeset
|
365 kind = opts.get('type') or archival.guesskind(dest) or 'files' |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
366 prefix = opts.get('prefix') |
10650
9ea7238ad935
archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents:
10649
diff
changeset
|
367 |
2476
0f7e4a39d9af
archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2473
diff
changeset
|
368 if dest == '-': |
0f7e4a39d9af
archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2473
diff
changeset
|
369 if kind == 'files': |
0f7e4a39d9af
archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2473
diff
changeset
|
370 raise util.Abort(_('cannot archive plain files to stdout')) |
14742
271424fdbeec
archive: wrap the ui descriptor so it doesn't get closed
Idan Kamara <idankk86@gmail.com>
parents:
14740
diff
changeset
|
371 dest = cmdutil.makefileobj(repo, dest) |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10270
diff
changeset
|
372 if not prefix: |
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10270
diff
changeset
|
373 prefix = os.path.basename(repo.root) + '-%h' |
10650
9ea7238ad935
archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents:
10649
diff
changeset
|
374 |
14290
86e70956da4f
cmdutil: make_filename -> makefilename
Matt Mackall <mpm@selenic.com>
parents:
14289
diff
changeset
|
375 prefix = cmdutil.makefilename(repo, prefix, node) |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
376 matchfn = scmutil.match(ctx, [], opts) |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
377 archival.archive(repo, dest, node, kind, not opts.get('no_decode'), |
12323
f00953d9533c
subrepo: add support for 'hg archive'
Martin Geisler <mg@aragost.com>
parents:
12274
diff
changeset
|
378 matchfn, prefix, subrepos=opts.get('subrepos')) |
2112
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
379 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
380 @command('backout', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
381 [('', 'merge', None, _('merge with old dirstate parent after backout')), |
15211
1209de02034e
backout: deprecate/hide support for backing out merges
Matt Mackall <mpm@selenic.com>
parents:
15210
diff
changeset
|
382 ('', 'parent', '', |
1209de02034e
backout: deprecate/hide support for backing out merges
Matt Mackall <mpm@selenic.com>
parents:
15210
diff
changeset
|
383 _('parent to choose when backing out merge (DEPRECATED)'), _('REV')), |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
384 ('r', 'rev', '', _('revision to backout'), _('REV')), |
14852
cac04f2f475b
commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents:
14840
diff
changeset
|
385 ] + mergetoolopts + walkopts + commitopts + commitopts2, |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
386 _('[OPTION]... [-r] REV')) |
4450
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
387 def backout(ui, repo, node=None, rev=None, **opts): |
2158
ec96c4518236
add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2153
diff
changeset
|
388 '''reverse effect of earlier changeset |
ec96c4518236
add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2153
diff
changeset
|
389 |
13340
02aa06a021a0
backout: make help more explicit about what backout does
Jonathan Nieder <jrnieder@gmail.com>
parents:
13328
diff
changeset
|
390 Prepare a new changeset with the effect of REV undone in the |
02aa06a021a0
backout: make help more explicit about what backout does
Jonathan Nieder <jrnieder@gmail.com>
parents:
13328
diff
changeset
|
391 current working directory. |
02aa06a021a0
backout: make help more explicit about what backout does
Jonathan Nieder <jrnieder@gmail.com>
parents:
13328
diff
changeset
|
392 |
13473
bbdd858e3229
backout: clarify which changesets are new in help text
Jonathan Nieder <jrnieder@gmail.com>
parents:
13472
diff
changeset
|
393 If REV is the parent of the working directory, then this new changeset |
13340
02aa06a021a0
backout: make help more explicit about what backout does
Jonathan Nieder <jrnieder@gmail.com>
parents:
13328
diff
changeset
|
394 is committed automatically. Otherwise, hg needs to merge the |
02aa06a021a0
backout: make help more explicit about what backout does
Jonathan Nieder <jrnieder@gmail.com>
parents:
13328
diff
changeset
|
395 changes and the merged result is left uncommitted. |
02aa06a021a0
backout: make help more explicit about what backout does
Jonathan Nieder <jrnieder@gmail.com>
parents:
13328
diff
changeset
|
396 |
15210
9d8115c5fbda
backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents:
15209
diff
changeset
|
397 .. note:: |
9d8115c5fbda
backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents:
15209
diff
changeset
|
398 backout cannot be used to fix either an unwanted or |
9d8115c5fbda
backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents:
15209
diff
changeset
|
399 incorrect merge. |
9d8115c5fbda
backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents:
15209
diff
changeset
|
400 |
15209
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
401 .. container:: verbose |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
402 |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
403 By default, the pending changeset will have one parent, |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
404 maintaining a linear history. With --merge, the pending |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
405 changeset will instead have two parents: the old parent of the |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
406 working directory and a new child of REV that simply undoes REV. |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
407 |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
408 Before version 1.7, the behavior without --merge was equivalent |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
409 to specifying --merge followed by :hg:`update --clean .` to |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
410 cancel the merge and leave the child of REV as a head to be |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
411 merged separately. |
6163
1f733c2f0165
Document log date ranges and mention 'hg help dates' for all commands (issue998)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6161
diff
changeset
|
412 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
413 See :hg:`help dates` for a list of formats valid for -d/--date. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
414 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
415 Returns 0 on success. |
6163
1f733c2f0165
Document log date ranges and mention 'hg help dates' for all commands (issue998)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6161
diff
changeset
|
416 ''' |
4450
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
417 if rev and node: |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
418 raise util.Abort(_("please specify just one revision")) |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
419 |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
420 if not rev: |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
421 rev = node |
2158
ec96c4518236
add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2153
diff
changeset
|
422 |
4726
f6e961c0155b
Fix and test 'hg backout' without or with too many revisions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4718
diff
changeset
|
423 if not rev: |
f6e961c0155b
Fix and test 'hg backout' without or with too many revisions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4718
diff
changeset
|
424 raise util.Abort(_("please specify a revision to backout")) |
f6e961c0155b
Fix and test 'hg backout' without or with too many revisions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4718
diff
changeset
|
425 |
6139
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6134
diff
changeset
|
426 date = opts.get('date') |
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6134
diff
changeset
|
427 if date: |
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6134
diff
changeset
|
428 opts['date'] = util.parsedate(date) |
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6134
diff
changeset
|
429 |
14289
d68ddccf276b
cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents:
14286
diff
changeset
|
430 cmdutil.bailifchanged(repo) |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
431 node = scmutil.revsingle(repo, rev).node() |
5716
be367cbafe70
cmdutil: make bail_if_changed bail on uncommitted merge
Matt Mackall <mpm@selenic.com>
parents:
5688
diff
changeset
|
432 |
2158
ec96c4518236
add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2153
diff
changeset
|
433 op1, op2 = repo.dirstate.parents() |
5568
de620356064f
backout: disallow across branches (issue655)
Matt Mackall <mpm@selenic.com>
parents:
5542
diff
changeset
|
434 a = repo.changelog.ancestor(op1, node) |
de620356064f
backout: disallow across branches (issue655)
Matt Mackall <mpm@selenic.com>
parents:
5542
diff
changeset
|
435 if a != node: |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
436 raise util.Abort(_('cannot backout change on a different branch')) |
5568
de620356064f
backout: disallow across branches (issue655)
Matt Mackall <mpm@selenic.com>
parents:
5542
diff
changeset
|
437 |
2614
8ba1c31f6864
backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2613
diff
changeset
|
438 p1, p2 = repo.changelog.parents(node) |
8ba1c31f6864
backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2613
diff
changeset
|
439 if p1 == nullid: |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
440 raise util.Abort(_('cannot backout a change with no parents')) |
2158
ec96c4518236
add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2153
diff
changeset
|
441 if p2 != nullid: |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
442 if not opts.get('parent'): |
15211
1209de02034e
backout: deprecate/hide support for backing out merges
Matt Mackall <mpm@selenic.com>
parents:
15210
diff
changeset
|
443 raise util.Abort(_('cannot backout a merge changeset')) |
2614
8ba1c31f6864
backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2613
diff
changeset
|
444 p = repo.lookup(opts['parent']) |
8ba1c31f6864
backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2613
diff
changeset
|
445 if p not in (p1, p2): |
3679
2956948b81f3
fix warnings generated by pygettext.py.
Marcos Chaves <marcos.nospam@gmail.com>
parents:
3673
diff
changeset
|
446 raise util.Abort(_('%s is not a parent of %s') % |
3680
69cf255a55a1
Indentation cleanups for 2956948b81f3.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3679
diff
changeset
|
447 (short(p), short(node))) |
2614
8ba1c31f6864
backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2613
diff
changeset
|
448 parent = p |
8ba1c31f6864
backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2613
diff
changeset
|
449 else: |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
450 if opts.get('parent'): |
2614
8ba1c31f6864
backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2613
diff
changeset
|
451 raise util.Abort(_('cannot use --parent on non-merge changeset')) |
8ba1c31f6864
backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2613
diff
changeset
|
452 parent = p1 |
5568
de620356064f
backout: disallow across branches (issue655)
Matt Mackall <mpm@selenic.com>
parents:
5542
diff
changeset
|
453 |
6423
fb374b1b3911
backout: reverse changeset belongs on current branch
Matt Mackall <mpm@selenic.com>
parents:
6385
diff
changeset
|
454 # the backout should appear on the same branch |
16470
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
455 wlock = repo.wlock() |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
456 try: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
457 branch = repo.dirstate.branch() |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
458 hg.clean(repo, node, show_stats=False) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
459 repo.dirstate.setbranch(branch) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
460 revert_opts = opts.copy() |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
461 revert_opts['date'] = None |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
462 revert_opts['all'] = True |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
463 revert_opts['rev'] = hex(parent) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
464 revert_opts['no_backup'] = None |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
465 revert(ui, repo, **revert_opts) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
466 if not opts.get('merge') and op1 != node: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
467 try: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
468 ui.setconfig('ui', 'forcemerge', opts.get('tool', '')) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
469 return hg.update(repo, op1) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
470 finally: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
471 ui.setconfig('ui', 'forcemerge', '') |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
472 |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
473 commit_opts = opts.copy() |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
474 commit_opts['addremove'] = False |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
475 if not commit_opts['message'] and not commit_opts['logfile']: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
476 # we don't translate commit messages |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
477 commit_opts['message'] = "Backed out changeset %s" % short(node) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
478 commit_opts['force_editor'] = True |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
479 commit(ui, repo, **commit_opts) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
480 def nice(node): |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
481 return '%d:%s' % (repo.changelog.rev(node), short(node)) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
482 ui.status(_('changeset %s backs out changeset %s\n') % |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
483 (nice(repo.changelog.tip()), nice(node))) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
484 if opts.get('merge') and op1 != node: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
485 hg.clean(repo, op1, show_stats=False) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
486 ui.status(_('merging with changeset %s\n') |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
487 % nice(repo.changelog.tip())) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
488 try: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
489 ui.setconfig('ui', 'forcemerge', opts.get('tool', '')) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
490 return hg.merge(repo, hex(repo.changelog.tip())) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
491 finally: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
492 ui.setconfig('ui', 'forcemerge', '') |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
493 finally: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
494 wlock.release() |
12727
52971985be14
backout: provide linear backout as a default (without --merge option)
Gilles Moris <gilles.moris@free.fr>
parents:
12726
diff
changeset
|
495 return 0 |
2158
ec96c4518236
add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2153
diff
changeset
|
496 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
497 @command('bisect', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
498 [('r', 'reset', False, _('reset bisect state')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
499 ('g', 'good', False, _('mark changeset good')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
500 ('b', 'bad', False, _('mark changeset bad')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
501 ('s', 'skip', False, _('skip testing changeset')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
502 ('e', 'extend', False, _('extend the bisect range')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
503 ('c', 'command', '', _('use command to check changeset state'), _('CMD')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
504 ('U', 'noupdate', False, _('do not update to target'))], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
505 _("[-gbsr] [-U] [-c CMD] [REV]")) |
7227
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
506 def bisect(ui, repo, rev=None, extra=None, command=None, |
13601
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
507 reset=None, good=None, bad=None, skip=None, extend=None, |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
508 noupdate=None): |
5775
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
509 """subdivision search of changesets |
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
510 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
511 This command helps to find changesets which introduce problems. To |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
512 use, mark the earliest changeset you know exhibits the problem as |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
513 bad, then mark the latest changeset which is free from the problem |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
514 as good. Bisect will update your working directory to a revision |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
515 for testing (unless the -U/--noupdate option is specified). Once |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
516 you have performed tests, mark the working directory as good or |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
517 bad, and bisect will either update to another candidate changeset |
6928
1a4c66d741a2
bisect: expand help text to explain REV argument and --noupdate
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6858
diff
changeset
|
518 or announce that it has found the bad revision. |
7184
380fda3eed13
clean up trailing spaces
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7037
diff
changeset
|
519 |
6928
1a4c66d741a2
bisect: expand help text to explain REV argument and --noupdate
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6858
diff
changeset
|
520 As a shortcut, you can also use the revision argument to mark a |
1a4c66d741a2
bisect: expand help text to explain REV argument and --noupdate
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6858
diff
changeset
|
521 revision as good or bad without checking it out first. |
7227
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
522 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
523 If you supply a command, it will be used for automatic bisection. |
16648
1388cc711ea7
bisect: set HG_NODE when runing a command
Bryan O'Sullivan <bryano@fb.com>
parents:
16647
diff
changeset
|
524 The environment variable HG_NODE will contain the ID of the |
1388cc711ea7
bisect: set HG_NODE when runing a command
Bryan O'Sullivan <bryano@fb.com>
parents:
16647
diff
changeset
|
525 changeset being tested. The exit status of the command will be |
1388cc711ea7
bisect: set HG_NODE when runing a command
Bryan O'Sullivan <bryano@fb.com>
parents:
16647
diff
changeset
|
526 used to mark revisions as good or bad: status 0 means good, 125 |
1388cc711ea7
bisect: set HG_NODE when runing a command
Bryan O'Sullivan <bryano@fb.com>
parents:
16647
diff
changeset
|
527 means to skip the revision, 127 (command not found) will abort the |
1388cc711ea7
bisect: set HG_NODE when runing a command
Bryan O'Sullivan <bryano@fb.com>
parents:
16647
diff
changeset
|
528 bisection, and any other non-zero exit status means the revision |
1388cc711ea7
bisect: set HG_NODE when runing a command
Bryan O'Sullivan <bryano@fb.com>
parents:
16647
diff
changeset
|
529 is bad. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
530 |
15139
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
531 .. container:: verbose |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
532 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
533 Some examples: |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
534 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
535 - start a bisection with known bad revision 12, and good revision 34:: |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
536 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
537 hg bisect --bad 34 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
538 hg bisect --good 12 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
539 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
540 - advance the current bisection by marking current revision as good or |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
541 bad:: |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
542 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
543 hg bisect --good |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
544 hg bisect --bad |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
545 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
546 - mark the current revision, or a known revision, to be skipped (eg. if |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
547 that revision is not usable because of another issue):: |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
548 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
549 hg bisect --skip |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
550 hg bisect --skip 23 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
551 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
552 - forget the current bisection:: |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
553 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
554 hg bisect --reset |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
555 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
556 - use 'make && make tests' to automatically find the first broken |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
557 revision:: |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
558 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
559 hg bisect --reset |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
560 hg bisect --bad 34 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
561 hg bisect --good 12 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
562 hg bisect --command 'make && make tests' |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
563 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
564 - see all changesets whose states are already known in the current |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
565 bisection:: |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
566 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
567 hg log -r "bisect(pruned)" |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
568 |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
569 - see the changeset currently being bisected (especially useful |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
570 if running with -U/--noupdate):: |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
571 |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
572 hg log -r "bisect(current)" |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
573 |
15139
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
574 - see all changesets that took part in the current bisection:: |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
575 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
576 hg log -r "bisect(range)" |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
577 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
578 - with the graphlog extension, you can even get a nice graph:: |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
579 |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
580 hg log --graph -r "bisect(range)" |
0834e0bb445a
bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15129
diff
changeset
|
581 |
15147
395ca8cd2669
revset.bisect: add 'ignored' set to the bisect keyword
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15145
diff
changeset
|
582 See :hg:`help revsets` for more about the `bisect()` keyword. |
395ca8cd2669
revset.bisect: add 'ignored' set to the bisect keyword
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15145
diff
changeset
|
583 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
584 Returns 0 on success. |
5775
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
585 """ |
13601
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
586 def extendbisectrange(nodes, good): |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
587 # bisect is incomplete when it ends on a merge node and |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
588 # one of the parent was not checked. |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
589 parents = repo[nodes[0]].parents() |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
590 if len(parents) > 1: |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
591 side = good and state['bad'] or state['good'] |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
592 num = len(set(i.node() for i in parents) & set(side)) |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
593 if num == 1: |
14157 | 594 return parents[0].ancestor(parents[1]) |
13601
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
595 return None |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
596 |
7227
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
597 def print_result(nodes, good): |
5775
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
598 displayer = cmdutil.show_changeset(ui, repo, {}) |
6858
8f256bf98219
Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents:
6842
diff
changeset
|
599 if len(nodes) == 1: |
8f256bf98219
Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents:
6842
diff
changeset
|
600 # narrowed it down to a single revision |
8088
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
601 if good: |
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
602 ui.write(_("The first good revision is:\n")) |
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
603 else: |
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
604 ui.write(_("The first bad revision is:\n")) |
7369
87158be081b8
cmdutil: use change contexts for cset-printer and cset-templater
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7364
diff
changeset
|
605 displayer.show(repo[nodes[0]]) |
13601
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
606 extendnode = extendbisectrange(nodes, good) |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
607 if extendnode is not None: |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
608 ui.write(_('Not all ancestors of this changeset have been' |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
609 ' checked.\nUse bisect --extend to continue the ' |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
610 'bisection from\nthe common ancestor, %s.\n') |
14055
421d56a055fd
drop {short,hex}(ctx.node()) calls in favor of ctx methods
Alexander Solovyov <alexander@solovyov.net>
parents:
14048
diff
changeset
|
611 % extendnode) |
6858
8f256bf98219
Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents:
6842
diff
changeset
|
612 else: |
8f256bf98219
Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents:
6842
diff
changeset
|
613 # multiple possible revisions |
8088
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
614 if good: |
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
615 ui.write(_("Due to skipped revisions, the first " |
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
616 "good revision could be any of:\n")) |
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
617 else: |
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
618 ui.write(_("Due to skipped revisions, the first " |
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
619 "bad revision could be any of:\n")) |
6858
8f256bf98219
Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents:
6842
diff
changeset
|
620 for n in nodes: |
7369
87158be081b8
cmdutil: use change contexts for cset-printer and cset-templater
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7364
diff
changeset
|
621 displayer.show(repo[n]) |
10152
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
622 displayer.close() |
7227
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
623 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
624 def check_state(state, interactive=True): |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
625 if not state['good'] or not state['bad']: |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
626 if (good or bad or skip or reset) and interactive: |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
627 return |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
628 if not state['good']: |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
629 raise util.Abort(_('cannot bisect (no known good revisions)')) |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
630 else: |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
631 raise util.Abort(_('cannot bisect (no known bad revisions)')) |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
632 return True |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
633 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
634 # backward compatibility |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
635 if rev in "good bad reset init".split(): |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
636 ui.warn(_("(use of 'hg bisect <cmd>' is deprecated)\n")) |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
637 cmd, rev, extra = rev, extra, None |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
638 if cmd == "good": |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
639 good = True |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
640 elif cmd == "bad": |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
641 bad = True |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
642 else: |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
643 reset = True |
13601
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
644 elif extra or good + bad + skip + reset + extend + bool(command) > 1: |
7227
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
645 raise util.Abort(_('incompatible arguments')) |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
646 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
647 if reset: |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
648 p = repo.join("bisect.state") |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
649 if os.path.exists(p): |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
650 os.unlink(p) |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
651 return |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
652 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
653 state = hbisect.load_state(repo) |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
654 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
655 if command: |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
656 changesets = 1 |
7590
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
657 try: |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
658 node = state['current'][0] |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
659 except LookupError: |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
660 if noupdate: |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
661 raise util.Abort(_('current bisect revision is unknown - ' |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
662 'start a new bisect to fix')) |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
663 node, p2 = repo.dirstate.parents() |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
664 if p2 != nullid: |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
665 raise util.Abort(_('current bisect revision is a merge')) |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
666 try: |
7590
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
667 while changesets: |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
668 # update state |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
669 state['current'] = [node] |
16593
e462313ef1bd
bisect: save current state before running a command
Bryan O'Sullivan <bryano@fb.com>
parents:
16591
diff
changeset
|
670 hbisect.save_state(repo, state) |
16648
1388cc711ea7
bisect: set HG_NODE when runing a command
Bryan O'Sullivan <bryano@fb.com>
parents:
16647
diff
changeset
|
671 status = util.system(command, |
1388cc711ea7
bisect: set HG_NODE when runing a command
Bryan O'Sullivan <bryano@fb.com>
parents:
16647
diff
changeset
|
672 environ={'HG_NODE': hex(node)}, |
1388cc711ea7
bisect: set HG_NODE when runing a command
Bryan O'Sullivan <bryano@fb.com>
parents:
16647
diff
changeset
|
673 out=ui.fout) |
7590
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
674 if status == 125: |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
675 transition = "skip" |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
676 elif status == 0: |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
677 transition = "good" |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
678 # status < 0 means process was killed |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
679 elif status == 127: |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
680 raise util.Abort(_("failed to execute %s") % command) |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
681 elif status < 0: |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
682 raise util.Abort(_("%s killed") % command) |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
683 else: |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
684 transition = "bad" |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
685 ctx = scmutil.revsingle(repo, rev, node) |
12925
6eab8f0df2ca
commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents:
12918
diff
changeset
|
686 rev = None # clear for future iterations |
8805
2726a6df11e9
bisect: improve --command output
Patrick Mezard <pmezard@gmail.com>
parents:
8802
diff
changeset
|
687 state[transition].append(ctx.node()) |
16936
ee7dd2307031
bisect: lowercase status message
Martin Geisler <mg@aragost.com>
parents:
16935
diff
changeset
|
688 ui.status(_('changeset %d:%s: %s\n') % (ctx, ctx, transition)) |
7590
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
689 check_state(state, interactive=False) |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
690 # bisect |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
691 nodes, changesets, good = hbisect.bisect(repo.changelog, state) |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
692 # update to next check |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
693 node = nodes[0] |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
694 if not noupdate: |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
695 cmdutil.bailifchanged(repo) |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
696 hg.clean(repo, node, show_stats=False) |
7590
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
697 finally: |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
698 state['current'] = [node] |
7590
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
699 hbisect.save_state(repo, state) |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
700 print_result(nodes, good) |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
701 return |
7227
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
702 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
703 # update state |
12177
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
704 |
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
705 if rev: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
706 nodes = [repo.lookup(i) for i in scmutil.revrange(repo, [rev])] |
12177
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
707 else: |
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
708 nodes = [repo.lookup('.')] |
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
709 |
9689
57cee011ffcb
bisect: no need to save the state if it wasn't changed
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
9687
diff
changeset
|
710 if good or bad or skip: |
57cee011ffcb
bisect: no need to save the state if it wasn't changed
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
9687
diff
changeset
|
711 if good: |
12177
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
712 state['good'] += nodes |
9689
57cee011ffcb
bisect: no need to save the state if it wasn't changed
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
9687
diff
changeset
|
713 elif bad: |
12177
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
714 state['bad'] += nodes |
9689
57cee011ffcb
bisect: no need to save the state if it wasn't changed
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
9687
diff
changeset
|
715 elif skip: |
12177
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
716 state['skip'] += nodes |
9689
57cee011ffcb
bisect: no need to save the state if it wasn't changed
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
9687
diff
changeset
|
717 hbisect.save_state(repo, state) |
7227
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
718 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
719 if not check_state(state): |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
720 return |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
721 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
722 # actually bisect |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
723 nodes, changesets, good = hbisect.bisect(repo.changelog, state) |
13601
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
724 if extend: |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
725 if not changesets: |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
726 extendnode = extendbisectrange(nodes, good) |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
727 if extendnode is not None: |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
728 ui.write(_("Extending search to changeset %d:%s\n" |
14055
421d56a055fd
drop {short,hex}(ctx.node()) calls in favor of ctx methods
Alexander Solovyov <alexander@solovyov.net>
parents:
14048
diff
changeset
|
729 % (extendnode.rev(), extendnode))) |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
730 state['current'] = [extendnode.node()] |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
731 hbisect.save_state(repo, state) |
13601
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
732 if noupdate: |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
733 return |
14289
d68ddccf276b
cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents:
14286
diff
changeset
|
734 cmdutil.bailifchanged(repo) |
13601
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
735 return hg.clean(repo, extendnode.node()) |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
736 raise util.Abort(_("nothing to extend")) |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
737 |
7227
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
738 if changesets == 0: |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
739 print_result(nodes, good) |
6858
8f256bf98219
Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents:
6842
diff
changeset
|
740 else: |
8f256bf98219
Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents:
6842
diff
changeset
|
741 assert len(nodes) == 1 # only a single node can be tested next |
8f256bf98219
Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents:
6842
diff
changeset
|
742 node = nodes[0] |
5775
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
743 # compute the approximate number of remaining tests |
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
744 tests, size = 0, 2 |
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
745 while size <= changesets: |
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
746 tests, size = tests + 1, size * 2 |
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
747 rev = repo.changelog.rev(node) |
9012
ada93c6bf554
bisect: fix format specifiers for integers
Cédric Duval <cedricduval@free.fr>
parents:
8995
diff
changeset
|
748 ui.write(_("Testing changeset %d:%s " |
ada93c6bf554
bisect: fix format specifiers for integers
Cédric Duval <cedricduval@free.fr>
parents:
8995
diff
changeset
|
749 "(%d changesets remaining, ~%d tests)\n") |
6217
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
750 % (rev, short(node), changesets, tests)) |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
751 state['current'] = [node] |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
752 hbisect.save_state(repo, state) |
5775
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
753 if not noupdate: |
14289
d68ddccf276b
cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents:
14286
diff
changeset
|
754 cmdutil.bailifchanged(repo) |
5775
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
755 return hg.clean(repo, node) |
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
756 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
757 @command('bookmarks', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
758 [('f', 'force', False, _('force')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
759 ('r', 'rev', '', _('revision'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
760 ('d', 'delete', False, _('delete a given bookmark')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
761 ('m', 'rename', '', _('rename a given bookmark'), _('NAME')), |
15959
db33555eafea
bookmarks: correct correction of -i
Matt Mackall <mpm@selenic.com>
parents:
15958
diff
changeset
|
762 ('i', 'inactive', False, _('mark a bookmark inactive'))], |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
763 _('hg bookmarks [-f] [-d] [-i] [-m NAME] [-r REV] [NAME]')) |
14188
9029b1a38c30
bookmarks: allow to create/move bookmark without making it current (issue2788)
Kevin Bullock <kbullock@ringworld.org>
parents:
14168
diff
changeset
|
764 def bookmark(ui, repo, mark=None, rev=None, force=False, delete=False, |
9029b1a38c30
bookmarks: allow to create/move bookmark without making it current (issue2788)
Kevin Bullock <kbullock@ringworld.org>
parents:
14168
diff
changeset
|
765 rename=None, inactive=False): |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
766 '''track a line of development with movable markers |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
767 |
15620
73faa2664909
bookmarks: clarify help for use of merge and update
Kevin Bullock <kbullock@ringworld.org>
parents:
15619
diff
changeset
|
768 Bookmarks are pointers to certain commits that move when committing. |
73faa2664909
bookmarks: clarify help for use of merge and update
Kevin Bullock <kbullock@ringworld.org>
parents:
15619
diff
changeset
|
769 Bookmarks are local. They can be renamed, copied and deleted. It is |
73faa2664909
bookmarks: clarify help for use of merge and update
Kevin Bullock <kbullock@ringworld.org>
parents:
15619
diff
changeset
|
770 possible to use :hg:`merge NAME` to merge from a given bookmark, and |
73faa2664909
bookmarks: clarify help for use of merge and update
Kevin Bullock <kbullock@ringworld.org>
parents:
15619
diff
changeset
|
771 :hg:`update NAME` to update to a given bookmark. |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
772 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
773 You can use :hg:`bookmark NAME` to set a bookmark on the working |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
774 directory's parent revision with the given name. If you specify |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
775 a revision using -r REV (where REV may be an existing bookmark), |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
776 the bookmark is assigned to that revision. |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
777 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
778 Bookmarks can be pushed and pulled between repositories (see :hg:`help |
13407
354f304152ad
bookmarks: update help text since moving into core
Kevin Bullock <kbullock@ringworld.org>
parents:
13406
diff
changeset
|
779 push` and :hg:`help pull`). This requires both the local and remote |
354f304152ad
bookmarks: update help text since moving into core
Kevin Bullock <kbullock@ringworld.org>
parents:
13406
diff
changeset
|
780 repositories to support bookmarks. For versions prior to 1.8, this means |
354f304152ad
bookmarks: update help text since moving into core
Kevin Bullock <kbullock@ringworld.org>
parents:
13406
diff
changeset
|
781 the bookmarks extension must be enabled. |
15939
f57f891eb88e
bookmarks: clarify help for -i/--inactive
Kevin Bullock <kbullock@ringworld.org>
parents:
15935
diff
changeset
|
782 |
f57f891eb88e
bookmarks: clarify help for -i/--inactive
Kevin Bullock <kbullock@ringworld.org>
parents:
15935
diff
changeset
|
783 With -i/--inactive, the new bookmark will not be made the active |
f57f891eb88e
bookmarks: clarify help for -i/--inactive
Kevin Bullock <kbullock@ringworld.org>
parents:
15935
diff
changeset
|
784 bookmark. If -r/--rev is given, the new bookmark will not be made |
f57f891eb88e
bookmarks: clarify help for -i/--inactive
Kevin Bullock <kbullock@ringworld.org>
parents:
15935
diff
changeset
|
785 active even if -i/--inactive is not given. If no NAME is given, the |
f57f891eb88e
bookmarks: clarify help for -i/--inactive
Kevin Bullock <kbullock@ringworld.org>
parents:
15935
diff
changeset
|
786 current active bookmark will be marked inactive. |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
787 ''' |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
788 hexfn = ui.debugflag and hex or short |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
789 marks = repo._bookmarks |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
790 cur = repo.changectx('.').node() |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
791 |
15490
875bb46e35ea
bookmark: same order for options and code
Kevin Bullock <kbullock@ringworld.org>
parents:
15474
diff
changeset
|
792 if delete: |
875bb46e35ea
bookmark: same order for options and code
Kevin Bullock <kbullock@ringworld.org>
parents:
15474
diff
changeset
|
793 if mark is None: |
875bb46e35ea
bookmark: same order for options and code
Kevin Bullock <kbullock@ringworld.org>
parents:
15474
diff
changeset
|
794 raise util.Abort(_("bookmark name required")) |
875bb46e35ea
bookmark: same order for options and code
Kevin Bullock <kbullock@ringworld.org>
parents:
15474
diff
changeset
|
795 if mark not in marks: |
875bb46e35ea
bookmark: same order for options and code
Kevin Bullock <kbullock@ringworld.org>
parents:
15474
diff
changeset
|
796 raise util.Abort(_("bookmark '%s' does not exist") % mark) |
875bb46e35ea
bookmark: same order for options and code
Kevin Bullock <kbullock@ringworld.org>
parents:
15474
diff
changeset
|
797 if mark == repo._bookmarkcurrent: |
875bb46e35ea
bookmark: same order for options and code
Kevin Bullock <kbullock@ringworld.org>
parents:
15474
diff
changeset
|
798 bookmarks.setcurrent(repo, None) |
875bb46e35ea
bookmark: same order for options and code
Kevin Bullock <kbullock@ringworld.org>
parents:
15474
diff
changeset
|
799 del marks[mark] |
875bb46e35ea
bookmark: same order for options and code
Kevin Bullock <kbullock@ringworld.org>
parents:
15474
diff
changeset
|
800 bookmarks.write(repo) |
875bb46e35ea
bookmark: same order for options and code
Kevin Bullock <kbullock@ringworld.org>
parents:
15474
diff
changeset
|
801 return |
875bb46e35ea
bookmark: same order for options and code
Kevin Bullock <kbullock@ringworld.org>
parents:
15474
diff
changeset
|
802 |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
803 if rename: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
804 if rename not in marks: |
13911
6bc340940c18
bookmarks: change error messages to match those given by 'hg tag' commands
Idan Kamara <idankk86@gmail.com>
parents:
13899
diff
changeset
|
805 raise util.Abort(_("bookmark '%s' does not exist") % rename) |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
806 if mark in marks and not force: |
13911
6bc340940c18
bookmarks: change error messages to match those given by 'hg tag' commands
Idan Kamara <idankk86@gmail.com>
parents:
13899
diff
changeset
|
807 raise util.Abort(_("bookmark '%s' already exists " |
6bc340940c18
bookmarks: change error messages to match those given by 'hg tag' commands
Idan Kamara <idankk86@gmail.com>
parents:
13899
diff
changeset
|
808 "(use -f to force)") % mark) |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
809 if mark is None: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
810 raise util.Abort(_("new bookmark name required")) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
811 marks[mark] = marks[rename] |
14188
9029b1a38c30
bookmarks: allow to create/move bookmark without making it current (issue2788)
Kevin Bullock <kbullock@ringworld.org>
parents:
14168
diff
changeset
|
812 if repo._bookmarkcurrent == rename and not inactive: |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
813 bookmarks.setcurrent(repo, mark) |
13620
8ee4b00ddfd8
bookmarks: fix update of the current bookmark during rename
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13477
diff
changeset
|
814 del marks[rename] |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
815 bookmarks.write(repo) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
816 return |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
817 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
818 if mark is not None: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
819 if "\n" in mark: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
820 raise util.Abort(_("bookmark name cannot contain newlines")) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
821 mark = mark.strip() |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
822 if not mark: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
823 raise util.Abort(_("bookmark names cannot consist entirely of " |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
824 "whitespace")) |
14189
328422b0380d
bookmarks: allow deactivating current bookmark with -i
Kevin Bullock <kbullock@ringworld.org>
parents:
14188
diff
changeset
|
825 if inactive and mark == repo._bookmarkcurrent: |
328422b0380d
bookmarks: allow deactivating current bookmark with -i
Kevin Bullock <kbullock@ringworld.org>
parents:
14188
diff
changeset
|
826 bookmarks.setcurrent(repo, None) |
328422b0380d
bookmarks: allow deactivating current bookmark with -i
Kevin Bullock <kbullock@ringworld.org>
parents:
14188
diff
changeset
|
827 return |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
828 if mark in marks and not force: |
13911
6bc340940c18
bookmarks: change error messages to match those given by 'hg tag' commands
Idan Kamara <idankk86@gmail.com>
parents:
13899
diff
changeset
|
829 raise util.Abort(_("bookmark '%s' already exists " |
6bc340940c18
bookmarks: change error messages to match those given by 'hg tag' commands
Idan Kamara <idankk86@gmail.com>
parents:
13899
diff
changeset
|
830 "(use -f to force)") % mark) |
16719
e7bf09acd410
localrepo: add branchtip() method for faster single-branch lookups
Brodie Rao <brodie@sf.io>
parents:
16715
diff
changeset
|
831 if ((mark in repo.branchmap() or mark == repo.dirstate.branch()) |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
832 and not force): |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
833 raise util.Abort( |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
834 _("a bookmark cannot have the name of an existing branch")) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
835 if rev: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
836 marks[mark] = repo.lookup(rev) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
837 else: |
15491
c0e42b47ec1a
bookmark: remove excess creation of changectx's
Kevin Bullock <kbullock@ringworld.org>
parents:
15490
diff
changeset
|
838 marks[mark] = cur |
c0e42b47ec1a
bookmark: remove excess creation of changectx's
Kevin Bullock <kbullock@ringworld.org>
parents:
15490
diff
changeset
|
839 if not inactive and cur == marks[mark]: |
13448
97b69883e929
bookmarks: mark new bookmark as current if it points to the current dirstate
David Soria Parra <dsp@php.net>
parents:
13416
diff
changeset
|
840 bookmarks.setcurrent(repo, mark) |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
841 bookmarks.write(repo) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
842 return |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
843 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
844 if mark is None: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
845 if rev: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
846 raise util.Abort(_("bookmark name required")) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
847 if len(marks) == 0: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
848 ui.status(_("no bookmarks set\n")) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
849 else: |
13388
a184dbd9b2c5
localrepo: sort hg bookmark output
David Soria Parra <dsp@php.net>
parents:
13368
diff
changeset
|
850 for bmark, n in sorted(marks.iteritems()): |
13416
5431b3f3e52e
bookmarks: make track.current=True default behaviour and remove option (BC)
David Soria Parra <dsp@php.net>
parents:
13415
diff
changeset
|
851 current = repo._bookmarkcurrent |
5431b3f3e52e
bookmarks: make track.current=True default behaviour and remove option (BC)
David Soria Parra <dsp@php.net>
parents:
13415
diff
changeset
|
852 if bmark == current and n == cur: |
5431b3f3e52e
bookmarks: make track.current=True default behaviour and remove option (BC)
David Soria Parra <dsp@php.net>
parents:
13415
diff
changeset
|
853 prefix, label = '*', 'bookmarks.current' |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
854 else: |
13416
5431b3f3e52e
bookmarks: make track.current=True default behaviour and remove option (BC)
David Soria Parra <dsp@php.net>
parents:
13415
diff
changeset
|
855 prefix, label = ' ', '' |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
856 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
857 if ui.quiet: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
858 ui.write("%s\n" % bmark, label=label) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
859 else: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
860 ui.write(" %s %-25s %d:%s\n" % ( |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
861 prefix, bmark, repo.changelog.rev(n), hexfn(n)), |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
862 label=label) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
863 return |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
864 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
865 @command('branch', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
866 [('f', 'force', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
867 _('set branch name even if it shadows an existing branch')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
868 ('C', 'clean', None, _('reset branch name to parent branch name'))], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
869 _('[-fC] [NAME]')) |
4202
b2873c587b1a
branch: require --force to shadow existing branches
Brendan Cully <brendan@kublai.com>
parents:
4200
diff
changeset
|
870 def branch(ui, repo, label=None, **opts): |
3502
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
871 """set or show the current branch name |
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
872 |
15610
09b200396384
branch: move note about permanence to the top, add 'global'
Matt Mackall <mpm@selenic.com>
parents:
15511
diff
changeset
|
873 .. note:: |
09b200396384
branch: move note about permanence to the top, add 'global'
Matt Mackall <mpm@selenic.com>
parents:
15511
diff
changeset
|
874 Branch names are permanent and global. Use :hg:`bookmark` to create a |
09b200396384
branch: move note about permanence to the top, add 'global'
Matt Mackall <mpm@selenic.com>
parents:
15511
diff
changeset
|
875 light-weight bookmark instead. See :hg:`help glossary` for more |
09b200396384
branch: move note about permanence to the top, add 'global'
Matt Mackall <mpm@selenic.com>
parents:
15511
diff
changeset
|
876 information about named branches and bookmarks. |
09b200396384
branch: move note about permanence to the top, add 'global'
Matt Mackall <mpm@selenic.com>
parents:
15511
diff
changeset
|
877 |
4601
e69da61e467e
Notify the user that hg branch does not create a branch until commit
Brendan Cully <brendan@kublai.com>
parents:
4593
diff
changeset
|
878 With no argument, show the current branch name. With one argument, |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
879 set the working directory branch name (the branch will not exist |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
880 in the repository until the next commit). Standard practice |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
881 recommends that primary development take place on the 'default' |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
882 branch. |
4202
b2873c587b1a
branch: require --force to shadow existing branches
Brendan Cully <brendan@kublai.com>
parents:
4200
diff
changeset
|
883 |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
884 Unless -f/--force is specified, branch will not let you set a |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
885 branch name that already exists, even if it's inactive. |
5999
d1fe1a4eb2b7
Mention 'hg update' to switch branches in help for branch and branches.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
5998
diff
changeset
|
886 |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
887 Use -C/--clean to reset the working directory branch to that of |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
888 the parent of the working directory, negating a previous branch |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
889 change. |
7006
92d44ec32430
branch: added more support for named branches
Sune Foldager <cryo@cyanite.org>
parents:
7003
diff
changeset
|
890 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
891 Use the command :hg:`update` to switch to an existing branch. Use |
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
892 :hg:`commit --close-branch` to mark this branch as closed. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
893 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
894 Returns 0 on success. |
3502
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
895 """ |
16471
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
896 if not opts.get('clean') and not label: |
13047
6c375e07d673
branch: operate on branch names in local string space where possible
Matt Mackall <mpm@selenic.com>
parents:
13022
diff
changeset
|
897 ui.write("%s\n" % repo.dirstate.branch()) |
16471
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
898 return |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
899 |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
900 wlock = repo.wlock() |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
901 try: |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
902 if opts.get('clean'): |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
903 label = repo[None].p1().branch() |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
904 repo.dirstate.setbranch(label) |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
905 ui.status(_('reset working directory to branch %s\n') % label) |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
906 elif label: |
16719
e7bf09acd410
localrepo: add branchtip() method for faster single-branch lookups
Brodie Rao <brodie@sf.io>
parents:
16715
diff
changeset
|
907 if not opts.get('force') and label in repo.branchmap(): |
16471
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
908 if label not in [p.branch() for p in repo.parents()]: |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
909 raise util.Abort(_('a branch of the same name already' |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
910 ' exists'), |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
911 # i18n: "it" refers to an existing branch |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
912 hint=_("use 'hg update' to switch to it")) |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
913 repo.dirstate.setbranch(label) |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
914 ui.status(_('marked working directory as branch %s\n') % label) |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
915 ui.status(_('(branches are permanent and global, ' |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
916 'did you want a bookmark?)\n')) |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
917 finally: |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
918 wlock.release() |
3502
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
919 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
920 @command('branches', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
921 [('a', 'active', False, _('show only branches that have unmerged heads')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
922 ('c', 'closed', False, _('show normal and closed branches'))], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
923 _('[-ac]')) |
8991
7e0b31dfc66f
branches: add --closed flag for consistency with heads
Matt Mackall <mpm@selenic.com>
parents:
8958
diff
changeset
|
924 def branches(ui, repo, active=False, closed=False): |
3502
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
925 """list repository named branches |
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
926 |
4675
6858a7477a5e
Change branches to sort 'active' branches first, and add an option to show only active branches.
Eric Hopper <hopper@omnifarious.org>
parents:
4667
diff
changeset
|
927 List the repository's named branches, indicating which ones are |
8991
7e0b31dfc66f
branches: add --closed flag for consistency with heads
Matt Mackall <mpm@selenic.com>
parents:
8958
diff
changeset
|
928 inactive. If -c/--closed is specified, also list branches which have |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
929 been marked closed (see :hg:`commit --close-branch`). |
8991
7e0b31dfc66f
branches: add --closed flag for consistency with heads
Matt Mackall <mpm@selenic.com>
parents:
8958
diff
changeset
|
930 |
7e0b31dfc66f
branches: add --closed flag for consistency with heads
Matt Mackall <mpm@selenic.com>
parents:
8958
diff
changeset
|
931 If -a/--active is specified, only show active branches. A branch |
7e0b31dfc66f
branches: add --closed flag for consistency with heads
Matt Mackall <mpm@selenic.com>
parents:
8958
diff
changeset
|
932 is considered active if it contains repository heads. |
5999
d1fe1a4eb2b7
Mention 'hg update' to switch branches in help for branch and branches.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
5998
diff
changeset
|
933 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
934 Use the command :hg:`update` to switch to an existing branch. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
935 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
936 Returns 0. |
3502
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
937 """ |
8991
7e0b31dfc66f
branches: add --closed flag for consistency with heads
Matt Mackall <mpm@selenic.com>
parents:
8958
diff
changeset
|
938 |
6631
a2b13cac0922
Active branches fix (issue1104)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
6625
diff
changeset
|
939 hexfunc = ui.debugflag and hex or short |
16721
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
940 |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
941 activebranches = set([repo[n].branch() for n in repo.heads()]) |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
942 branches = [] |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
943 for tag, heads in repo.branchmap().iteritems(): |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
944 for h in reversed(heads): |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
945 ctx = repo[h] |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
946 isopen = not ctx.closesbranch() |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
947 if isopen: |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
948 tip = ctx |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
949 break |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
950 else: |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
951 tip = repo[heads[-1]] |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
952 isactive = tag in activebranches and isopen |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
953 branches.append((tip, isactive, isopen)) |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
954 branches.sort(key=lambda i: (i[1], i[0].rev(), i[0].branch(), i[2]), |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
955 reverse=True) |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
956 |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
957 for ctx, isactive, isopen in branches: |
6631
a2b13cac0922
Active branches fix (issue1104)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
6625
diff
changeset
|
958 if (not active) or isactive: |
16612
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
959 if isactive: |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
960 label = 'branches.active' |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
961 notice = '' |
16721
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
962 elif not isopen: |
16612
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
963 if not closed: |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
964 continue |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
965 label = 'branches.closed' |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
966 notice = _(' (closed)') |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
967 else: |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
968 label = 'branches.inactive' |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
969 notice = _(' (inactive)') |
16721
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
970 if ctx.branch() == repo.dirstate.branch(): |
16612
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
971 label = 'branches.current' |
16721
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
972 rev = str(ctx.rev()).rjust(31 - encoding.colwidth(ctx.branch())) |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
973 rev = ui.label('%s:%s' % (rev, hexfunc(ctx.node())), |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
974 'log.changeset') |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
975 tag = ui.label(ctx.branch(), label) |
4675
6858a7477a5e
Change branches to sort 'active' branches first, and add an option to show only active branches.
Eric Hopper <hopper@omnifarious.org>
parents:
4667
diff
changeset
|
976 if ui.quiet: |
13047
6c375e07d673
branch: operate on branch names in local string space where possible
Matt Mackall <mpm@selenic.com>
parents:
13022
diff
changeset
|
977 ui.write("%s\n" % tag) |
4675
6858a7477a5e
Change branches to sort 'active' branches first, and add an option to show only active branches.
Eric Hopper <hopper@omnifarious.org>
parents:
4667
diff
changeset
|
978 else: |
13047
6c375e07d673
branch: operate on branch names in local string space where possible
Matt Mackall <mpm@selenic.com>
parents:
13022
diff
changeset
|
979 ui.write("%s %s%s\n" % (tag, rev, notice)) |
3502
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
980 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
981 @command('bundle', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
982 [('f', 'force', None, _('run even when the destination is unrelated')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
983 ('r', 'rev', [], _('a changeset intended to be added to the destination'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
984 _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
985 ('b', 'branch', [], _('a specific branch you would like to bundle'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
986 _('BRANCH')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
987 ('', 'base', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
988 _('a base changeset assumed to be available at the destination'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
989 _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
990 ('a', 'all', None, _('bundle all changesets in the repository')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
991 ('t', 'type', 'bzip2', _('bundle compression type to use'), _('TYPE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
992 ] + remoteopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
993 _('[-f] [-t TYPE] [-a] [-r REV]... [--base REV]... FILE [DEST]')) |
2494
73ac95671788
push, outgoing, bundle: fall back to "default" if "default-push" not defined
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2493
diff
changeset
|
994 def bundle(ui, repo, fname, dest=None, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
995 """create a changegroup file |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
996 |
3511
aa8f086cb141
Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3510
diff
changeset
|
997 Generate a compressed changegroup file collecting changesets not |
7807
bd8f44638847
help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents:
7765
diff
changeset
|
998 known to be in another repository. |
3511
aa8f086cb141
Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3510
diff
changeset
|
999 |
10376 | 1000 If you omit the destination repository, then hg assumes the |
1001 destination will have all the nodes you specify with --base | |
6448
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
1002 parameters. To create a bundle containing all changesets, use |
8903
d403cf4eb32d
help: describe bundle compression methods (issue1523)
Henrik Stuart <hg@hstuart.dk>
parents:
8902
diff
changeset
|
1003 -a/--all (or --base null). |
d403cf4eb32d
help: describe bundle compression methods (issue1523)
Henrik Stuart <hg@hstuart.dk>
parents:
8902
diff
changeset
|
1004 |
8958
8358cf63f612
commands: improve bundle compression methods description
Stefano Mioli <jstevie@gmail.com>
parents:
8955
diff
changeset
|
1005 You can change compression method with the -t/--type option. |
8358cf63f612
commands: improve bundle compression methods description
Stefano Mioli <jstevie@gmail.com>
parents:
8955
diff
changeset
|
1006 The available compression methods are: none, bzip2, and |
8903
d403cf4eb32d
help: describe bundle compression methods (issue1523)
Henrik Stuart <hg@hstuart.dk>
parents:
8902
diff
changeset
|
1007 gzip (by default, bundles are compressed using bzip2). |
3511
aa8f086cb141
Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3510
diff
changeset
|
1008 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
1009 The bundle file can then be transferred using conventional means |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
1010 and applied to another repository with the unbundle or pull |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
1011 command. This is useful when direct push and pull are not |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
1012 available or when exporting an entire repository is undesirable. |
3511
aa8f086cb141
Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3510
diff
changeset
|
1013 |
aa8f086cb141
Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3510
diff
changeset
|
1014 Applying bundles preserves all changeset contents including |
aa8f086cb141
Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3510
diff
changeset
|
1015 permissions, copy/rename information, and revision history. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1016 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1017 Returns 0 on success, 1 if no changes found. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1018 """ |
12925
6eab8f0df2ca
commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents:
12918
diff
changeset
|
1019 revs = None |
6eab8f0df2ca
commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents:
12918
diff
changeset
|
1020 if 'rev' in opts: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
1021 revs = scmutil.revrange(repo, opts['rev']) |
12925
6eab8f0df2ca
commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents:
12918
diff
changeset
|
1022 |
16427
d54d4de56aa7
commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents:
16389
diff
changeset
|
1023 bundletype = opts.get('type', 'bzip2').lower() |
d54d4de56aa7
commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents:
16389
diff
changeset
|
1024 btypes = {'none': 'HG10UN', 'bzip2': 'HG10BZ', 'gzip': 'HG10GZ'} |
d54d4de56aa7
commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents:
16389
diff
changeset
|
1025 bundletype = btypes.get(bundletype) |
d54d4de56aa7
commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents:
16389
diff
changeset
|
1026 if bundletype not in changegroup.bundletypes: |
d54d4de56aa7
commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents:
16389
diff
changeset
|
1027 raise util.Abort(_('unknown bundle type specified with --type')) |
d54d4de56aa7
commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents:
16389
diff
changeset
|
1028 |
6171
73b1de288801
Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents:
6163
diff
changeset
|
1029 if opts.get('all'): |
73b1de288801
Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents:
6163
diff
changeset
|
1030 base = ['null'] |
73b1de288801
Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents:
6163
diff
changeset
|
1031 else: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
1032 base = scmutil.revrange(repo, opts.get('base')) |
3284
d89e98840b08
add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3278
diff
changeset
|
1033 if base: |
d89e98840b08
add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3278
diff
changeset
|
1034 if dest: |
8669
6f0f69da003e
commands: typo in bundle abort message
Martin Geisler <mg@lazybytes.net>
parents:
8664
diff
changeset
|
1035 raise util.Abort(_("--base is incompatible with specifying " |
3284
d89e98840b08
add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3278
diff
changeset
|
1036 "a destination")) |
14073
72c84f24b420
discovery: drop findoutgoing and simplify findcommonincoming's api
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14064
diff
changeset
|
1037 common = [repo.lookup(rev) for rev in base] |
15837
cd956049fc14
discovery: introduce outgoing object for result of findcommonoutgoing
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15836
diff
changeset
|
1038 heads = revs and map(repo.lookup, revs) or revs |
cd956049fc14
discovery: introduce outgoing object for result of findcommonoutgoing
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15836
diff
changeset
|
1039 cg = repo.getbundle('bundle', heads=heads, common=common) |
15993
0b05e0bfdc1c
scmutil: unify some 'no changes found' messages
Matt Mackall <mpm@selenic.com>
parents:
15991
diff
changeset
|
1040 outgoing = None |
3284
d89e98840b08
add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3278
diff
changeset
|
1041 else: |
10365
d757bc0c7865
interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents:
10364
diff
changeset
|
1042 dest = ui.expandpath(dest or 'default-push', dest or 'default') |
10379
a78bfaf988e1
add -b/--branch option to clone, bundle, incoming, outgoing, pull, push
Sune Foldager <cryo@cyanite.org>
parents:
10376
diff
changeset
|
1043 dest, branches = hg.parseurl(dest, opts.get('branch')) |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
1044 other = hg.peer(repo, opts, dest) |
10365
d757bc0c7865
interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents:
10364
diff
changeset
|
1045 revs, checkout = hg.addbranchrevs(repo, other, branches, revs) |
14213
30273f0c776b
discovery: resurrect findoutgoing as findcommonoutgoing for extension hooks
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14198
diff
changeset
|
1046 heads = revs and map(repo.lookup, revs) or revs |
15837
cd956049fc14
discovery: introduce outgoing object for result of findcommonoutgoing
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15836
diff
changeset
|
1047 outgoing = discovery.findcommonoutgoing(repo, other, |
cd956049fc14
discovery: introduce outgoing object for result of findcommonoutgoing
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15836
diff
changeset
|
1048 onlyheads=heads, |
16736
025b3b763ba9
bundle: make bundles more portable (isue3441)
Sune Foldager <cryo@cyanite.org>
parents:
16637
diff
changeset
|
1049 force=opts.get('force'), |
025b3b763ba9
bundle: make bundles more portable (isue3441)
Sune Foldager <cryo@cyanite.org>
parents:
16637
diff
changeset
|
1050 portable=True) |
15837
cd956049fc14
discovery: introduce outgoing object for result of findcommonoutgoing
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15836
diff
changeset
|
1051 cg = repo.getlocalbundle('bundle', outgoing) |
14073
72c84f24b420
discovery: drop findoutgoing and simplify findcommonincoming's api
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14064
diff
changeset
|
1052 if not cg: |
15993
0b05e0bfdc1c
scmutil: unify some 'no changes found' messages
Matt Mackall <mpm@selenic.com>
parents:
15991
diff
changeset
|
1053 scmutil.nochangesfound(ui, outgoing and outgoing.excluded) |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1054 return 1 |
10616
65b178f30eae
bundle: fix bundle generation for empty changegroup
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10596
diff
changeset
|
1055 |
6570
626cb86a6523
add compression type type parameter to bundle command
Benoit Allard <benoit@aeteurope.nl>
parents:
6518
diff
changeset
|
1056 changegroup.writebundle(cg, fname, bundletype) |
1218
cde6818e082a
Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents:
1215
diff
changeset
|
1057 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1058 @command('cat', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1059 [('o', 'output', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1060 _('print output to file with formatted name'), _('FORMAT')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1061 ('r', 'rev', '', _('print the given revision'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1062 ('', 'decode', None, _('apply any matching decode filter')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1063 ] + walkopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1064 _('[OPTION]... FILE...')) |
1254
e6560042b7b8
Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1253
diff
changeset
|
1065 def cat(ui, repo, file1, *pats, **opts): |
3914
283ee8971570
doc string fix: hg cat and manifest default to current parent revision.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3900
diff
changeset
|
1066 """output the current or given revision of files |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1067 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
1068 Print the specified files as they were at the given revision. If |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
1069 no revision is given, the parent of the working directory is used, |
3915
3c82ab166eea
doc fix: hg tags defaults to current parent revision, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3914
diff
changeset
|
1070 or tip if no revision is checked out. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1071 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1072 Output may be to a file, in which case the name of the file is |
6448
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
1073 given using a format string. The formatting rules are the same as |
9892
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
1074 for the export command, with the following additions: |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
1075 |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
1076 :``%s``: basename of file being printed |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
1077 :``%d``: dirname of file being printed, or '.' if in repository root |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
1078 :``%p``: root-relative path name of file being printed |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1079 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1080 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1081 """ |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
1082 ctx = scmutil.revsingle(repo, opts.get('rev')) |
4697
5b2d986de0f8
cat: return an error on failure
Matt Mackall <mpm@selenic.com>
parents:
4692
diff
changeset
|
1083 err = 1 |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
1084 m = scmutil.match(ctx, (file1,) + pats, opts) |
6764 | 1085 for abs in ctx.walk(m): |
14291
1a791993ce59
cmdutil: make_file to makefileobj
Matt Mackall <mpm@selenic.com>
parents:
14290
diff
changeset
|
1086 fp = cmdutil.makefileobj(repo, opts.get('output'), ctx.node(), |
1a791993ce59
cmdutil: make_file to makefileobj
Matt Mackall <mpm@selenic.com>
parents:
14290
diff
changeset
|
1087 pathname=abs) |
6764 | 1088 data = ctx[abs].data() |
6094
3998c1b0828f
cat --decode: Drop short option, use opts.get() instead of opts[]
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6093
diff
changeset
|
1089 if opts.get('decode'): |
6093
f5b00b6e426a
Option --decode for hg cat to apply decode filters.
Jesse Glick <jesse.glick@sun.com>
parents:
6068
diff
changeset
|
1090 data = repo.wwritedata(abs, data) |
f5b00b6e426a
Option --decode for hg cat to apply decode filters.
Jesse Glick <jesse.glick@sun.com>
parents:
6068
diff
changeset
|
1091 fp.write(data) |
13400
14f3795a5ed7
explicitly close files
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
13396
diff
changeset
|
1092 fp.close() |
4697
5b2d986de0f8
cat: return an error on failure
Matt Mackall <mpm@selenic.com>
parents:
4692
diff
changeset
|
1093 err = 0 |
5b2d986de0f8
cat: return an error on failure
Matt Mackall <mpm@selenic.com>
parents:
4692
diff
changeset
|
1094 return err |
248 | 1095 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1096 @command('^clone', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1097 [('U', 'noupdate', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1098 _('the clone will include an empty working copy (only a repository)')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1099 ('u', 'updaterev', '', _('revision, tag or branch to check out'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1100 ('r', 'rev', [], _('include the specified changeset'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1101 ('b', 'branch', [], _('clone only the specified branch'), _('BRANCH')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1102 ('', 'pull', None, _('use pull protocol to copy metadata')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1103 ('', 'uncompressed', None, _('use uncompressed transfer (fast over LAN)')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1104 ] + remoteopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1105 _('[OPTION]... SOURCE [DEST]')) |
698
df78d8ccac4c
Use python function instead of external 'cp' command when cloning repos.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
697
diff
changeset
|
1106 def clone(ui, source, dest=None, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1107 """make a copy of an existing repository |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1108 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1109 Create a copy of an existing repository in a new directory. |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1110 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1111 If no destination directory name is specified, it defaults to the |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1112 basename of the source. |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1113 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1114 The location of the source is added to the new repository's |
13344
6367459decf7
doc: Add back quotes around filenames
Javi Merino <cibervicho@gmail.com>
parents:
13343
diff
changeset
|
1115 ``.hg/hgrc`` file, as the default to be used for future pulls. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1116 |
15177
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1117 Only local paths and ``ssh://`` URLs are supported as |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1118 destinations. For ``ssh://`` destinations, no working directory or |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1119 ``.hg/hgrc`` will be created on the remote side. |
7942
553cef16031f
mention default branch in branch and clone help
Matt Mackall <mpm@selenic.com>
parents:
7880
diff
changeset
|
1120 |
15174
9f1a08c00931
clone: improve help on -r/-b and tags
Matt Mackall <mpm@selenic.com>
parents:
15147
diff
changeset
|
1121 To pull only a subset of changesets, specify one or more revisions |
9f1a08c00931
clone: improve help on -r/-b and tags
Matt Mackall <mpm@selenic.com>
parents:
15147
diff
changeset
|
1122 identifiers with -r/--rev or branches with -b/--branch. The |
9f1a08c00931
clone: improve help on -r/-b and tags
Matt Mackall <mpm@selenic.com>
parents:
15147
diff
changeset
|
1123 resulting clone will contain only the specified changesets and |
9f1a08c00931
clone: improve help on -r/-b and tags
Matt Mackall <mpm@selenic.com>
parents:
15147
diff
changeset
|
1124 their ancestors. These options (or 'clone src#rev dest') imply |
9f1a08c00931
clone: improve help on -r/-b and tags
Matt Mackall <mpm@selenic.com>
parents:
15147
diff
changeset
|
1125 --pull, even for local source repositories. Note that specifying a |
9f1a08c00931
clone: improve help on -r/-b and tags
Matt Mackall <mpm@selenic.com>
parents:
15147
diff
changeset
|
1126 tag will include the tagged changeset but not the changeset |
9f1a08c00931
clone: improve help on -r/-b and tags
Matt Mackall <mpm@selenic.com>
parents:
15147
diff
changeset
|
1127 containing the tag. |
9714
2f1ab7f77ddc
clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents:
9698
diff
changeset
|
1128 |
15178
04e5449e25dc
clone: add a note about -u/-U
Matt Mackall <mpm@selenic.com>
parents:
15177
diff
changeset
|
1129 To check out a particular version, use -u/--update, or |
04e5449e25dc
clone: add a note about -u/-U
Matt Mackall <mpm@selenic.com>
parents:
15177
diff
changeset
|
1130 -U/--noupdate to create a clone with no working directory. |
04e5449e25dc
clone: add a note about -u/-U
Matt Mackall <mpm@selenic.com>
parents:
15177
diff
changeset
|
1131 |
15177
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1132 .. container:: verbose |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1133 |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1134 For efficiency, hardlinks are used for cloning whenever the |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1135 source and destination are on the same filesystem (note this |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1136 applies only to the repository data, not to the working |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1137 directory). Some filesystems, such as AFS, implement hardlinking |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1138 incorrectly, but do not report errors. In these cases, use the |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1139 --pull option to avoid hardlinking. |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1140 |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1141 In some cases, you can clone repositories and the working |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1142 directory using full hardlinks with :: |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1143 |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1144 $ cp -al REPO REPOCLONE |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1145 |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1146 This is the fastest way to clone, but it is not always safe. The |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1147 operation is not atomic (making sure REPO is not modified during |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1148 the operation is up to you) and you have to make sure your |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1149 editor breaks hardlinks (Emacs and most Linux Kernel tools do |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1150 so). Also, this is not compatible with certain extensions that |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1151 place their metadata under the .hg directory, such as mq. |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1152 |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1153 Mercurial will update the working directory to the first applicable |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1154 revision from this list: |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1155 |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1156 a) null if -U or the source repository has no changesets |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1157 b) if -u . and the source repository is local, the first parent of |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1158 the source repository's working directory |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1159 c) the changeset specified with -u (if a branch name, this means the |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1160 latest head of that branch) |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1161 d) the changeset specified with -r |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1162 e) the tipmost head specified with -b |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1163 f) the tipmost head specified with the url#branch source syntax |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1164 g) the tipmost head of the default branch |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1165 h) tip |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1166 |
15179 | 1167 Examples: |
1168 | |
1169 - clone a remote repository to a new directory named hg/:: | |
1170 | |
1171 hg clone http://selenic.com/hg | |
1172 | |
1173 - create a lightweight local clone:: | |
1174 | |
1175 hg clone project/ project-feature/ | |
1176 | |
1177 - clone from an absolute path on an ssh server (note double-slash):: | |
1178 | |
1179 hg clone ssh://user@server//home/projects/alpha/ | |
1180 | |
1181 - do a high-speed clone over a LAN while checking out a | |
1182 specified version:: | |
1183 | |
1184 hg clone --uncompressed http://server/repo -u 1.5 | |
1185 | |
1186 - create a repository without changesets after a particular revision:: | |
1187 | |
1188 hg clone -r 04e544 experimental/ good/ | |
1189 | |
1190 - clone (and track) a particular named branch:: | |
1191 | |
1192 hg clone http://selenic.com/hg#stable | |
1193 | |
15175
282db9102c43
clone: move url crossref to bottom
Matt Mackall <mpm@selenic.com>
parents:
15174
diff
changeset
|
1194 See :hg:`help urls` for details on specifying URLs. |
282db9102c43
clone: move url crossref to bottom
Matt Mackall <mpm@selenic.com>
parents:
15174
diff
changeset
|
1195 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1196 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1197 """ |
9714
2f1ab7f77ddc
clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents:
9698
diff
changeset
|
1198 if opts.get('noupdate') and opts.get('updaterev'): |
2f1ab7f77ddc
clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents:
9698
diff
changeset
|
1199 raise util.Abort(_("cannot specify both --noupdate and --updaterev")) |
2f1ab7f77ddc
clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents:
9698
diff
changeset
|
1200 |
14553
d976542986d2
hg: add opts argument to clone for internal remoteui
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14551
diff
changeset
|
1201 r = hg.clone(ui, opts, source, dest, |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1202 pull=opts.get('pull'), |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1203 stream=opts.get('uncompressed'), |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1204 rev=opts.get('rev'), |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1205 update=opts.get('updaterev') or not opts.get('noupdate'), |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1206 branch=opts.get('branch')) |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1207 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1208 return r is None |
515 | 1209 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1210 @command('^commit|ci', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1211 [('A', 'addremove', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1212 _('mark new/missing files as added/removed before committing')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1213 ('', 'close-branch', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1214 _('mark a branch as closed, hiding it from the branch list')), |
16458
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1215 ('', 'amend', None, _('amend the parent of the working dir')), |
15321
e174353e8cda
subrepos: abort commit by default if a subrepo is dirty (BC)
Martin Geisler <mg@lazybytes.net>
parents:
15307
diff
changeset
|
1216 ] + walkopts + commitopts + commitopts2 + subrepoopts, |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1217 _('[OPTION]... [FILE]...')) |
813
80fd2958235a
Adapt commit to use file matching code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
812
diff
changeset
|
1218 def commit(ui, repo, *pats, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1219 """commit the specified files or all outstanding changes |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1220 |
7983
7b813bdbd5d0
Change double spaces to single spaces in help texts.
Martin Geisler <mg@daimi.au.dk>
parents:
7982
diff
changeset
|
1221 Commit changes to the given files into the repository. Unlike a |
13303
716ce1ea6fec
commit: use the term SCM instead of RCS
Adrian Buehlmann <adrian@cadifra.com>
parents:
13235
diff
changeset
|
1222 centralized SCM, this operation is a local operation. See |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
1223 :hg:`push` for a way to actively distribute your changes. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1224 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
1225 If a list of files is omitted, all changes reported by :hg:`status` |
1995
2da2d46862fb
Spelling fix: "commited" -> "committed"
mcmillen@cs.cmu.edu
parents:
1994
diff
changeset
|
1226 will be committed. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1227 |
6385
0d4e068e9e52
commit: when committing the results of a merge, it's all or nothing
Bryan O'Sullivan <bos@serpentine.com>
parents:
6375
diff
changeset
|
1228 If you are committing the result of a merge, do not provide any |
8761
0289f384e1e5
Generally replace "file name" with "filename" in help and comments.
timeless <timeless@gmail.com>
parents:
8760
diff
changeset
|
1229 filenames or -I/-X filters. |
6385
0d4e068e9e52
commit: when committing the results of a merge, it's all or nothing
Bryan O'Sullivan <bos@serpentine.com>
parents:
6375
diff
changeset
|
1230 |
11877
8f40125a0ed8
commit: explicitly document the existence of "last-message.txt"
Greg Ward <greg-hg@gerg.ca>
parents:
11836
diff
changeset
|
1231 If no commit message is specified, Mercurial starts your |
8f40125a0ed8
commit: explicitly document the existence of "last-message.txt"
Greg Ward <greg-hg@gerg.ca>
parents:
11836
diff
changeset
|
1232 configured editor where you can enter a message. In case your |
8f40125a0ed8
commit: explicitly document the existence of "last-message.txt"
Greg Ward <greg-hg@gerg.ca>
parents:
11836
diff
changeset
|
1233 commit fails, you will find a backup of your message in |
8f40125a0ed8
commit: explicitly document the existence of "last-message.txt"
Greg Ward <greg-hg@gerg.ca>
parents:
11836
diff
changeset
|
1234 ``.hg/last-message.txt``. |
6163
1f733c2f0165
Document log date ranges and mention 'hg help dates' for all commands (issue998)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6161
diff
changeset
|
1235 |
16458
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1236 The --amend flag can be used to amend the parent of the |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1237 working directory with a new commit that contains the changes |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1238 in the parent in addition to those currently reported by :hg:`status`, |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1239 if there are any. The old commit is stored in a backup bundle in |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1240 ``.hg/strip-backup`` (see :hg:`help bundle` and :hg:`help unbundle` |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1241 on how to restore it). |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1242 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1243 Message, user and date are taken from the amended commit unless |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1244 specified. When a message isn't specified on the command line, |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1245 the editor will open with the message of the amended commit. |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1246 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1247 It is not possible to amend public changesets (see :hg:`help phases`) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1248 or changesets that have children. |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1249 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
1250 See :hg:`help dates` for a list of formats valid for -d/--date. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1251 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1252 Returns 0 on success, 1 if nothing changed. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1253 """ |
15321
e174353e8cda
subrepos: abort commit by default if a subrepo is dirty (BC)
Martin Geisler <mg@lazybytes.net>
parents:
15307
diff
changeset
|
1254 if opts.get('subrepos'): |
e174353e8cda
subrepos: abort commit by default if a subrepo is dirty (BC)
Martin Geisler <mg@lazybytes.net>
parents:
15307
diff
changeset
|
1255 # Let --subrepos on the command line overide config setting. |
e174353e8cda
subrepos: abort commit by default if a subrepo is dirty (BC)
Martin Geisler <mg@lazybytes.net>
parents:
15307
diff
changeset
|
1256 ui.setconfig('ui', 'commitsubrepos', True) |
e174353e8cda
subrepos: abort commit by default if a subrepo is dirty (BC)
Martin Geisler <mg@lazybytes.net>
parents:
15307
diff
changeset
|
1257 |
7655
cce37dab7ad6
branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
7643
diff
changeset
|
1258 extra = {} |
cce37dab7ad6
branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
7643
diff
changeset
|
1259 if opts.get('close_branch'): |
11163
acd61dc44a39
commit: prevent closing non-head changesets
Gilles Moris <gilles.moris@free.fr>
parents:
11104
diff
changeset
|
1260 if repo['.'].node() not in repo.branchheads(): |
acd61dc44a39
commit: prevent closing non-head changesets
Gilles Moris <gilles.moris@free.fr>
parents:
11104
diff
changeset
|
1261 # The topo heads set is included in the branch heads set of the |
acd61dc44a39
commit: prevent closing non-head changesets
Gilles Moris <gilles.moris@free.fr>
parents:
11104
diff
changeset
|
1262 # current branch, so it's sufficient to test branchheads |
acd61dc44a39
commit: prevent closing non-head changesets
Gilles Moris <gilles.moris@free.fr>
parents:
11104
diff
changeset
|
1263 raise util.Abort(_('can only close branch heads')) |
7655
cce37dab7ad6
branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
7643
diff
changeset
|
1264 extra['close'] = 1 |
6336
4b0c9c674707
warn about new heads on commit (issue842)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6321
diff
changeset
|
1265 |
11173
5b48d819d5f9
commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents:
11169
diff
changeset
|
1266 branch = repo[None].branch() |
5b48d819d5f9
commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents:
11169
diff
changeset
|
1267 bheads = repo.branchheads(branch) |
5b48d819d5f9
commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents:
11169
diff
changeset
|
1268 |
16458
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1269 if opts.get('amend'): |
16505
db85c24dcdea
commit: use ui.configbool when checking 'commitsubrepos' setting on --amend
Adrian Buehlmann <adrian@cadifra.com>
parents:
16491
diff
changeset
|
1270 if ui.configbool('ui', 'commitsubrepos'): |
16458
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1271 raise util.Abort(_('cannot amend recursively')) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1272 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1273 old = repo['.'] |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1274 if old.phase() == phases.public: |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1275 raise util.Abort(_('cannot amend public changesets')) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1276 if len(old.parents()) > 1: |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1277 raise util.Abort(_('cannot amend merge changesets')) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1278 if len(repo[None].parents()) > 1: |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1279 raise util.Abort(_('cannot amend while merging')) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1280 if old.children(): |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1281 raise util.Abort(_('cannot amend changeset with children')) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1282 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1283 e = cmdutil.commiteditor |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1284 if opts.get('force_editor'): |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1285 e = cmdutil.commitforceeditor |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1286 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1287 def commitfunc(ui, repo, message, match, opts): |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1288 editor = e |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1289 # message contains text from -m or -l, if it's empty, |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1290 # open the editor with the old message |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1291 if not message: |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1292 message = old.description() |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1293 editor = cmdutil.commitforceeditor |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1294 return repo.commit(message, |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1295 opts.get('user') or old.user(), |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1296 opts.get('date') or old.date(), |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1297 match, |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1298 editor=editor, |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1299 extra=extra) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1300 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1301 node = cmdutil.amend(ui, repo, commitfunc, old, extra, pats, opts) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1302 if node == old.node(): |
13899
a7cd0eee396b
commit: note when files are missing
Martin Geisler <mg@aragost.com>
parents:
13893
diff
changeset
|
1303 ui.status(_("nothing changed\n")) |
16458
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1304 return 1 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1305 else: |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1306 e = cmdutil.commiteditor |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1307 if opts.get('force_editor'): |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1308 e = cmdutil.commitforceeditor |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1309 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1310 def commitfunc(ui, repo, message, match, opts): |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1311 return repo.commit(message, opts.get('user'), opts.get('date'), |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1312 match, editor=e, extra=extra) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1313 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1314 node = cmdutil.commit(ui, repo, commitfunc, pats, opts) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1315 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1316 if not node: |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1317 stat = repo.status(match=scmutil.match(repo[None], pats, opts)) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1318 if stat[3]: |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1319 ui.status(_("nothing changed (%d missing files, see " |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1320 "'hg status')\n") % len(stat[3])) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1321 else: |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1322 ui.status(_("nothing changed\n")) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1323 return 1 |
11173
5b48d819d5f9
commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents:
11169
diff
changeset
|
1324 |
5b48d819d5f9
commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents:
11169
diff
changeset
|
1325 ctx = repo[node] |
5b48d819d5f9
commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents:
11169
diff
changeset
|
1326 parents = ctx.parents() |
5b48d819d5f9
commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents:
11169
diff
changeset
|
1327 |
16458
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1328 if (not opts.get('amend') and bheads and node not in bheads and not |
14874
d7b424a03627
commit: suppress spurious new head message for duplicate commit (issue2893)
Matt Mackall <mpm@selenic.com>
parents:
14853
diff
changeset
|
1329 [x for x in parents if x.node() in bheads and x.branch() == branch]): |
6336
4b0c9c674707
warn about new heads on commit (issue842)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6321
diff
changeset
|
1330 ui.status(_('created new head\n')) |
11317
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1331 # The message is not printed for initial roots. For the other |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1332 # changesets, it is printed in the following situations: |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1333 # |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1334 # Par column: for the 2 parents with ... |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1335 # N: null or no parent |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1336 # B: parent is on another named branch |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1337 # C: parent is a regular non head changeset |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1338 # H: parent was a branch head of the current branch |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1339 # Msg column: whether we print "created new head" message |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1340 # In the following, it is assumed that there already exists some |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1341 # initial branch heads of the current branch, otherwise nothing is |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1342 # printed anyway. |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1343 # |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1344 # Par Msg Comment |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1345 # NN y additional topo root |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1346 # |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1347 # BN y additional branch root |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1348 # CN y additional topo head |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1349 # HN n usual case |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1350 # |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1351 # BB y weird additional branch root |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1352 # CB y branch merge |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1353 # HB n merge with named branch |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1354 # |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1355 # CC y additional head from merge |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1356 # CH n merge with a head |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1357 # |
b66e414d38b0
commit: fix display of 'created new head' message (issue2186)
Gilles Moris <gilles.moris@free.fr>
parents:
11311
diff
changeset
|
1358 # HH n head merge: head count decreases |
245 | 1359 |
11164
e84600b0d81b
commit: inform the commiter when resurrecting a closed changeset
Gilles Moris <gilles.moris@free.fr>
parents:
11163
diff
changeset
|
1360 if not opts.get('close_branch'): |
e84600b0d81b
commit: inform the commiter when resurrecting a closed changeset
Gilles Moris <gilles.moris@free.fr>
parents:
11163
diff
changeset
|
1361 for r in parents: |
16720
e825a89de5d7
context: add changectx.closesbranch() method
Brodie Rao <brodie@sf.io>
parents:
16719
diff
changeset
|
1362 if r.closesbranch() and r.branch() == branch: |
11164
e84600b0d81b
commit: inform the commiter when resurrecting a closed changeset
Gilles Moris <gilles.moris@free.fr>
parents:
11163
diff
changeset
|
1363 ui.status(_('reopening closed branch head %d\n') % r) |
e84600b0d81b
commit: inform the commiter when resurrecting a closed changeset
Gilles Moris <gilles.moris@free.fr>
parents:
11163
diff
changeset
|
1364 |
6935
03916abdfb64
Have verbose and debug flag print the changeset rev and hash when committing.
Gilles Moris <gilles.moris@free.fr>
parents:
6934
diff
changeset
|
1365 if ui.debugflag: |
11173
5b48d819d5f9
commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents:
11169
diff
changeset
|
1366 ui.write(_('committed changeset %d:%s\n') % (int(ctx), ctx.hex())) |
6935
03916abdfb64
Have verbose and debug flag print the changeset rev and hash when committing.
Gilles Moris <gilles.moris@free.fr>
parents:
6934
diff
changeset
|
1367 elif ui.verbose: |
11173
5b48d819d5f9
commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents:
11169
diff
changeset
|
1368 ui.write(_('committed changeset %d:%s\n') % (int(ctx), ctx)) |
6935
03916abdfb64
Have verbose and debug flag print the changeset rev and hash when committing.
Gilles Moris <gilles.moris@free.fr>
parents:
6934
diff
changeset
|
1369 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1370 @command('copy|cp', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1371 [('A', 'after', None, _('record a copy that has already occurred')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1372 ('f', 'force', None, _('forcibly copy over an existing managed file')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1373 ] + walkopts + dryrunopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1374 _('[OPTION]... [SOURCE]... DEST')) |
1253
a45e717c61a8
Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1250
diff
changeset
|
1375 def copy(ui, repo, *pats, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1376 """mark files as copied for the next commit |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1377 |
6448
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
1378 Mark dest as having copies of source files. If dest is a |
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
1379 directory, copies are put in that directory. If dest is a file, |
7807
bd8f44638847
help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents:
7765
diff
changeset
|
1380 the source must be a single file. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1381 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1382 By default, this command copies the contents of files as they |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
1383 exist in the working directory. If invoked with -A/--after, the |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1384 operation is recorded, but no copying is performed. |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1385 |
7807
bd8f44638847
help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents:
7765
diff
changeset
|
1386 This command takes effect with the next commit. To undo a copy |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
1387 before that, see :hg:`revert`. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1388 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1389 Returns 0 on success, 1 if errors are encountered. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1390 """ |
4914 | 1391 wlock = repo.wlock(False) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4914
diff
changeset
|
1392 try: |
5610
2493a478f395
copy: handle rename internally
Matt Mackall <mpm@selenic.com>
parents:
5589
diff
changeset
|
1393 return cmdutil.copy(ui, repo, pats, opts) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4914
diff
changeset
|
1394 finally: |
8109
496ae1ea4698
switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents:
8088
diff
changeset
|
1395 wlock.release() |
363 | 1396 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1397 @command('debugancestor', [], _('[INDEX] REV1 REV2')) |
6189
81cbb5dfdec0
Make hg debugancestor accept -R by making it an optionalrepo command.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6188
diff
changeset
|
1398 def debugancestor(ui, repo, *args): |
1262 | 1399 """find the ancestor revision of two revisions in a given index""" |
6188
3b0c2b71e0d7
debugancestor: use *args instead of *opts, to not confuse with option dicts.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6182
diff
changeset
|
1400 if len(args) == 3: |
3b0c2b71e0d7
debugancestor: use *args instead of *opts, to not confuse with option dicts.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6182
diff
changeset
|
1401 index, rev1, rev2 = args |
13970
d13913355390
move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents:
13965
diff
changeset
|
1402 r = revlog.revlog(scmutil.opener(os.getcwd(), audit=False), index) |
6253
a7e3d0456d92
debugancestor: use repo.lookup when no revlog was specified
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6243
diff
changeset
|
1403 lookup = r.lookup |
6188
3b0c2b71e0d7
debugancestor: use *args instead of *opts, to not confuse with option dicts.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6182
diff
changeset
|
1404 elif len(args) == 2: |
6189
81cbb5dfdec0
Make hg debugancestor accept -R by making it an optionalrepo command.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6188
diff
changeset
|
1405 if not repo: |
12067
a4fbbe0fbc38
Lowercase error messages
Martin Geisler <mg@lazybytes.net>
parents:
11881
diff
changeset
|
1406 raise util.Abort(_("there is no Mercurial repository here " |
6189
81cbb5dfdec0
Make hg debugancestor accept -R by making it an optionalrepo command.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6188
diff
changeset
|
1407 "(.hg not found)")) |
6188
3b0c2b71e0d7
debugancestor: use *args instead of *opts, to not confuse with option dicts.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6182
diff
changeset
|
1408 rev1, rev2 = args |
6178
81afdd016867
debugancestor: make the index argument optional, defaulting to 00changelog.i
Bryan O'Sullivan <bos@serpentine.com>
parents:
6171
diff
changeset
|
1409 r = repo.changelog |
6253
a7e3d0456d92
debugancestor: use repo.lookup when no revlog was specified
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6243
diff
changeset
|
1410 lookup = repo.lookup |
6178
81afdd016867
debugancestor: make the index argument optional, defaulting to 00changelog.i
Bryan O'Sullivan <bos@serpentine.com>
parents:
6171
diff
changeset
|
1411 else: |
81afdd016867
debugancestor: make the index argument optional, defaulting to 00changelog.i
Bryan O'Sullivan <bos@serpentine.com>
parents:
6171
diff
changeset
|
1412 raise util.Abort(_('either two or three arguments required')) |
6253
a7e3d0456d92
debugancestor: use repo.lookup when no revlog was specified
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6243
diff
changeset
|
1413 a = r.ancestor(lookup(rev1), lookup(rev2)) |
1262 | 1414 ui.write("%d:%s\n" % (r.rev(a), hex(a))) |
1415 | |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1416 @command('debugbuilddag', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1417 [('m', 'mergeable-file', None, _('add single file mergeable changes')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1418 ('o', 'overwritten-file', None, _('add single file all revs overwrite')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1419 ('n', 'new-file', None, _('add new file at each rev'))], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1420 _('[OPTION]... [TEXT]')) |
14283
035489c9ea53
debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents:
14279
diff
changeset
|
1421 def debugbuilddag(ui, repo, text=None, |
11337
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1422 mergeable_file=False, |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1423 overwritten_file=False, |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1424 new_file=False): |
14283
035489c9ea53
debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents:
14279
diff
changeset
|
1425 """builds a repo with a given DAG from scratch in the current empty repo |
035489c9ea53
debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents:
14279
diff
changeset
|
1426 |
035489c9ea53
debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents:
14279
diff
changeset
|
1427 The description of the DAG is read from stdin if not given on the |
035489c9ea53
debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents:
14279
diff
changeset
|
1428 command line. |
11337
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1429 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1430 Elements: |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1431 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1432 - "+n" is a linear run of n nodes based on the current default parent |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1433 - "." is a single node based on the current default parent |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1434 - "$" resets the default parent to null (implied at the start); |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1435 otherwise the default parent is always the last node created |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1436 - "<p" sets the default parent to the backref p |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1437 - "*p" is a fork at parent p, which is a backref |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1438 - "*p1/p2" is a merge of parents p1 and p2, which are backrefs |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1439 - "/p2" is a merge of the preceding node and p2 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1440 - ":tag" defines a local tag for the preceding node |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1441 - "@branch" sets the named branch for subsequent nodes |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1442 - "#...\\n" is a comment up to the end of the line |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1443 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1444 Whitespace between the above elements is ignored. |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1445 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1446 A backref is either |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1447 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1448 - a number n, which references the node curr-n, where curr is the current |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1449 node, or |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1450 - the name of a local tag you placed earlier using ":tag", or |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1451 - empty to denote the default parent. |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1452 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1453 All string valued-elements are either strictly alphanumeric, or must |
11881
2da0cf99b642
debugbuilddag: escape backslash properly in help string
Martin Geisler <mg@lazybytes.net>
parents:
11877
diff
changeset
|
1454 be enclosed in double quotes ("..."), with "\\" as escape character. |
11337
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1455 """ |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1456 |
14283
035489c9ea53
debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents:
14279
diff
changeset
|
1457 if text is None: |
035489c9ea53
debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents:
14279
diff
changeset
|
1458 ui.status(_("reading DAG from stdin\n")) |
14639
e59a7b8f521a
commands: use ui descriptors when reading/writing from stdin/out
Idan Kamara <idankk86@gmail.com>
parents:
14635
diff
changeset
|
1459 text = ui.fin.read() |
14283
035489c9ea53
debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents:
14279
diff
changeset
|
1460 |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1461 cl = repo.changelog |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1462 if len(cl) > 0: |
11342
aecabad8dd7a
commands: get rid of generic exception in debugbuilddag
Martin Geisler <mg@aragost.com>
parents:
11338
diff
changeset
|
1463 raise util.Abort(_('repository is not empty')) |
11337
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1464 |
14279
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1465 # determine number of revs in DAG |
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1466 total = 0 |
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1467 for type, data in dagparser.parsedag(text): |
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1468 if type == 'n': |
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1469 total += 1 |
11337
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1470 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1471 if mergeable_file: |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1472 linesperrev = 2 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1473 # make a file with k lines per rev |
14279
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1474 initialmergedlines = [str(i) for i in xrange(0, total * linesperrev)] |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1475 initialmergedlines.append("") |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1476 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1477 tags = [] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1478 |
15875
7eca9db689d6
debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15862
diff
changeset
|
1479 lock = tr = None |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1480 try: |
15875
7eca9db689d6
debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15862
diff
changeset
|
1481 lock = repo.lock() |
7eca9db689d6
debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15862
diff
changeset
|
1482 tr = repo.transaction("builddag") |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1483 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1484 at = -1 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1485 atbranch = 'default' |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1486 nodeids = [] |
16219
28c5648771d1
debugbuilddag: fix starting a dag on a non-default branch
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
16191
diff
changeset
|
1487 id = 0 |
28c5648771d1
debugbuilddag: fix starting a dag on a non-default branch
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
16191
diff
changeset
|
1488 ui.progress(_('building'), id, unit=_('revisions'), total=total) |
11337
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1489 for type, data in dagparser.parsedag(text): |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1490 if type == 'n': |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1491 ui.note('node %s\n' % str(data)) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1492 id, ps = data |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1493 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1494 files = [] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1495 fctxs = {} |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1496 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1497 p2 = None |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1498 if mergeable_file: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1499 fn = "mf" |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1500 p1 = repo[ps[0]] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1501 if len(ps) > 1: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1502 p2 = repo[ps[1]] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1503 pa = p1.ancestor(p2) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1504 base, local, other = [x[fn].data() for x in pa, p1, p2] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1505 m3 = simplemerge.Merge3Text(base, local, other) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1506 ml = [l.strip() for l in m3.merge_lines()] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1507 ml.append("") |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1508 elif at > 0: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1509 ml = p1[fn].data().split("\n") |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1510 else: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1511 ml = initialmergedlines |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1512 ml[id * linesperrev] += " r%i" % id |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1513 mergedtext = "\n".join(ml) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1514 files.append(fn) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1515 fctxs[fn] = context.memfilectx(fn, mergedtext) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1516 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1517 if overwritten_file: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1518 fn = "of" |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1519 files.append(fn) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1520 fctxs[fn] = context.memfilectx(fn, "r%i\n" % id) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1521 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1522 if new_file: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1523 fn = "nf%i" % id |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1524 files.append(fn) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1525 fctxs[fn] = context.memfilectx(fn, "r%i\n" % id) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1526 if len(ps) > 1: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1527 if not p2: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1528 p2 = repo[ps[1]] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1529 for fn in p2: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1530 if fn.startswith("nf"): |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1531 files.append(fn) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1532 fctxs[fn] = p2[fn] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1533 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1534 def fctxfn(repo, cx, path): |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1535 return fctxs.get(path) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1536 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1537 if len(ps) == 0 or ps[0] < 0: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1538 pars = [None, None] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1539 elif len(ps) == 1: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1540 pars = [nodeids[ps[0]], None] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1541 else: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1542 pars = [nodeids[p] for p in ps] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1543 cx = context.memctx(repo, pars, "r%i" % id, files, fctxfn, |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1544 date=(id, 0), |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1545 user="debugbuilddag", |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1546 extra={'branch': atbranch}) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1547 nodeid = repo.commitctx(cx) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1548 nodeids.append(nodeid) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1549 at = id |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1550 elif type == 'l': |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1551 id, name = data |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1552 ui.note('tag %s\n' % name) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1553 tags.append("%s %s\n" % (hex(repo.changelog.node(id)), name)) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1554 elif type == 'a': |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1555 ui.note('branch %s\n' % data) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1556 atbranch = data |
14279
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1557 ui.progress(_('building'), id, unit=_('revisions'), total=total) |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1558 tr.close() |
15875
7eca9db689d6
debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15862
diff
changeset
|
1559 |
7eca9db689d6
debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15862
diff
changeset
|
1560 if tags: |
7eca9db689d6
debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15862
diff
changeset
|
1561 repo.opener.write("localtags", "".join(tags)) |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1562 finally: |
14279
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1563 ui.progress(_('building'), None) |
15875
7eca9db689d6
debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15862
diff
changeset
|
1564 release(tr, lock) |
11337
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1565 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1566 @command('debugbundle', [('a', 'all', None, _('show all details'))], _('FILE')) |
13724
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13723
diff
changeset
|
1567 def debugbundle(ui, bundlepath, all=None, **opts): |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13723
diff
changeset
|
1568 """lists the contents of a bundle""" |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13723
diff
changeset
|
1569 f = url.open(ui, bundlepath) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4914
diff
changeset
|
1570 try: |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1571 gen = changegroup.readbundle(f, bundlepath) |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1572 if all: |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14098
diff
changeset
|
1573 ui.write("format: id, p1, p2, cset, delta base, len(delta)\n") |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1574 |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1575 def showchunks(named): |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1576 ui.write("\n%s\n" % named) |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14098
diff
changeset
|
1577 chain = None |
14494
1ffeeb91c55d
check-code: flag 0/1 used as constant Boolean expression
Martin Geisler <mg@lazybytes.net>
parents:
14485
diff
changeset
|
1578 while True: |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1579 chunkdata = gen.deltachunk(chain) |
13724
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13723
diff
changeset
|
1580 if not chunkdata: |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13723
diff
changeset
|
1581 break |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13723
diff
changeset
|
1582 node = chunkdata['node'] |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1583 p1 = chunkdata['p1'] |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1584 p2 = chunkdata['p2'] |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1585 cs = chunkdata['cs'] |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14098
diff
changeset
|
1586 deltabase = chunkdata['deltabase'] |
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14098
diff
changeset
|
1587 delta = chunkdata['delta'] |
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14098
diff
changeset
|
1588 ui.write("%s %s %s %s %s %s\n" % |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1589 (hex(node), hex(p1), hex(p2), |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14098
diff
changeset
|
1590 hex(cs), hex(deltabase), len(delta))) |
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14098
diff
changeset
|
1591 chain = node |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1592 |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1593 chunkdata = gen.changelogheader() |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1594 showchunks("changelog") |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1595 chunkdata = gen.manifestheader() |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1596 showchunks("manifest") |
14494
1ffeeb91c55d
check-code: flag 0/1 used as constant Boolean expression
Martin Geisler <mg@lazybytes.net>
parents:
14485
diff
changeset
|
1597 while True: |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1598 chunkdata = gen.filelogheader() |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1599 if not chunkdata: |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1600 break |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1601 fname = chunkdata['filename'] |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1602 showchunks(fname) |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1603 else: |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1604 chunkdata = gen.changelogheader() |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14098
diff
changeset
|
1605 chain = None |
14494
1ffeeb91c55d
check-code: flag 0/1 used as constant Boolean expression
Martin Geisler <mg@lazybytes.net>
parents:
14485
diff
changeset
|
1606 while True: |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1607 chunkdata = gen.deltachunk(chain) |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1608 if not chunkdata: |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1609 break |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1610 node = chunkdata['node'] |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1611 ui.write("%s\n" % hex(node)) |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14098
diff
changeset
|
1612 chain = node |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4914
diff
changeset
|
1613 finally: |
13724
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13723
diff
changeset
|
1614 f.close() |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13723
diff
changeset
|
1615 |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1616 @command('debugcheckstate', [], '') |
596 | 1617 def debugcheckstate(ui, repo): |
1618 """validate the correctness of the current dirstate""" | |
460 | 1619 parent1, parent2 = repo.dirstate.parents() |
6747
f6c00b17387c
use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents:
6746
diff
changeset
|
1620 m1 = repo[parent1].manifest() |
f6c00b17387c
use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents:
6746
diff
changeset
|
1621 m2 = repo[parent2].manifest() |
460 | 1622 errors = 0 |
4906
30847b8af7ca
dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents:
4904
diff
changeset
|
1623 for f in repo.dirstate: |
30847b8af7ca
dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents:
4904
diff
changeset
|
1624 state = repo.dirstate[f] |
460 | 1625 if state in "nr" and f not in m1: |
1402
9d2c2e6b32b5
i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1400
diff
changeset
|
1626 ui.warn(_("%s in state %s, but not in manifest1\n") % (f, state)) |
460 | 1627 errors += 1 |
1628 if state in "a" and f in m1: | |
1402
9d2c2e6b32b5
i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1400
diff
changeset
|
1629 ui.warn(_("%s in state %s, but also in manifest1\n") % (f, state)) |
460 | 1630 errors += 1 |
1631 if state in "m" and f not in m1 and f not in m2: | |
1402
9d2c2e6b32b5
i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1400
diff
changeset
|
1632 ui.warn(_("%s in state %s, but not in either manifest\n") % |
582 | 1633 (f, state)) |
460 | 1634 errors += 1 |
1635 for f in m1: | |
4906
30847b8af7ca
dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents:
4904
diff
changeset
|
1636 state = repo.dirstate[f] |
460 | 1637 if state not in "nrm": |
1402
9d2c2e6b32b5
i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1400
diff
changeset
|
1638 ui.warn(_("%s in manifest1, but listed as state %s") % (f, state)) |
460 | 1639 errors += 1 |
1640 if errors: | |
1602
fb4149eebdd4
strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents:
1601
diff
changeset
|
1641 error = _(".hg/dirstate inconsistent with current parent's manifest") |
fb4149eebdd4
strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents:
1601
diff
changeset
|
1642 raise util.Abort(error) |
460 | 1643 |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1644 @command('debugcommands', [], _('[COMMAND]')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1645 def debugcommands(ui, cmd='', *args): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1646 """list all available commands and options""" |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1647 for cmd, vals in sorted(table.iteritems()): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1648 cmd = cmd.split('|')[0].strip('^') |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1649 opts = ', '.join([i[1] for i in vals[1]]) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1650 ui.write('%s: %s\n' % (cmd, opts)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1651 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1652 @command('debugcomplete', |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1653 [('o', 'options', None, _('show the command options'))], |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1654 _('[-o] CMD')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1655 def debugcomplete(ui, cmd='', **opts): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1656 """returns the completion list associated with the given command""" |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1657 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1658 if opts.get('options'): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1659 options = [] |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1660 otables = [globalopts] |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1661 if cmd: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1662 aliases, entry = cmdutil.findcmd(cmd, table, False) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1663 otables.append(entry[1]) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1664 for t in otables: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1665 for o in t: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1666 if "(DEPRECATED)" in o[3]: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1667 continue |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1668 if o[0]: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1669 options.append('-%s' % o[0]) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1670 options.append('--%s' % o[1]) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1671 ui.write("%s\n" % "\n".join(options)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1672 return |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1673 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1674 cmdlist = cmdutil.findpossible(cmd, table) |
11276
f28b58e35768
revset: add a debugrevspec command
Matt Mackall <mpm@selenic.com>
parents:
11273
diff
changeset
|
1675 if ui.verbose: |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1676 cmdlist = [' '.join(c[0]) for c in cmdlist.values()] |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1677 ui.write("%s\n" % "\n".join(sorted(cmdlist))) |
8812
859f841937d0
subrepo: introduce basic state parsing
Matt Mackall <mpm@selenic.com>
parents:
8810
diff
changeset
|
1678 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1679 @command('debugdag', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1680 [('t', 'tags', None, _('use tags as labels')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1681 ('b', 'branches', None, _('annotate with branch names')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1682 ('', 'dots', None, _('use dots for runs')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1683 ('s', 'spaces', None, _('separate elements by spaces'))], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1684 _('[OPTION]... [FILE [REV]...]')) |
11336
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1685 def debugdag(ui, repo, file_=None, *revs, **opts): |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1686 """format the changelog or an index DAG as a concise textual description |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1687 |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1688 If you pass a revlog index, the revlog's DAG is emitted. If you list |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1689 revision numbers, they get labelled in the output as rN. |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1690 |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1691 Otherwise, the changelog DAG of the current repo is emitted. |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1692 """ |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1693 spaces = opts.get('spaces') |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1694 dots = opts.get('dots') |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1695 if file_: |
13970
d13913355390
move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents:
13965
diff
changeset
|
1696 rlog = revlog.revlog(scmutil.opener(os.getcwd(), audit=False), file_) |
11336
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1697 revs = set((int(r) for r in revs)) |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1698 def events(): |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1699 for r in rlog: |
16683 | 1700 yield 'n', (r, list(set(p for p in rlog.parentrevs(r) |
1701 if p != -1))) | |
11336
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1702 if r in revs: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1703 yield 'l', (r, "r%i" % r) |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1704 elif repo: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1705 cl = repo.changelog |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1706 tags = opts.get('tags') |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1707 branches = opts.get('branches') |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1708 if tags: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1709 labels = {} |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1710 for l, n in repo.tags().items(): |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1711 labels.setdefault(cl.rev(n), []).append(l) |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1712 def events(): |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1713 b = "default" |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1714 for r in cl: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1715 if branches: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1716 newb = cl.read(cl.node(r))[5]['branch'] |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1717 if newb != b: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1718 yield 'a', newb |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1719 b = newb |
16683 | 1720 yield 'n', (r, list(set(p for p in cl.parentrevs(r) |
1721 if p != -1))) | |
11336
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1722 if tags: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1723 ls = labels.get(r) |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1724 if ls: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1725 for l in ls: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1726 yield 'l', (r, l) |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1727 else: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1728 raise util.Abort(_('need repo for changelog dag')) |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1729 |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1730 for line in dagparser.dagtextlines(events(), |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1731 addspaces=spaces, |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1732 wraplabels=True, |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1733 wrapannotations=True, |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1734 wrapnonlinear=dots, |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1735 usedots=dots, |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1736 maxlinewidth=70): |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1737 ui.write(line) |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1738 ui.write("\n") |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1739 |
14323
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1740 @command('debugdata', |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1741 [('c', 'changelog', False, _('open changelog')), |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1742 ('m', 'manifest', False, _('open manifest'))], |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1743 _('-c|-m|FILE REV')) |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1744 def debugdata(ui, repo, file_, rev = None, **opts): |
4258
b11a2fb59cf5
revlog: simplify revlog version handling
Matt Mackall <mpm@selenic.com>
parents:
4257
diff
changeset
|
1745 """dump the contents of a data file revision""" |
14323
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1746 if opts.get('changelog') or opts.get('manifest'): |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1747 file_, rev = None, file_ |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1748 elif rev is None: |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1749 raise error.CommandError('debugdata', _('invalid arguments')) |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1750 r = cmdutil.openrevlog(repo, 'debugdata', file_, opts) |
1313
1cc7c0cbc30b
Fix traceback during invalid rev identifier for debugdata
Anupam Kapoor<anupam.kapoor@gmail.com>
parents:
1312
diff
changeset
|
1751 try: |
1cc7c0cbc30b
Fix traceback during invalid rev identifier for debugdata
Anupam Kapoor<anupam.kapoor@gmail.com>
parents:
1312
diff
changeset
|
1752 ui.write(r.revision(r.lookup(rev))) |
1cc7c0cbc30b
Fix traceback during invalid rev identifier for debugdata
Anupam Kapoor<anupam.kapoor@gmail.com>
parents:
1312
diff
changeset
|
1753 except KeyError: |
3072
bc3fe3b5b785
Never apply string formatting to generated errors with util.Abort.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3071
diff
changeset
|
1754 raise util.Abort(_('invalid revision identifier %s') % rev) |
1039
4296754ba7b4
Add debugdata for dumping revlog revision data
mpm@selenic.com
parents:
1037
diff
changeset
|
1755 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1756 @command('debugdate', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1757 [('e', 'extended', None, _('try extended date formats'))], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1758 _('[-e] DATE [RANGE]')) |
3812 | 1759 def debugdate(ui, date, range=None, **opts): |
3805 | 1760 """parse and display a date""" |
3812 | 1761 if opts["extended"]: |
1762 d = util.parsedate(date, util.extendeddateformats) | |
1763 else: | |
1764 d = util.parsedate(date) | |
3805 | 1765 ui.write("internal: %s %s\n" % d) |
1766 ui.write("standard: %s\n" % util.datestr(d)) | |
3812 | 1767 if range: |
1768 m = util.matchdate(range) | |
1769 ui.write("match: %s\n" % m(d[0])) | |
3805 | 1770 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1771 @command('debugdiscovery', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1772 [('', 'old', None, _('use old-style discovery')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1773 ('', 'nonheads', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1774 _('use old-style discovery with non-heads included')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1775 ] + remoteopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1776 _('[-l REV] [-r REV] [-b BRANCH]... [OTHER]')) |
14164
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1777 def debugdiscovery(ui, repo, remoteurl="default", **opts): |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1778 """runs the changeset discovery protocol in isolation""" |
16683 | 1779 remoteurl, branches = hg.parseurl(ui.expandpath(remoteurl), |
1780 opts.get('branch')) | |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
1781 remote = hg.peer(repo, opts, remoteurl) |
14164
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1782 ui.status(_('comparing with %s\n') % util.hidepassword(remoteurl)) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1783 |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1784 # make sure tests are repeatable |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1785 random.seed(12323) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1786 |
17191
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
1787 def doit(localheads, remoteheads, remote=remote): |
14164
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1788 if opts.get('old'): |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1789 if localheads: |
16683 | 1790 raise util.Abort('cannot use localheads with old style ' |
1791 'discovery') | |
17192
1ac628cd7113
peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
17191
diff
changeset
|
1792 if not util.safehasattr(remote, 'branches'): |
1ac628cd7113
peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
17191
diff
changeset
|
1793 # enable in-client legacy support |
1ac628cd7113
peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
17191
diff
changeset
|
1794 remote = localrepo.locallegacypeer(remote.local()) |
14164
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1795 common, _in, hds = treediscovery.findcommonincoming(repo, remote, |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1796 force=True) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1797 common = set(common) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1798 if not opts.get('nonheads'): |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1799 ui.write("unpruned common: %s\n" % " ".join([short(n) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1800 for n in common])) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1801 dag = dagutil.revlogdag(repo.changelog) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1802 all = dag.ancestorset(dag.internalizeall(common)) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1803 common = dag.externalizeall(dag.headsetofconnecteds(all)) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1804 else: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1805 common, any, hds = setdiscovery.findcommonheads(ui, repo, remote) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1806 common = set(common) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1807 rheads = set(hds) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1808 lheads = set(repo.heads()) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1809 ui.write("common heads: %s\n" % " ".join([short(n) for n in common])) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1810 if lheads <= common: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1811 ui.write("local is subset\n") |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1812 elif rheads <= common: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1813 ui.write("remote is subset\n") |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1814 |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1815 serverlogs = opts.get('serverlog') |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1816 if serverlogs: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1817 for filename in serverlogs: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1818 logfile = open(filename, 'r') |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1819 try: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1820 line = logfile.readline() |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1821 while line: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1822 parts = line.strip().split(';') |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1823 op = parts[1] |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1824 if op == 'cg': |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1825 pass |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1826 elif op == 'cgss': |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1827 doit(parts[2].split(' '), parts[3].split(' ')) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1828 elif op == 'unb': |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1829 doit(parts[3].split(' '), parts[2].split(' ')) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1830 line = logfile.readline() |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1831 finally: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1832 logfile.close() |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1833 |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1834 else: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1835 remoterevs, _checkout = hg.addbranchrevs(repo, remote, branches, |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1836 opts.get('remote_head')) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1837 localrevs = opts.get('local_head') |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1838 doit(localrevs, remoterevs) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1839 |
14511
30506b894359
filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents:
14509
diff
changeset
|
1840 @command('debugfileset', [], ('REVSPEC')) |
30506b894359
filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents:
14509
diff
changeset
|
1841 def debugfileset(ui, repo, expr): |
30506b894359
filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents:
14509
diff
changeset
|
1842 '''parse and apply a fileset specification''' |
30506b894359
filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents:
14509
diff
changeset
|
1843 if ui.verbose: |
30506b894359
filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents:
14509
diff
changeset
|
1844 tree = fileset.parse(expr)[0] |
30506b894359
filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents:
14509
diff
changeset
|
1845 ui.note(tree, "\n") |
14673 | 1846 |
1847 for f in fileset.getfileset(repo[None], expr): | |
14551
68d814a3cefd
fileset: basic pattern and boolean support
Matt Mackall <mpm@selenic.com>
parents:
14548
diff
changeset
|
1848 ui.write("%s\n" % f) |
14511
30506b894359
filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents:
14509
diff
changeset
|
1849 |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1850 @command('debugfsinfo', [], _('[PATH]')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1851 def debugfsinfo(ui, path = "."): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1852 """show information detected about current filesystem""" |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1853 util.writefile('.debugfsinfo', '') |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1854 ui.write('exec: %s\n' % (util.checkexec(path) and 'yes' or 'no')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1855 ui.write('symlink: %s\n' % (util.checklink(path) and 'yes' or 'no')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1856 ui.write('case-sensitive: %s\n' % (util.checkcase('.debugfsinfo') |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1857 and 'yes' or 'no')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1858 os.unlink('.debugfsinfo') |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1859 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1860 @command('debuggetbundle', |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1861 [('H', 'head', [], _('id of head node'), _('ID')), |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1862 ('C', 'common', [], _('id of common node'), _('ID')), |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1863 ('t', 'type', 'bzip2', _('bundle compression type to use'), _('TYPE'))], |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1864 _('REPO FILE [-H|-C ID]...')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1865 def debuggetbundle(ui, repopath, bundlepath, head=None, common=None, **opts): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1866 """retrieves a bundle from a repo |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1867 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1868 Every ID must be a full-length hex node id string. Saves the bundle to the |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1869 given file. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1870 """ |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
1871 repo = hg.peer(ui, opts, repopath) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1872 if not repo.capable('getbundle'): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1873 raise util.Abort("getbundle() not supported by target repository") |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1874 args = {} |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1875 if common: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1876 args['common'] = [bin(s) for s in common] |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1877 if head: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1878 args['heads'] = [bin(s) for s in head] |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1879 bundle = repo.getbundle('debug', **args) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1880 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1881 bundletype = opts.get('type', 'bzip2').lower() |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1882 btypes = {'none': 'HG10UN', 'bzip2': 'HG10BZ', 'gzip': 'HG10GZ'} |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1883 bundletype = btypes.get(bundletype) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1884 if bundletype not in changegroup.bundletypes: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1885 raise util.Abort(_('unknown bundle type specified with --type')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1886 changegroup.writebundle(bundle, bundlepath, bundletype) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1887 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1888 @command('debugignore', [], '') |
13396
3e66eec9a814
add debugignore which yields the combined ignore patten of the .hgignore files
jfh <jason@jasonfharris.com>
parents:
13388
diff
changeset
|
1889 def debugignore(ui, repo, *values, **opts): |
3e66eec9a814
add debugignore which yields the combined ignore patten of the .hgignore files
jfh <jason@jasonfharris.com>
parents:
13388
diff
changeset
|
1890 """display the combined ignore pattern""" |
3e66eec9a814
add debugignore which yields the combined ignore patten of the .hgignore files
jfh <jason@jasonfharris.com>
parents:
13388
diff
changeset
|
1891 ignore = repo.dirstate._ignore |
14949
a4435770cf57
debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents:
14943
diff
changeset
|
1892 includepat = getattr(ignore, 'includepat', None) |
a4435770cf57
debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents:
14943
diff
changeset
|
1893 if includepat is not None: |
a4435770cf57
debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents:
14943
diff
changeset
|
1894 ui.write("%s\n" % includepat) |
13406
5e57c199848d
debugignore: catch the case when ignore.includepat doesn't exist
jfh <jason@jasonfharris.com>
parents:
13400
diff
changeset
|
1895 else: |
5e57c199848d
debugignore: catch the case when ignore.includepat doesn't exist
jfh <jason@jasonfharris.com>
parents:
13400
diff
changeset
|
1896 raise util.Abort(_("no ignore patterns found")) |
13396
3e66eec9a814
add debugignore which yields the combined ignore patten of the .hgignore files
jfh <jason@jasonfharris.com>
parents:
13388
diff
changeset
|
1897 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1898 @command('debugindex', |
14323
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1899 [('c', 'changelog', False, _('open changelog')), |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1900 ('m', 'manifest', False, _('open manifest')), |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1901 ('f', 'format', 0, _('revlog format'), _('FORMAT'))], |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1902 _('[-f FORMAT] -c|-m|FILE')) |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1903 def debugindex(ui, repo, file_ = None, **opts): |
596 | 1904 """dump the contents of an index file""" |
14323
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1905 r = cmdutil.openrevlog(repo, 'debugindex', file_, opts) |
12893
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1906 format = opts.get('format', 0) |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1907 if format not in (0, 1): |
13470
64ce09e93aff
commands: mark strings for translation
Martin Geisler <mg@aragost.com>
parents:
13454
diff
changeset
|
1908 raise util.Abort(_("unknown format %d") % format) |
12893
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1909 |
14254
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1910 generaldelta = r.version & revlog.REVLOGGENERALDELTA |
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1911 if generaldelta: |
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1912 basehdr = ' delta' |
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1913 else: |
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1914 basehdr = ' base' |
12893
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1915 |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1916 if format == 0: |
14254
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1917 ui.write(" rev offset length " + basehdr + " linkrev" |
12893
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1918 " nodeid p1 p2\n") |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1919 elif format == 1: |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1920 ui.write(" rev flag offset length" |
16683 | 1921 " size " + basehdr + " link p1 p2" |
1922 " nodeid\n") | |
12893
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1923 |
6750
fb42030d79d6
add __len__ and __iter__ methods to repo and revlog
Matt Mackall <mpm@selenic.com>
parents:
6749
diff
changeset
|
1924 for i in r: |
2072 | 1925 node = r.node(i) |
14254
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1926 if generaldelta: |
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1927 base = r.deltaparent(i) |
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1928 else: |
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1929 base = r.chainbase(i) |
12893
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1930 if format == 0: |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1931 try: |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1932 pp = r.parents(node) |
16689
f366d4c2ff34
cleanup: replace naked excepts with except Exception: ...
Brodie Rao <brodie@sf.io>
parents:
16683
diff
changeset
|
1933 except Exception: |
12893
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1934 pp = [nullid, nullid] |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1935 ui.write("% 6d % 9d % 7d % 6d % 7d %s %s %s\n" % ( |
14254
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1936 i, r.start(i), r.length(i), base, r.linkrev(i), |
12893
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1937 short(node), short(pp[0]), short(pp[1]))) |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1938 elif format == 1: |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1939 pr = r.parentrevs(i) |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1940 ui.write("% 6d %04x % 8d % 8d % 8d % 6d % 6d % 6d % 6d %s\n" % ( |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1941 i, r.flags(i), r.start(i), r.length(i), r.rawsize(i), |
14254
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1942 base, r.linkrev(i), pr[0], pr[1], short(node))) |
248 | 1943 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1944 @command('debugindexdot', [], _('FILE')) |
12132
8a0e5b0c0ba9
debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents:
12131
diff
changeset
|
1945 def debugindexdot(ui, repo, file_): |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
1946 """dump an index DAG as a graphviz dot file""" |
12132
8a0e5b0c0ba9
debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents:
12131
diff
changeset
|
1947 r = None |
8a0e5b0c0ba9
debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents:
12131
diff
changeset
|
1948 if repo: |
8a0e5b0c0ba9
debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents:
12131
diff
changeset
|
1949 filelog = repo.file(file_) |
8a0e5b0c0ba9
debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents:
12131
diff
changeset
|
1950 if len(filelog): |
8a0e5b0c0ba9
debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents:
12131
diff
changeset
|
1951 r = filelog |
8a0e5b0c0ba9
debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents:
12131
diff
changeset
|
1952 if not r: |
13970
d13913355390
move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents:
13965
diff
changeset
|
1953 r = revlog.revlog(scmutil.opener(os.getcwd(), audit=False), file_) |
582 | 1954 ui.write("digraph G {\n") |
6750
fb42030d79d6
add __len__ and __iter__ methods to repo and revlog
Matt Mackall <mpm@selenic.com>
parents:
6749
diff
changeset
|
1955 for i in r: |
2287
3f18d1eea370
Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents:
2283
diff
changeset
|
1956 node = r.node(i) |
3f18d1eea370
Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents:
2283
diff
changeset
|
1957 pp = r.parents(node) |
3f18d1eea370
Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents:
2283
diff
changeset
|
1958 ui.write("\t%d -> %d\n" % (r.rev(pp[0]), i)) |
3f18d1eea370
Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents:
2283
diff
changeset
|
1959 if pp[1] != nullid: |
3f18d1eea370
Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents:
2283
diff
changeset
|
1960 ui.write("\t%d -> %d\n" % (r.rev(pp[1]), i)) |
582 | 1961 ui.write("}\n") |
248 | 1962 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1963 @command('debuginstall', [], '') |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1964 def debuginstall(ui): |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1965 '''test Mercurial installation |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1966 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1967 Returns 0 on success. |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1968 ''' |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1969 |
3846
18855084b922
Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents:
3844
diff
changeset
|
1970 def writetemp(contents): |
4849
035489f60842
Use a prefix for debuginstall tempfiles.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4818
diff
changeset
|
1971 (fd, name) = tempfile.mkstemp(prefix="hg-debuginstall-") |
3846
18855084b922
Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents:
3844
diff
changeset
|
1972 f = os.fdopen(fd, "wb") |
18855084b922
Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents:
3844
diff
changeset
|
1973 f.write(contents) |
18855084b922
Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents:
3844
diff
changeset
|
1974 f.close() |
18855084b922
Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents:
3844
diff
changeset
|
1975 return name |
18855084b922
Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents:
3844
diff
changeset
|
1976 |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1977 problems = 0 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1978 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1979 # encoding |
16934
0c9c41e53f1a
debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents:
16881
diff
changeset
|
1980 ui.status(_("checking encoding (%s)...\n") % encoding.encoding) |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1981 try: |
7948
de377b1a9a84
move encoding bits from util to encoding
Matt Mackall <mpm@selenic.com>
parents:
7942
diff
changeset
|
1982 encoding.fromlocal("test") |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1983 except util.Abort, inst: |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1984 ui.write(" %s\n" % inst) |
3848
8cbf060f637e
Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents:
3846
diff
changeset
|
1985 ui.write(_(" (check that your locale is properly set)\n")) |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1986 problems += 1 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1987 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1988 # compiled modules |
16934
0c9c41e53f1a
debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents:
16881
diff
changeset
|
1989 ui.status(_("checking installed modules (%s)...\n") |
12004
1fe4702fe2df
debuginstall: report installpath
Matt Mackall <mpm@selenic.com>
parents:
11969
diff
changeset
|
1990 % os.path.dirname(__file__)) |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1991 try: |
12004
1fe4702fe2df
debuginstall: report installpath
Matt Mackall <mpm@selenic.com>
parents:
11969
diff
changeset
|
1992 import bdiff, mpatch, base85, osutil |
15223
fc035e5370ca
pyflakes: clean up some import noise
Matt Mackall <mpm@selenic.com>
parents:
15221
diff
changeset
|
1993 dir(bdiff), dir(mpatch), dir(base85), dir(osutil) # quiet pyflakes |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1994 except Exception, inst: |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1995 ui.write(" %s\n" % inst) |
3848
8cbf060f637e
Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents:
3846
diff
changeset
|
1996 ui.write(_(" One or more extensions could not be found")) |
8cbf060f637e
Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents:
3846
diff
changeset
|
1997 ui.write(_(" (check that you compiled the extensions)\n")) |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1998 problems += 1 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
1999 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2000 # templates |
15200
797bf1dc1ff8
debuginstall: report the template path
Matt Mackall <mpm@selenic.com>
parents:
15198
diff
changeset
|
2001 import templater |
797bf1dc1ff8
debuginstall: report the template path
Matt Mackall <mpm@selenic.com>
parents:
15198
diff
changeset
|
2002 p = templater.templatepath() |
16934
0c9c41e53f1a
debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents:
16881
diff
changeset
|
2003 ui.status(_("checking templates (%s)...\n") % ' '.join(p)) |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2004 try: |
7874
d812029cda85
cleanup: drop variables for unused return values
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
7850
diff
changeset
|
2005 templater.templater(templater.templatepath("map-cmdline.default")) |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2006 except Exception, inst: |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2007 ui.write(" %s\n" % inst) |
3848
8cbf060f637e
Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents:
3846
diff
changeset
|
2008 ui.write(_(" (templates seem to have been installed incorrectly)\n")) |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2009 problems += 1 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2010 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2011 # editor |
16934
0c9c41e53f1a
debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents:
16881
diff
changeset
|
2012 ui.status(_("checking commit editor...\n")) |
5660
3c80ecdc1bcd
Use VISUAL in addition to EDITOR when choosing the editor to use.
Osku Salerma <osku@iki.fi>
parents:
5658
diff
changeset
|
2013 editor = ui.geteditor() |
14271
4030630fb59c
rename util.find_exe to findexe
Adrian Buehlmann <adrian@cadifra.com>
parents:
14260
diff
changeset
|
2014 cmdpath = util.findexe(editor) or util.findexe(editor.split()[0]) |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2015 if not cmdpath: |
3855
b9cdd6f2aa43
debuginstall: fix a copy/paste error
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3848
diff
changeset
|
2016 if editor == 'vi': |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2017 ui.write(_(" No commit editor set and can't find vi in PATH\n")) |
12083
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
12067
diff
changeset
|
2018 ui.write(_(" (specify a commit editor in your configuration" |
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
12067
diff
changeset
|
2019 " file)\n")) |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2020 else: |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2021 ui.write(_(" Can't find editor '%s' in PATH\n") % editor) |
12083
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
12067
diff
changeset
|
2022 ui.write(_(" (specify a commit editor in your configuration" |
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
12067
diff
changeset
|
2023 " file)\n")) |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2024 problems += 1 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2025 |
3848
8cbf060f637e
Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents:
3846
diff
changeset
|
2026 # check username |
16934
0c9c41e53f1a
debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents:
16881
diff
changeset
|
2027 ui.status(_("checking username...\n")) |
9734
36c388a1aa51
commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents:
9725
diff
changeset
|
2028 try: |
12063
516b000fbb7e
cleanup: remove unused variables
Brodie Rao <brodie@bitheap.org>
parents:
12033
diff
changeset
|
2029 ui.username() |
9734
36c388a1aa51
commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents:
9725
diff
changeset
|
2030 except util.Abort, e: |
36c388a1aa51
commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents:
9725
diff
changeset
|
2031 ui.write(" %s\n" % e) |
12083
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
12067
diff
changeset
|
2032 ui.write(_(" (specify a username in your configuration file)\n")) |
9734
36c388a1aa51
commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents:
9725
diff
changeset
|
2033 problems += 1 |
3848
8cbf060f637e
Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents:
3846
diff
changeset
|
2034 |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2035 if not problems: |
16934
0c9c41e53f1a
debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents:
16881
diff
changeset
|
2036 ui.status(_("no problems detected\n")) |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2037 else: |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2038 ui.write(_("%s problems detected," |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2039 " please check your install!\n") % problems) |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2040 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2041 return problems |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2042 |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2043 @command('debugknown', [], _('REPO ID...')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2044 def debugknown(ui, repopath, *ids, **opts): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2045 """test whether node ids are known to a repo |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2046 |
16683 | 2047 Every ID must be a full-length hex node id string. Returns a list of 0s |
2048 and 1s indicating unknown/known. | |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2049 """ |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
2050 repo = hg.peer(ui, opts, repopath) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2051 if not repo.capable('known'): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2052 raise util.Abort("known() not supported by target repository") |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2053 flags = repo.known([bin(s) for s in ids]) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2054 ui.write("%s\n" % ("".join([f and "1" or "0" for f in flags]))) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2055 |
17071
11f26e2669aa
command: creation of obsolete marker
Pierre-Yves.David@ens-lyon.org
parents:
17059
diff
changeset
|
2056 @command('debugobsolete', [] + commitopts2, |
17074
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2057 _('[OBSOLETED [REPLACEMENT] [REPL... ]')) |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2058 def debugobsolete(ui, repo, precursor=None, *successors, **opts): |
17071
11f26e2669aa
command: creation of obsolete marker
Pierre-Yves.David@ens-lyon.org
parents:
17059
diff
changeset
|
2059 """create arbitrary obsolete marker""" |
17074
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2060 if precursor is not None: |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2061 metadata = {} |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2062 if 'date' in opts: |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2063 metadata['date'] = opts['date'] |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2064 metadata['user'] = opts['user'] or ui.username() |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2065 succs = tuple(bin(succ) for succ in successors) |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2066 l = repo.lock() |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2067 try: |
17126
8fa8717b47b6
obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
17123
diff
changeset
|
2068 tr = repo.transaction('debugobsolete') |
8fa8717b47b6
obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
17123
diff
changeset
|
2069 try: |
8fa8717b47b6
obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
17123
diff
changeset
|
2070 repo.obsstore.create(tr, bin(precursor), succs, 0, metadata) |
8fa8717b47b6
obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
17123
diff
changeset
|
2071 tr.close() |
8fa8717b47b6
obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
17123
diff
changeset
|
2072 finally: |
8fa8717b47b6
obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
17123
diff
changeset
|
2073 tr.release() |
17074
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2074 finally: |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2075 l.release() |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2076 else: |
17123
8e030168b09e
debugobsolete: remove spurious ctx from variable name
Matt Mackall <mpm@selenic.com>
parents:
17074
diff
changeset
|
2077 for m in obsolete.allmarkers(repo): |
8e030168b09e
debugobsolete: remove spurious ctx from variable name
Matt Mackall <mpm@selenic.com>
parents:
17074
diff
changeset
|
2078 ui.write(hex(m.precnode())) |
8e030168b09e
debugobsolete: remove spurious ctx from variable name
Matt Mackall <mpm@selenic.com>
parents:
17074
diff
changeset
|
2079 for repl in m.succnodes(): |
17074
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2080 ui.write(' ') |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2081 ui.write(hex(repl)) |
17123
8e030168b09e
debugobsolete: remove spurious ctx from variable name
Matt Mackall <mpm@selenic.com>
parents:
17074
diff
changeset
|
2082 ui.write(' %X ' % m._data[2]) |
8e030168b09e
debugobsolete: remove spurious ctx from variable name
Matt Mackall <mpm@selenic.com>
parents:
17074
diff
changeset
|
2083 ui.write(m.metadata()) |
17074
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2084 ui.write('\n') |
17071
11f26e2669aa
command: creation of obsolete marker
Pierre-Yves.David@ens-lyon.org
parents:
17059
diff
changeset
|
2085 |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2086 @command('debugpushkey', [], _('REPO NAMESPACE [KEY OLD NEW]')) |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
2087 def debugpushkey(ui, repopath, namespace, *keyinfo, **opts): |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2088 '''access the pushkey key/value protocol |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2089 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2090 With two args, list the keys in the given namespace. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2091 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2092 With five args, set a key to new if it currently is set to old. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2093 Reports success or failure. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2094 ''' |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2095 |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
2096 target = hg.peer(ui, {}, repopath) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2097 if keyinfo: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2098 key, old, new = keyinfo |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2099 r = target.pushkey(namespace, key, old, new) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2100 ui.status(str(r) + '\n') |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2101 return not r |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2102 else: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2103 for k, v in target.listkeys(namespace).iteritems(): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2104 ui.write("%s\t%s\n" % (k.encode('string-escape'), |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2105 v.encode('string-escape'))) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2106 |
16249 | 2107 @command('debugpvec', [], _('A B')) |
2108 def debugpvec(ui, repo, a, b=None): | |
2109 ca = scmutil.revsingle(repo, a) | |
2110 cb = scmutil.revsingle(repo, b) | |
2111 pa = pvec.ctxpvec(ca) | |
2112 pb = pvec.ctxpvec(cb) | |
2113 if pa == pb: | |
2114 rel = "=" | |
2115 elif pa > pb: | |
2116 rel = ">" | |
2117 elif pa < pb: | |
2118 rel = "<" | |
2119 elif pa | pb: | |
2120 rel = "|" | |
2121 ui.write(_("a: %s\n") % pa) | |
2122 ui.write(_("b: %s\n") % pb) | |
2123 ui.write(_("depth(a): %d depth(b): %d\n") % (pa._depth, pb._depth)) | |
2124 ui.write(_("delta: %d hdist: %d distance: %d relation: %s\n") % | |
2125 (abs(pa._depth - pb._depth), pvec._hamming(pa._vec, pb._vec), | |
2126 pa.distance(pb), rel)) | |
2127 | |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2128 @command('debugrebuildstate', |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2129 [('r', 'rev', '', _('revision to rebuild to'), _('REV'))], |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2130 _('[-r REV] [REV]')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2131 def debugrebuildstate(ui, repo, rev="tip"): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2132 """rebuild the dirstate as it would look like for the given revision""" |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
2133 ctx = scmutil.revsingle(repo, rev) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2134 wlock = repo.wlock() |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2135 try: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2136 repo.dirstate.rebuild(ctx.node(), ctx.manifest()) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2137 finally: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2138 wlock.release() |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2139 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2140 @command('debugrename', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2141 [('r', 'rev', '', _('revision to debug'), _('REV'))], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2142 _('[-r REV] FILE')) |
3652 | 2143 def debugrename(ui, repo, file1, *pats, **opts): |
1194
c165cbf56bb1
Add doc string for debugrename.
bos@serpentine.internal.keyresearch.com
parents:
1193
diff
changeset
|
2144 """dump rename information""" |
3652 | 2145 |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
2146 ctx = scmutil.revsingle(repo, opts.get('rev')) |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
2147 m = scmutil.match(ctx, (file1,) + pats, opts) |
6764 | 2148 for abs in ctx.walk(m): |
2149 fctx = ctx[abs] | |
6579
0159b7a36184
walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents:
6578
diff
changeset
|
2150 o = fctx.filelog().renamed(fctx.filenode()) |
6584
29c77e5dfb3c
walk: remove rel and exact returns
Matt Mackall <mpm@selenic.com>
parents:
6583
diff
changeset
|
2151 rel = m.rel(abs) |
6579
0159b7a36184
walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents:
6578
diff
changeset
|
2152 if o: |
0159b7a36184
walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents:
6578
diff
changeset
|
2153 ui.write(_("%s renamed from %s:%s\n") % (rel, o[0], hex(o[1]))) |
3652 | 2154 else: |
2155 ui.write(_("%s not renamed\n") % rel) | |
1116 | 2156 |
14323
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
2157 @command('debugrevlog', |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
2158 [('c', 'changelog', False, _('open changelog')), |
14326
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2159 ('m', 'manifest', False, _('open manifest')), |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2160 ('d', 'dump', False, _('dump index data'))], |
14323
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
2161 _('-c|-m|FILE')) |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
2162 def debugrevlog(ui, repo, file_ = None, **opts): |
14304 | 2163 """show data and statistics about a revlog""" |
14323
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
2164 r = cmdutil.openrevlog(repo, 'debugrevlog', file_, opts) |
14326
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2165 |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2166 if opts.get("dump"): |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2167 numrevs = len(r) |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2168 ui.write("# rev p1rev p2rev start end deltastart base p1 p2" |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2169 " rawsize totalsize compression heads\n") |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2170 ts = 0 |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2171 heads = set() |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2172 for rev in xrange(numrevs): |
14371 | 2173 dbase = r.deltaparent(rev) |
2174 if dbase == -1: | |
2175 dbase = rev | |
14326
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2176 cbase = r.chainbase(rev) |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2177 p1, p2 = r.parentrevs(rev) |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2178 rs = r.rawsize(rev) |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2179 ts = ts + rs |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2180 heads -= set(r.parentrevs(rev)) |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2181 heads.add(rev) |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2182 ui.write("%d %d %d %d %d %d %d %d %d %d %d %d %d\n" % |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2183 (rev, p1, p2, r.start(rev), r.end(rev), |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2184 r.start(dbase), r.start(cbase), |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2185 r.start(p1), r.start(p2), |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2186 rs, ts, ts / r.end(rev), len(heads))) |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2187 return 0 |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2188 |
14304 | 2189 v = r.version |
2190 format = v & 0xFFFF | |
2191 flags = [] | |
2192 gdelta = False | |
2193 if v & revlog.REVLOGNGINLINEDATA: | |
2194 flags.append('inline') | |
2195 if v & revlog.REVLOGGENERALDELTA: | |
2196 gdelta = True | |
2197 flags.append('generaldelta') | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2198 if not flags: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2199 flags = ['(none)'] |
14304 | 2200 |
2201 nummerges = 0 | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2202 numfull = 0 |
14304 | 2203 numprev = 0 |
2204 nump1 = 0 | |
2205 nump2 = 0 | |
2206 numother = 0 | |
2207 nump1prev = 0 | |
2208 nump2prev = 0 | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2209 chainlengths = [] |
14304 | 2210 |
2211 datasize = [None, 0, 0L] | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2212 fullsize = [None, 0, 0L] |
14304 | 2213 deltasize = [None, 0, 0L] |
2214 | |
2215 def addsize(size, l): | |
2216 if l[0] is None or size < l[0]: | |
2217 l[0] = size | |
2218 if size > l[1]: | |
2219 l[1] = size | |
2220 l[2] += size | |
2221 | |
2222 numrevs = len(r) | |
2223 for rev in xrange(numrevs): | |
2224 p1, p2 = r.parentrevs(rev) | |
2225 delta = r.deltaparent(rev) | |
2226 if format > 0: | |
2227 addsize(r.rawsize(rev), datasize) | |
2228 if p2 != nullrev: | |
2229 nummerges += 1 | |
2230 size = r.length(rev) | |
2231 if delta == nullrev: | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2232 chainlengths.append(0) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2233 numfull += 1 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2234 addsize(size, fullsize) |
14304 | 2235 else: |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2236 chainlengths.append(chainlengths[delta] + 1) |
14304 | 2237 addsize(size, deltasize) |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2238 if delta == rev - 1: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2239 numprev += 1 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2240 if delta == p1: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2241 nump1prev += 1 |
14304 | 2242 elif delta == p2: |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2243 nump2prev += 1 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2244 elif delta == p1: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2245 nump1 += 1 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2246 elif delta == p2: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2247 nump2 += 1 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2248 elif delta != nullrev: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2249 numother += 1 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2250 |
17188
76e55914c303
debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents:
17182
diff
changeset
|
2251 # Adjust size min value for empty cases |
76e55914c303
debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents:
17182
diff
changeset
|
2252 for size in (datasize, fullsize, deltasize): |
76e55914c303
debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents:
17182
diff
changeset
|
2253 if size[0] is None: |
76e55914c303
debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents:
17182
diff
changeset
|
2254 size[0] = 0 |
76e55914c303
debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents:
17182
diff
changeset
|
2255 |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2256 numdeltas = numrevs - numfull |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2257 numoprev = numprev - nump1prev - nump2prev |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2258 totalrawsize = datasize[2] |
14304 | 2259 datasize[2] /= numrevs |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2260 fulltotal = fullsize[2] |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2261 fullsize[2] /= numfull |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2262 deltatotal = deltasize[2] |
17188
76e55914c303
debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents:
17182
diff
changeset
|
2263 if numrevs - numfull > 0: |
76e55914c303
debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents:
17182
diff
changeset
|
2264 deltasize[2] /= numrevs - numfull |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2265 totalsize = fulltotal + deltatotal |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2266 avgchainlen = sum(chainlengths) / numrevs |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2267 compratio = totalrawsize / totalsize |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2268 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2269 basedfmtstr = '%%%dd\n' |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2270 basepcfmtstr = '%%%dd %s(%%5.2f%%%%)\n' |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2271 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2272 def dfmtstr(max): |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2273 return basedfmtstr % len(str(max)) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2274 def pcfmtstr(max, padding=0): |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2275 return basepcfmtstr % (len(str(max)), ' ' * padding) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2276 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2277 def pcfmt(value, total): |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2278 return (value, 100 * float(value) / total) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2279 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2280 ui.write('format : %d\n' % format) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2281 ui.write('flags : %s\n' % ', '.join(flags)) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2282 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2283 ui.write('\n') |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2284 fmt = pcfmtstr(totalsize) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2285 fmt2 = dfmtstr(totalsize) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2286 ui.write('revisions : ' + fmt2 % numrevs) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2287 ui.write(' merges : ' + fmt % pcfmt(nummerges, numrevs)) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2288 ui.write(' normal : ' + fmt % pcfmt(numrevs - nummerges, numrevs)) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2289 ui.write('revisions : ' + fmt2 % numrevs) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2290 ui.write(' full : ' + fmt % pcfmt(numfull, numrevs)) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2291 ui.write(' deltas : ' + fmt % pcfmt(numdeltas, numrevs)) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2292 ui.write('revision size : ' + fmt2 % totalsize) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2293 ui.write(' full : ' + fmt % pcfmt(fulltotal, totalsize)) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2294 ui.write(' deltas : ' + fmt % pcfmt(deltatotal, totalsize)) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2295 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2296 ui.write('\n') |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2297 fmt = dfmtstr(max(avgchainlen, compratio)) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2298 ui.write('avg chain length : ' + fmt % avgchainlen) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2299 ui.write('compression ratio : ' + fmt % compratio) |
14304 | 2300 |
2301 if format > 0: | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2302 ui.write('\n') |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2303 ui.write('uncompressed data size (min/max/avg) : %d / %d / %d\n' |
14304 | 2304 % tuple(datasize)) |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2305 ui.write('full revision size (min/max/avg) : %d / %d / %d\n' |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2306 % tuple(fullsize)) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2307 ui.write('delta size (min/max/avg) : %d / %d / %d\n' |
14304 | 2308 % tuple(deltasize)) |
2309 | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2310 if numdeltas > 0: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2311 ui.write('\n') |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2312 fmt = pcfmtstr(numdeltas) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2313 fmt2 = pcfmtstr(numdeltas, 4) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2314 ui.write('deltas against prev : ' + fmt % pcfmt(numprev, numdeltas)) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2315 if numprev > 0: |
16683 | 2316 ui.write(' where prev = p1 : ' + fmt2 % pcfmt(nump1prev, |
2317 numprev)) | |
2318 ui.write(' where prev = p2 : ' + fmt2 % pcfmt(nump2prev, | |
2319 numprev)) | |
2320 ui.write(' other : ' + fmt2 % pcfmt(numoprev, | |
2321 numprev)) | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2322 if gdelta: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2323 ui.write('deltas against p1 : ' + fmt % pcfmt(nump1, numdeltas)) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2324 ui.write('deltas against p2 : ' + fmt % pcfmt(nump2, numdeltas)) |
16683 | 2325 ui.write('deltas against other : ' + fmt % pcfmt(numother, |
2326 numdeltas)) | |
14304 | 2327 |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2328 @command('debugrevspec', [], ('REVSPEC')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2329 def debugrevspec(ui, repo, expr): |
16104
5535e66b3016
debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents:
16097
diff
changeset
|
2330 """parse and apply a revision specification |
5535e66b3016
debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents:
16097
diff
changeset
|
2331 |
5535e66b3016
debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents:
16097
diff
changeset
|
2332 Use --verbose to print the parsed tree before and after aliases |
5535e66b3016
debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents:
16097
diff
changeset
|
2333 expansion. |
5535e66b3016
debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents:
16097
diff
changeset
|
2334 """ |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2335 if ui.verbose: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2336 tree = revset.parse(expr)[0] |
16218
81a1a00f5738
debugrevspec: pretty print output
Patrick Mezard <patrick@mezard.eu>
parents:
16192
diff
changeset
|
2337 ui.note(revset.prettyformat(tree), "\n") |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2338 newtree = revset.findaliases(ui, tree) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2339 if newtree != tree: |
16218
81a1a00f5738
debugrevspec: pretty print output
Patrick Mezard <patrick@mezard.eu>
parents:
16192
diff
changeset
|
2340 ui.note(revset.prettyformat(newtree), "\n") |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2341 func = revset.match(ui, expr) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2342 for c in func(repo, range(len(repo))): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2343 ui.write("%s\n" % c) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2344 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2345 @command('debugsetparents', [], _('REV1 [REV2]')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2346 def debugsetparents(ui, repo, rev1, rev2=None): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2347 """manually set the parents of the current working directory |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2348 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2349 This is useful for writing repository conversion tools, but should |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2350 be used with care. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2351 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2352 Returns 0 on success. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2353 """ |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2354 |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
2355 r1 = scmutil.revsingle(repo, rev1).node() |
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
2356 r2 = scmutil.revsingle(repo, rev2, 'null').node() |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2357 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2358 wlock = repo.wlock() |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2359 try: |
16551
ebf6d38c9063
localrepo: add setparents() to adjust dirstate copies (issue3407)
Patrick Mezard <patrick@mezard.eu>
parents:
16505
diff
changeset
|
2360 repo.setparents(r1, r2) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2361 finally: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2362 wlock.release() |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2363 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2364 @command('debugstate', |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2365 [('', 'nodates', None, _('do not display the saved mtime')), |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2366 ('', 'datesort', None, _('sort by saved mtime'))], |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2367 _('[OPTION]...')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2368 def debugstate(ui, repo, nodates=None, datesort=None): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2369 """show the contents of the current dirstate""" |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2370 timestr = "" |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2371 showdate = not nodates |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2372 if datesort: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2373 keyfunc = lambda x: (x[1][3], x[0]) # sort by mtime, then by filename |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2374 else: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2375 keyfunc = None # sort by filename |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2376 for file_, ent in sorted(repo.dirstate._map.iteritems(), key=keyfunc): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2377 if showdate: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2378 if ent[3] == -1: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2379 # Pad or slice to locale representation |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2380 locale_len = len(time.strftime("%Y-%m-%d %H:%M:%S ", |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2381 time.localtime(0))) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2382 timestr = 'unset' |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2383 timestr = (timestr[:locale_len] + |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2384 ' ' * (locale_len - len(timestr))) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2385 else: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2386 timestr = time.strftime("%Y-%m-%d %H:%M:%S ", |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2387 time.localtime(ent[3])) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2388 if ent[1] & 020000: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2389 mode = 'lnk' |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2390 else: |
15440
9ab2b3b730ee
windows: use umask 022 in debugstate output
Mads Kiilerich <mads@kiilerich.com>
parents:
15424
diff
changeset
|
2391 mode = '%3o' % (ent[1] & 0777 & ~util.umask) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2392 ui.write("%c %s %10d %s%s\n" % (ent[0], mode, ent[2], timestr, file_)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2393 for f in repo.dirstate.copies(): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2394 ui.write(_("copy: %s -> %s\n") % (repo.dirstate.copied(f), f)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2395 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2396 @command('debugsub', |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2397 [('r', 'rev', '', |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2398 _('revision to check'), _('REV'))], |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2399 _('[-r REV] [REV]')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2400 def debugsub(ui, repo, rev=None): |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
2401 ctx = scmutil.revsingle(repo, rev, None) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2402 for k, v in sorted(ctx.substate.items()): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2403 ui.write('path %s\n' % k) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2404 ui.write(' source %s\n' % v[0]) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2405 ui.write(' revision %s\n' % v[1]) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2406 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2407 @command('debugwalk', walkopts, _('[OPTION]... [FILE]...')) |
820
89985a1b3427
Clean up walk and changes code to use normalised names properly.
Bryan O'Sullivan <bos@serpentine.com>
parents:
815
diff
changeset
|
2408 def debugwalk(ui, repo, *pats, **opts): |
1053
1539ca091d86
Added missing doc strings for two new debug commmands.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1052
diff
changeset
|
2409 """show how files match on given patterns""" |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
2410 m = scmutil.match(repo[None], pats, opts) |
6585 | 2411 items = list(repo.walk(m)) |
1065
6e94c0365d98
Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1062
diff
changeset
|
2412 if not items: |
6e94c0365d98
Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1062
diff
changeset
|
2413 return |
16953
634ad0b24ba2
debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents:
16949
diff
changeset
|
2414 f = lambda fn: fn |
634ad0b24ba2
debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents:
16949
diff
changeset
|
2415 if ui.configbool('ui', 'slash') and os.sep != '/': |
634ad0b24ba2
debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents:
16949
diff
changeset
|
2416 f = lambda fn: util.normpath(fn) |
6586
d3463007d368
walk: return a single value
Matt Mackall <mpm@selenic.com>
parents:
6585
diff
changeset
|
2417 fmt = 'f %%-%ds %%-%ds %%s' % ( |
d3463007d368
walk: return a single value
Matt Mackall <mpm@selenic.com>
parents:
6585
diff
changeset
|
2418 max([len(abs) for abs in items]), |
d3463007d368
walk: return a single value
Matt Mackall <mpm@selenic.com>
parents:
6585
diff
changeset
|
2419 max([len(m.rel(abs)) for abs in items])) |
d3463007d368
walk: return a single value
Matt Mackall <mpm@selenic.com>
parents:
6585
diff
changeset
|
2420 for abs in items: |
16953
634ad0b24ba2
debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents:
16949
diff
changeset
|
2421 line = fmt % (abs, f(m.rel(abs)), m.exact(abs) and 'exact' or '') |
1309
332f225b835c
Make debugwalk strip trailing spaces and remove these from test-walk.out
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1285
diff
changeset
|
2422 ui.write("%s\n" % line.rstrip()) |
820
89985a1b3427
Clean up walk and changes code to use normalised names properly.
Bryan O'Sullivan <bos@serpentine.com>
parents:
815
diff
changeset
|
2423 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2424 @command('debugwireargs', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2425 [('', 'three', '', 'three'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2426 ('', 'four', '', 'four'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2427 ('', 'five', '', 'five'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2428 ] + remoteopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2429 _('REPO [OPTIONS]... [ONE [TWO]]')) |
13720
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2430 def debugwireargs(ui, repopath, *vals, **opts): |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
2431 repo = hg.peer(ui, opts, repopath) |
13720
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2432 for opt in remoteopts: |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2433 del opts[opt[1]] |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2434 args = {} |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2435 for k, v in opts.iteritems(): |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2436 if v: |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2437 args[k] = v |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2438 # run twice to check that we don't mess up the stream for the next command |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2439 res1 = repo.debugwireargs(*vals, **args) |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2440 res2 = repo.debugwireargs(*vals, **args) |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2441 ui.write("%s\n" % res1) |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2442 if res1 != res2: |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2443 ui.warn("%s\n" % res2) |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2444 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2445 @command('^diff', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2446 [('r', 'rev', [], _('revision'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2447 ('c', 'change', '', _('change made by revision'), _('REV')) |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2448 ] + diffopts + diffopts2 + walkopts + subrepoopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2449 _('[OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...')) |
732
ba0b6d17a6de
Convert diff command over to using walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
731
diff
changeset
|
2450 def diff(ui, repo, *pats, **opts): |
1568
1d7d0c07e8f3
make all commands be repo-wide by default
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1567
diff
changeset
|
2451 """diff repository (or selected files) |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2452 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2453 Show differences between revisions for the specified files. |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2454 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2455 Differences between files are shown using the unified diff format. |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2456 |
12389 | 2457 .. note:: |
2458 diff may generate unexpected results for merges, as it will | |
2459 default to comparing against the working directory's first | |
2460 parent changeset if no revisions are specified. | |
3822
28134d82db9b
Add notes about diff/merge asymmetry to export, diff, and log
Matt Mackall <mpm@selenic.com>
parents:
3815
diff
changeset
|
2461 |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2462 When two revision arguments are given, then changes are shown |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2463 between those revisions. If only one revision is specified then |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2464 that revision is compared to the working directory, and, when no |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2465 revisions are specified, the working directory files are compared |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2466 to its parent. |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2467 |
10527
9c0ba837dc65
commands: correct diff -c explanation
timeless <timeless@mozdev.org>
parents:
10520
diff
changeset
|
2468 Alternatively you can specify -c/--change with a revision to see |
9c0ba837dc65
commands: correct diff -c explanation
timeless <timeless@mozdev.org>
parents:
10520
diff
changeset
|
2469 the changes in that changeset relative to its first parent. |
10520 | 2470 |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2471 Without the -a/--text option, diff will avoid generating diffs of |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2472 files it detects as binary. With -a, diff will generate a diff |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2473 anyway, probably with undesirable results. |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2474 |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2475 Use the -g/--git option to generate diffs in the git extended diff |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
2476 format. For more information, read :hg:`help diffs`. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2477 |
15110 | 2478 .. container:: verbose |
2479 | |
2480 Examples: | |
2481 | |
2482 - compare a file in the current working directory to its parent:: | |
2483 | |
2484 hg diff foo.c | |
2485 | |
2486 - compare two historical versions of a directory, with rename info:: | |
2487 | |
2488 hg diff --git -r 1.0:1.2 lib/ | |
2489 | |
2490 - get change stats relative to the last change on some date:: | |
2491 | |
2492 hg diff --stat -r "date('may 2')" | |
2493 | |
2494 - diff all newly-added files that contain a keyword:: | |
2495 | |
2496 hg diff "set:added() and grep(GNU)" | |
2497 | |
2498 - compare a revision and its parents:: | |
2499 | |
2500 hg diff -c 9353 # compare against first parent | |
2501 hg diff -r 9353^:9353 # same using revset syntax | |
2502 hg diff -r 9353^2:9353 # compare against the second parent | |
2503 | |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2504 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2505 """ |
7628
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2506 |
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2507 revs = opts.get('rev') |
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2508 change = opts.get('change') |
9640
9e76232fbfbe
diff: add --stat for diffstat output
Brodie Rao <me+hg@dackz.net>
parents:
9636
diff
changeset
|
2509 stat = opts.get('stat') |
9857
24bc6e414610
diff: change --inverse to --reverse
Martin Geisler <mg@lazybytes.net>
parents:
9839
diff
changeset
|
2510 reverse = opts.get('reverse') |
7628
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2511 |
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2512 if revs and change: |
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2513 msg = _('cannot specify --rev and --change at the same time') |
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2514 raise util.Abort(msg) |
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2515 elif change: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
2516 node2 = scmutil.revsingle(repo, change, None).node() |
13878
a8d13ee0ce68
misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents:
13855
diff
changeset
|
2517 node1 = repo[node2].p1().node() |
7628
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2518 else: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
2519 node1, node2 = scmutil.revpair(repo, revs) |
245 | 2520 |
9857
24bc6e414610
diff: change --inverse to --reverse
Martin Geisler <mg@lazybytes.net>
parents:
9839
diff
changeset
|
2521 if reverse: |
9725
3f522d2fa633
diff: add --inverse option
Yannick Gingras <ygingras@ygingras.net>
parents:
9718
diff
changeset
|
2522 node1, node2 = node2, node1 |
3f522d2fa633
diff: add --inverse option
Yannick Gingras <ygingras@ygingras.net>
parents:
9718
diff
changeset
|
2523 |
9642
7d17794f08a9
diffstat: with --git, mark binary files with Bin
Brodie Rao <me+hg@dackz.net>
parents:
9640
diff
changeset
|
2524 diffopts = patch.diffopts(ui, opts) |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
2525 m = scmutil.match(repo[node2], pats, opts) |
12167
d2c5b0927c28
diff: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents:
12166
diff
changeset
|
2526 cmdutil.diffordiffstat(ui, repo, diffopts, node1, node2, m, stat=stat, |
d2c5b0927c28
diff: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents:
12166
diff
changeset
|
2527 listsubrepos=opts.get('subrepos')) |
396
8f8bb77d560e
Show revisions in diffs like CVS, based on a patch from Goffredo Baroncelli.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
395
diff
changeset
|
2528 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2529 @command('^export', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2530 [('o', 'output', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2531 _('print output to file with formatted name'), _('FORMAT')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2532 ('', 'switch-parent', None, _('diff against the second parent')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2533 ('r', 'rev', [], _('revisions to export'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2534 ] + diffopts, |
16990
1dbe8a2b1b96
export: add optional -r to synopsis
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16953
diff
changeset
|
2535 _('[OPTION]... [-o OUTFILESPEC] [-r] REV...')) |
580 | 2536 def export(ui, repo, *changesets, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2537 """dump the header and diffs for one or more changesets |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2538 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2539 Print the changeset header and diffs for one or more revisions. |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2540 |
10334
3d75c691b77d
commands: fix the list of changeset header information in 'hg help export'
Steve Losh <steve@stevelosh.com>
parents:
10331
diff
changeset
|
2541 The information shown in the changeset header is: author, date, |
10335
6ae4f390ec61
commands: fix more changeset header information in 'hg help export'
Steve Losh <steve@stevelosh.com>
parents:
10334
diff
changeset
|
2542 branch name (if non-default), changeset hash, parent(s) and commit |
6ae4f390ec61
commands: fix more changeset header information in 'hg help export'
Steve Losh <steve@stevelosh.com>
parents:
10334
diff
changeset
|
2543 comment. |
3822
28134d82db9b
Add notes about diff/merge asymmetry to export, diff, and log
Matt Mackall <mpm@selenic.com>
parents:
3815
diff
changeset
|
2544 |
12390
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
2545 .. note:: |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
2546 export may generate unexpected diff output for merge |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
2547 changesets, as it will compare the merge changeset against its |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
2548 first parent only. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2549 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2550 Output may be to a file, in which case the name of the file is |
9892
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
2551 given using a format string. The formatting rules are as follows: |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
2552 |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
2553 :``%%``: literal "%" character |
11718
3e979f47a4c9
help: fix bytes/digit confusion for hashes
Matt Mackall <mpm@selenic.com>
parents:
11697
diff
changeset
|
2554 :``%H``: changeset hash (40 hexadecimal digits) |
9892
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
2555 :``%N``: number of patches being generated |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
2556 :``%R``: changeset revision number |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
2557 :``%b``: basename of the exporting repository |
11718
3e979f47a4c9
help: fix bytes/digit confusion for hashes
Matt Mackall <mpm@selenic.com>
parents:
11697
diff
changeset
|
2558 :``%h``: short-form changeset hash (12 hexadecimal digits) |
14986
70e11de6964d
export: add %m to file format string (first line of the commit message)
Andrzej Bieniek <andyhelp@gmail.com>
parents:
14954
diff
changeset
|
2559 :``%m``: first line of the commit message (only alphanumeric characters) |
9892
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
2560 :``%n``: zero-padded sequence number, starting at 1 |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
2561 :``%r``: zero-padded changeset revision number |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2562 |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2563 Without the -a/--text option, export will avoid generating diffs |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2564 of files it detects as binary. With -a, export will generate a |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2565 diff anyway, probably with undesirable results. |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2566 |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2567 Use the -g/--git option to generate diffs in the git extended diff |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
2568 format. See :hg:`help diffs` for more information. |
7307
56380212d630
help: commands supporting --git point to the gitdiffs topic (issue1352)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7303
diff
changeset
|
2569 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
2570 With the --switch-parent option, the diff will be against the |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
2571 second parent. It can be useful to review a merge. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2572 |
15111 | 2573 .. container:: verbose |
2574 | |
2575 Examples: | |
2576 | |
2577 - use export and import to transplant a bugfix to the current | |
2578 branch:: | |
2579 | |
2580 hg export -r 9353 | hg import - | |
2581 | |
2582 - export all the changesets between two revisions to a file with | |
2583 rename information:: | |
2584 | |
2585 hg export --git -r 123:150 > changes.txt | |
2586 | |
2587 - split outgoing changes into a series of patches with | |
2588 descriptive names:: | |
2589 | |
2590 hg export -r "outgoing()" -o "%n-%m.patch" | |
2591 | |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2592 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2593 """ |
10015
b5f352f33520
commands.export: accept -r option as revision specification
Alexander Solovyov <piranha@piranha.org.ua>
parents:
10014
diff
changeset
|
2594 changesets += tuple(opts.get('rev', [])) |
16357
8ca7187d479f
export: catch exporting empty revsets (issue3353)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16231
diff
changeset
|
2595 revs = scmutil.revrange(repo, changesets) |
8ca7187d479f
export: catch exporting empty revsets (issue3353)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16231
diff
changeset
|
2596 if not revs: |
1402
9d2c2e6b32b5
i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1400
diff
changeset
|
2597 raise util.Abort(_("export requires at least one changeset")) |
2874
4ec58b157265
refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2871
diff
changeset
|
2598 if len(revs) > 1: |
4ec58b157265
refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2871
diff
changeset
|
2599 ui.note(_('exporting patches:\n')) |
4ec58b157265
refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2871
diff
changeset
|
2600 else: |
4ec58b157265
refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2871
diff
changeset
|
2601 ui.note(_('exporting patch:\n')) |
10611
e764f24a45ee
patch/diff: move patch.export() to cmdutil.export()
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10596
diff
changeset
|
2602 cmdutil.export(repo, revs, template=opts.get('output'), |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
2603 switch_parent=opts.get('switch_parent'), |
2888
3848488244fc
Move ui.diffopts to patch.diffopts where it belongs
Matt Mackall <mpm@selenic.com>
parents:
2883
diff
changeset
|
2604 opts=patch.diffopts(ui, opts)) |
246
96cde50a746f
Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents:
245
diff
changeset
|
2605 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2606 @command('^forget', walkopts, _('[OPTION]... FILE...')) |
8902
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2607 def forget(ui, repo, *pats, **opts): |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2608 """forget the specified files on the next commit |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2609 |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2610 Mark the specified files so they will no longer be tracked |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2611 after the next commit. |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2612 |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2613 This only removes files from the current branch, not from the |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2614 entire project history, and it does not delete them from the |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2615 working directory. |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2616 |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
2617 To undo a forget before the next commit, see :hg:`add`. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2618 |
15118 | 2619 .. container:: verbose |
2620 | |
2621 Examples: | |
2622 | |
2623 - forget newly-added binary files:: | |
2624 | |
2625 hg forget "set:added() and binary()" | |
2626 | |
2627 - forget files that would be excluded by .hgignore:: | |
2628 | |
2629 hg forget "set:hgignore()" | |
2630 | |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2631 Returns 0 on success. |
8902
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2632 """ |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2633 |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2634 if not pats: |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2635 raise util.Abort(_('no files specified')) |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2636 |
15912
2bd54ffaa27e
forget: fix subrepo recursion for explicit path handling
David M. Carr <david@carrclan.us>
parents:
15911
diff
changeset
|
2637 m = scmutil.match(repo[None], pats, opts) |
2bd54ffaa27e
forget: fix subrepo recursion for explicit path handling
David M. Carr <david@carrclan.us>
parents:
15911
diff
changeset
|
2638 rejected = cmdutil.forget(ui, repo, m, prefix="", explicitonly=False)[0] |
2bd54ffaa27e
forget: fix subrepo recursion for explicit path handling
David M. Carr <david@carrclan.us>
parents:
15911
diff
changeset
|
2639 return rejected and 1 or 0 |
8902
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2640 |
15240
bfb93963bb39
graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents:
15239
diff
changeset
|
2641 @command( |
bfb93963bb39
graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents:
15239
diff
changeset
|
2642 'graft', |
16992
55e7f352b1d3
graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16991
diff
changeset
|
2643 [('r', 'rev', [], _('revisions to graft'), _('REV')), |
55e7f352b1d3
graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16991
diff
changeset
|
2644 ('c', 'continue', False, _('resume interrupted graft')), |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2645 ('e', 'edit', False, _('invoke editor on commit messages')), |
16660
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2646 ('', 'log', None, _('append graft info to log message')), |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2647 ('D', 'currentdate', False, |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2648 _('record the current date as commit date')), |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2649 ('U', 'currentuser', False, |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2650 _('record the current user as committer'), _('DATE'))] |
16389
79fecd735d26
graft: add --dry-run support (issue3362)
Matt Mackall <mpm@selenic.com>
parents:
16373
diff
changeset
|
2651 + commitopts2 + mergetoolopts + dryrunopts, |
16992
55e7f352b1d3
graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16991
diff
changeset
|
2652 _('[OPTION]... [-r] REV...')) |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2653 def graft(ui, repo, *revs, **opts): |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2654 '''copy changes from other branches onto the current branch |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2655 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2656 This command uses Mercurial's merge logic to copy individual |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2657 changes from other branches without merging branches in the |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2658 history graph. This is sometimes known as 'backporting' or |
15242
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2659 'cherry-picking'. By default, graft will copy user, date, and |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2660 description from the source changesets. |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2661 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2662 Changesets that are ancestors of the current revision, that have |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2663 already been grafted, or that are merges will be skipped. |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2664 |
16660
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2665 If --log is specified, log messages will have a comment appended |
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2666 of the form:: |
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2667 |
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2668 (grafted from CHANGESETHASH) |
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2669 |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2670 If a graft merge results in conflicts, the graft process is |
15701
32a6e00e4cfe
graft: use consistent language in help
Kevin Bullock <kbullock@ringworld.org>
parents:
15633
diff
changeset
|
2671 interrupted so that the current merge can be manually resolved. |
32a6e00e4cfe
graft: use consistent language in help
Kevin Bullock <kbullock@ringworld.org>
parents:
15633
diff
changeset
|
2672 Once all conflicts are addressed, the graft process can be |
32a6e00e4cfe
graft: use consistent language in help
Kevin Bullock <kbullock@ringworld.org>
parents:
15633
diff
changeset
|
2673 continued with the -c/--continue option. |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2674 |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2675 .. note:: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2676 The -c/--continue option does not reapply earlier options. |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2677 |
15242
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2678 .. container:: verbose |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2679 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2680 Examples: |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2681 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2682 - copy a single change to the stable branch and edit its description:: |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2683 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2684 hg update stable |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2685 hg graft --edit 9393 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2686 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2687 - graft a range of changesets with one exception, updating dates:: |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2688 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2689 hg graft -D "2085::2093 and not 2091" |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2690 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2691 - continue a graft after resolving conflicts:: |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2692 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2693 hg graft -c |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2694 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2695 - show the source of a grafted changeset:: |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2696 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2697 hg log --debug -r tip |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2698 |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2699 Returns 0 on successful completion. |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2700 ''' |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2701 |
16992
55e7f352b1d3
graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16991
diff
changeset
|
2702 revs = list(revs) |
55e7f352b1d3
graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16991
diff
changeset
|
2703 revs.extend(opts['rev']) |
55e7f352b1d3
graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16991
diff
changeset
|
2704 |
15240
bfb93963bb39
graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents:
15239
diff
changeset
|
2705 if not opts.get('user') and opts.get('currentuser'): |
bfb93963bb39
graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents:
15239
diff
changeset
|
2706 opts['user'] = ui.username() |
bfb93963bb39
graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents:
15239
diff
changeset
|
2707 if not opts.get('date') and opts.get('currentdate'): |
bfb93963bb39
graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents:
15239
diff
changeset
|
2708 opts['date'] = "%d %d" % util.makedate() |
bfb93963bb39
graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents:
15239
diff
changeset
|
2709 |
15239 | 2710 editor = None |
2711 if opts.get('edit'): | |
2712 editor = cmdutil.commitforceeditor | |
2713 | |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2714 cont = False |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2715 if opts['continue']: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2716 cont = True |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2717 if revs: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2718 raise util.Abort(_("can't specify --continue and revisions")) |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2719 # read in unfinished revisions |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2720 try: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2721 nodes = repo.opener.read('graftstate').splitlines() |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2722 revs = [repo[node].rev() for node in nodes] |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2723 except IOError, inst: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2724 if inst.errno != errno.ENOENT: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2725 raise |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2726 raise util.Abort(_("no graft state found, can't continue")) |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2727 else: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2728 cmdutil.bailifchanged(repo) |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2729 if not revs: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2730 raise util.Abort(_('no revisions specified')) |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2731 revs = scmutil.revrange(repo, revs) |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2732 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2733 # check for merges |
15404
c1eb8398fe82
localrepo: convert various repo.set() users to repo.revs()
Matt Mackall <mpm@selenic.com>
parents:
15381
diff
changeset
|
2734 for rev in repo.revs('%ld and merge()', revs): |
c1eb8398fe82
localrepo: convert various repo.set() users to repo.revs()
Matt Mackall <mpm@selenic.com>
parents:
15381
diff
changeset
|
2735 ui.warn(_('skipping ungraftable merge revision %s\n') % rev) |
c1eb8398fe82
localrepo: convert various repo.set() users to repo.revs()
Matt Mackall <mpm@selenic.com>
parents:
15381
diff
changeset
|
2736 revs.remove(rev) |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2737 if not revs: |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2738 return -1 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2739 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2740 # check for ancestors of dest branch |
15404
c1eb8398fe82
localrepo: convert various repo.set() users to repo.revs()
Matt Mackall <mpm@selenic.com>
parents:
15381
diff
changeset
|
2741 for rev in repo.revs('::. and %ld', revs): |
c1eb8398fe82
localrepo: convert various repo.set() users to repo.revs()
Matt Mackall <mpm@selenic.com>
parents:
15381
diff
changeset
|
2742 ui.warn(_('skipping ancestor revision %s\n') % rev) |
c1eb8398fe82
localrepo: convert various repo.set() users to repo.revs()
Matt Mackall <mpm@selenic.com>
parents:
15381
diff
changeset
|
2743 revs.remove(rev) |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2744 if not revs: |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2745 return -1 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2746 |
15508
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2747 # analyze revs for earlier grafts |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2748 ids = {} |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2749 for ctx in repo.set("%ld", revs): |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2750 ids[ctx.hex()] = ctx.rev() |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2751 n = ctx.extra().get('source') |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2752 if n: |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2753 ids[n] = ctx.rev() |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2754 |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2755 # check ancestors for earlier grafts |
15359
a5a8adf95e51
graft: fix duplicate scan message
Matt Mackall <mpm@selenic.com>
parents:
15357
diff
changeset
|
2756 ui.debug('scanning for duplicate grafts\n') |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2757 for ctx in repo.set("::. - ::%ld", revs): |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2758 n = ctx.extra().get('source') |
15508
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2759 if n in ids: |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2760 r = repo[n].rev() |
15360
73628b32d0c0
graft: fix duplicate filter logic
Matt Mackall <mpm@selenic.com>
parents:
15359
diff
changeset
|
2761 if r in revs: |
73628b32d0c0
graft: fix duplicate filter logic
Matt Mackall <mpm@selenic.com>
parents:
15359
diff
changeset
|
2762 ui.warn(_('skipping already grafted revision %s\n') % r) |
73628b32d0c0
graft: fix duplicate filter logic
Matt Mackall <mpm@selenic.com>
parents:
15359
diff
changeset
|
2763 revs.remove(r) |
15508
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2764 elif ids[n] in revs: |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2765 ui.warn(_('skipping already grafted revision %s ' |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2766 '(same origin %d)\n') % (ids[n], r)) |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2767 revs.remove(ids[n]) |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2768 elif ctx.hex() in ids: |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2769 r = ids[ctx.hex()] |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2770 ui.warn(_('skipping already grafted revision %s ' |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2771 '(was grafted from %d)\n') % (r, ctx.rev())) |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2772 revs.remove(r) |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2773 if not revs: |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2774 return -1 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2775 |
16473
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2776 wlock = repo.wlock() |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2777 try: |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2778 for pos, ctx in enumerate(repo.set("%ld", revs)): |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2779 current = repo['.'] |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2780 |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2781 ui.status(_('grafting revision %s\n') % ctx.rev()) |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2782 if opts.get('dry_run'): |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2783 continue |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2784 |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2785 # we don't merge the first commit when continuing |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2786 if not cont: |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2787 # perform the graft merge with p1(rev) as 'ancestor' |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2788 try: |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2789 # ui.forcemerge is an internal variable, do not document |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2790 repo.ui.setconfig('ui', 'forcemerge', opts.get('tool', '')) |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2791 stats = mergemod.update(repo, ctx.node(), True, True, False, |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2792 ctx.p1().node()) |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2793 finally: |
16850
9c86ef980d9e
graft: restore config option on correct ui
Idan Kamara <idankk86@gmail.com>
parents:
16736
diff
changeset
|
2794 repo.ui.setconfig('ui', 'forcemerge', '') |
16473
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2795 # report any conflicts |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2796 if stats and stats[3] > 0: |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2797 # write out state for --continue |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2798 nodelines = [repo[rev].hex() + "\n" for rev in revs[pos:]] |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2799 repo.opener.write('graftstate', ''.join(nodelines)) |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2800 raise util.Abort( |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2801 _("unresolved conflicts, can't continue"), |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2802 hint=_('use hg resolve and hg graft --continue')) |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2803 else: |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2804 cont = False |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2805 |
17045
52ea9ce5b641
graft: don't drop the second parent on unsuccessful merge (issue3498)
Yuya Nishihara <yuya@tcha.org>
parents:
16877
diff
changeset
|
2806 # drop the second merge parent |
52ea9ce5b641
graft: don't drop the second parent on unsuccessful merge (issue3498)
Yuya Nishihara <yuya@tcha.org>
parents:
16877
diff
changeset
|
2807 repo.setparents(current.node(), nullid) |
52ea9ce5b641
graft: don't drop the second parent on unsuccessful merge (issue3498)
Yuya Nishihara <yuya@tcha.org>
parents:
16877
diff
changeset
|
2808 repo.dirstate.write() |
52ea9ce5b641
graft: don't drop the second parent on unsuccessful merge (issue3498)
Yuya Nishihara <yuya@tcha.org>
parents:
16877
diff
changeset
|
2809 # fix up dirstate for copies and renames |
52ea9ce5b641
graft: don't drop the second parent on unsuccessful merge (issue3498)
Yuya Nishihara <yuya@tcha.org>
parents:
16877
diff
changeset
|
2810 cmdutil.duplicatecopies(repo, ctx.rev(), ctx.p1().rev()) |
52ea9ce5b641
graft: don't drop the second parent on unsuccessful merge (issue3498)
Yuya Nishihara <yuya@tcha.org>
parents:
16877
diff
changeset
|
2811 |
16473
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2812 # commit |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2813 source = ctx.extra().get('source') |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2814 if not source: |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2815 source = ctx.hex() |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2816 extra = {'source': source} |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2817 user = ctx.user() |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2818 if opts.get('user'): |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2819 user = opts['user'] |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2820 date = ctx.date() |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2821 if opts.get('date'): |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2822 date = opts['date'] |
16660
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2823 message = ctx.description() |
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2824 if opts.get('log'): |
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2825 message += '\n(grafted from %s)' % ctx.hex() |
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2826 node = repo.commit(text=message, user=user, |
16473
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2827 date=date, extra=extra, editor=editor) |
16600
b54f3c502e63
graft: remark on empty graft
Matt Mackall <mpm@selenic.com>
parents:
16591
diff
changeset
|
2828 if node is None: |
b54f3c502e63
graft: remark on empty graft
Matt Mackall <mpm@selenic.com>
parents:
16591
diff
changeset
|
2829 ui.status(_('graft for revision %s is empty\n') % ctx.rev()) |
16473
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2830 finally: |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
2831 wlock.release() |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2832 |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2833 # remove state when we complete successfully |
16389
79fecd735d26
graft: add --dry-run support (issue3362)
Matt Mackall <mpm@selenic.com>
parents:
16373
diff
changeset
|
2834 if not opts.get('dry_run') and os.path.exists(repo.join('graftstate')): |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2835 util.unlinkpath(repo.join('graftstate')) |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2836 |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2837 return 0 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2838 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2839 @command('grep', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2840 [('0', 'print0', None, _('end fields with NUL')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2841 ('', 'all', None, _('print all revisions that match')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2842 ('a', 'text', None, _('treat all files as text')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2843 ('f', 'follow', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2844 _('follow changeset history,' |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2845 ' or file history across copies and renames')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2846 ('i', 'ignore-case', None, _('ignore case when matching')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2847 ('l', 'files-with-matches', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2848 _('print only filenames and revisions that match')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2849 ('n', 'line-number', None, _('print matching line numbers')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2850 ('r', 'rev', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2851 _('only search files changed within revision range'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2852 ('u', 'user', None, _('list the author (long with -v)')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2853 ('d', 'date', None, _('list the date (short with -q)')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2854 ] + walkopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2855 _('[OPTION]... PATTERN [FILE]...')) |
1108
7a75d8fbbdaf
Remove some options from 'hg grep':
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1106
diff
changeset
|
2856 def grep(ui, repo, pattern, *pats, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2857 """search for a pattern in specified files and revisions |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2858 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2859 Search revisions of files for a regular expression. |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2860 |
6448
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
2861 This command behaves differently than Unix grep. It only accepts |
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
2862 Python/Perl regexps. It searches repository history, not the |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
2863 working directory. It always prints the revision number in which a |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
2864 match appears. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2865 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2866 By default, grep only prints output for the first revision of a |
6448
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
2867 file in which it finds a match. To get it to print every revision |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2868 that contains a change in match status ("-" for a match that |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2869 becomes a non-match, or "+" for a non-match that becomes a match), |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2870 use the --all flag. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2871 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2872 Returns 0 if a match is found, 1 otherwise. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2873 """ |
15765
1ef46bcd76f8
grep: make multiline mode the default (BC)
Matt Mackall <mpm@selenic.com>
parents:
15744
diff
changeset
|
2874 reflags = re.M |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
2875 if opts.get('ignore_case'): |
1065
6e94c0365d98
Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1062
diff
changeset
|
2876 reflags |= re.I |
4877
242026115e6a
hg grep: handle re.compile errors & update tests/test-grep
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
4835
diff
changeset
|
2877 try: |
242026115e6a
hg grep: handle re.compile errors & update tests/test-grep
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
4835
diff
changeset
|
2878 regexp = re.compile(pattern, reflags) |
12385
9a93f4fb141b
grep: only catch re.error when compiling regular expressions
Brodie Rao <brodie@bitheap.org>
parents:
12382
diff
changeset
|
2879 except re.error, inst: |
6057
218d5b9aa466
Remove trailing ! from two error messages as this was confusing.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6048
diff
changeset
|
2880 ui.warn(_("grep: invalid match pattern: %s\n") % inst) |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2881 return 1 |
1146
9061f79c6c6f
grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents:
1145
diff
changeset
|
2882 sep, eol = ':', '\n' |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
2883 if opts.get('print0'): |
1146
9061f79c6c6f
grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents:
1145
diff
changeset
|
2884 sep = eol = '\0' |
1057 | 2885 |
9097
431462bd8478
fix memory usage of revlog caches by limiting cache size [issue1639]
Matt Mackall <mpm@selenic.com>
parents:
8995
diff
changeset
|
2886 getfile = util.lrucachefunc(repo.file) |
1057 | 2887 |
2888 def matchlines(body): | |
1059
4eab07ef66e2
grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents:
1058
diff
changeset
|
2889 begin = 0 |
4eab07ef66e2
grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents:
1058
diff
changeset
|
2890 linenum = 0 |
4eab07ef66e2
grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents:
1058
diff
changeset
|
2891 while True: |
4eab07ef66e2
grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents:
1058
diff
changeset
|
2892 match = regexp.search(body, begin) |
1065
6e94c0365d98
Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1062
diff
changeset
|
2893 if not match: |
6e94c0365d98
Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1062
diff
changeset
|
2894 break |
1059
4eab07ef66e2
grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents:
1058
diff
changeset
|
2895 mstart, mend = match.span() |
4eab07ef66e2
grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents:
1058
diff
changeset
|
2896 linenum += body.count('\n', begin, mstart) + 1 |
4eab07ef66e2
grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents:
1058
diff
changeset
|
2897 lstart = body.rfind('\n', begin, mstart) + 1 or begin |
15293
0e34699d6988
grep: correct handling of matching lines without line ending (issue3050)
Mads Kiilerich <mads@kiilerich.com>
parents:
15278
diff
changeset
|
2898 begin = body.find('\n', mend) + 1 or len(body) + 1 |
7230
261a9f47b44b
grep: avoid infinite loop when trailing newline is missing
Matt Mackall <mpm@selenic.com>
parents:
7228
diff
changeset
|
2899 lend = begin - 1 |
1059
4eab07ef66e2
grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents:
1058
diff
changeset
|
2900 yield linenum, mstart - lstart, mend - lstart, body[lstart:lend] |
1057 | 2901 |
1559
59b3639df0a9
Convert all classes to new-style classes by deriving them from object.
Eric Hopper <hopper@omnifarious.org>
parents:
1552
diff
changeset
|
2902 class linestate(object): |
1057 | 2903 def __init__(self, line, linenum, colstart, colend): |
2904 self.line = line | |
2905 self.linenum = linenum | |
2906 self.colstart = colstart | |
2907 self.colend = colend | |
2869
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2908 |
6469
fb502719c75c
python 2.6 compatibility: add __hash__ to classes that have __eq__
Paul Moore <p.f.moore@gmail.com>
parents:
6468
diff
changeset
|
2909 def __hash__(self): |
fb502719c75c
python 2.6 compatibility: add __hash__ to classes that have __eq__
Paul Moore <p.f.moore@gmail.com>
parents:
6468
diff
changeset
|
2910 return hash((self.linenum, self.line)) |
fb502719c75c
python 2.6 compatibility: add __hash__ to classes that have __eq__
Paul Moore <p.f.moore@gmail.com>
parents:
6468
diff
changeset
|
2911 |
1065
6e94c0365d98
Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1062
diff
changeset
|
2912 def __eq__(self, other): |
6e94c0365d98
Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1062
diff
changeset
|
2913 return self.line == other.line |
1057 | 2914 |
2915 matches = {} | |
2870
8eaaf1321bfe
grep: add --follow support.
Brendan Cully <brendan@kublai.com>
parents:
2869
diff
changeset
|
2916 copies = {} |
1057 | 2917 def grepbody(fn, rev, body): |
2869
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2918 matches[rev].setdefault(fn, []) |
1057 | 2919 m = matches[rev][fn] |
2920 for lnum, cstart, cend, line in matchlines(body): | |
2921 s = linestate(line, lnum, cstart, cend) | |
2869
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2922 m.append(s) |
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2923 |
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2924 def difflinestates(a, b): |
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2925 sm = difflib.SequenceMatcher(None, a, b) |
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2926 for tag, alo, ahi, blo, bhi in sm.get_opcodes(): |
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2927 if tag == 'insert': |
3472
df7202f6887c
use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3471
diff
changeset
|
2928 for i in xrange(blo, bhi): |
2869
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2929 yield ('+', b[i]) |
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2930 elif tag == 'delete': |
3472
df7202f6887c
use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3471
diff
changeset
|
2931 for i in xrange(alo, ahi): |
2869
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2932 yield ('-', a[i]) |
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2933 elif tag == 'replace': |
3472
df7202f6887c
use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3471
diff
changeset
|
2934 for i in xrange(alo, ahi): |
2869
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2935 yield ('-', a[i]) |
3472
df7202f6887c
use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3471
diff
changeset
|
2936 for i in xrange(blo, bhi): |
2869
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2937 yield ('+', b[i]) |
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2938 |
9655
6d7d3f849062
walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents:
9654
diff
changeset
|
2939 def display(fn, ctx, pstates, states): |
6d7d3f849062
walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents:
9654
diff
changeset
|
2940 rev = ctx.rev() |
6134
7b937b26adf7
Make annotae/grep print short dates with -q/--quiet.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6133
diff
changeset
|
2941 datefunc = ui.quiet and util.shortdate or util.datestr |
3951
cb66641cdee3
grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3950
diff
changeset
|
2942 found = False |
1146
9061f79c6c6f
grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents:
1145
diff
changeset
|
2943 filerevmatches = {} |
13920
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
2944 def binary(): |
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
2945 flog = getfile(fn) |
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
2946 return util.binary(flog.read(ctx.filenode(fn))) |
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
2947 |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
2948 if opts.get('all'): |
8849
80cc4b1a62d0
compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
8834
diff
changeset
|
2949 iter = difflinestates(pstates, states) |
2869
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
2950 else: |
8849
80cc4b1a62d0
compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
8834
diff
changeset
|
2951 iter = [('', l) for l in states] |
3951
cb66641cdee3
grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3950
diff
changeset
|
2952 for change, l in iter: |
9655
6d7d3f849062
walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents:
9654
diff
changeset
|
2953 cols = [fn, str(rev)] |
10816
635d601e8f21
grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10654
diff
changeset
|
2954 before, match, after = None, None, None |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
2955 if opts.get('line_number'): |
1615
83238c1db6de
Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1607
diff
changeset
|
2956 cols.append(str(l.linenum)) |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
2957 if opts.get('all'): |
1615
83238c1db6de
Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1607
diff
changeset
|
2958 cols.append(change) |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
2959 if opts.get('user'): |
9655
6d7d3f849062
walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents:
9654
diff
changeset
|
2960 cols.append(ui.shortuser(ctx.user())) |
6133
779f2309d67a
Add hg grep -d/--date to list the commit date of matched revisions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6109
diff
changeset
|
2961 if opts.get('date'): |
9655
6d7d3f849062
walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents:
9654
diff
changeset
|
2962 cols.append(datefunc(ctx.date())) |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
2963 if opts.get('files_with_matches'): |
9655
6d7d3f849062
walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents:
9654
diff
changeset
|
2964 c = (fn, rev) |
1615
83238c1db6de
Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1607
diff
changeset
|
2965 if c in filerevmatches: |
83238c1db6de
Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1607
diff
changeset
|
2966 continue |
1146
9061f79c6c6f
grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents:
1145
diff
changeset
|
2967 filerevmatches[c] = 1 |
9061f79c6c6f
grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents:
1145
diff
changeset
|
2968 else: |
10816
635d601e8f21
grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10654
diff
changeset
|
2969 before = l.line[:l.colstart] |
635d601e8f21
grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10654
diff
changeset
|
2970 match = l.line[l.colstart:l.colend] |
635d601e8f21
grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10654
diff
changeset
|
2971 after = l.line[l.colend:] |
635d601e8f21
grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10654
diff
changeset
|
2972 ui.write(sep.join(cols)) |
635d601e8f21
grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10654
diff
changeset
|
2973 if before is not None: |
13920
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
2974 if not opts.get('text') and binary(): |
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
2975 ui.write(sep + " Binary file matches") |
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
2976 else: |
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
2977 ui.write(sep + before) |
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
2978 ui.write(match, label='grep.match') |
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
2979 ui.write(after) |
10816
635d601e8f21
grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10654
diff
changeset
|
2980 ui.write(eol) |
3951
cb66641cdee3
grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3950
diff
changeset
|
2981 found = True |
cb66641cdee3
grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3950
diff
changeset
|
2982 return found |
1057 | 2983 |
1145
bd917e1a26dd
grep: change default to printing first matching rev.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1116
diff
changeset
|
2984 skip = {} |
8849
80cc4b1a62d0
compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
8834
diff
changeset
|
2985 revfiles = {} |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
2986 matchfn = scmutil.match(repo[None], pats, opts) |
3951
cb66641cdee3
grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3950
diff
changeset
|
2987 found = False |
2870
8eaaf1321bfe
grep: add --follow support.
Brendan Cully <brendan@kublai.com>
parents:
2869
diff
changeset
|
2988 follow = opts.get('follow') |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
2989 |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
2990 def prep(ctx, fns): |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
2991 rev = ctx.rev() |
13878
a8d13ee0ce68
misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents:
13855
diff
changeset
|
2992 pctx = ctx.p1() |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
2993 parent = pctx.rev() |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
2994 matches.setdefault(rev, {}) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
2995 matches.setdefault(parent, {}) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
2996 files = revfiles.setdefault(rev, []) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
2997 for fn in fns: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
2998 flog = getfile(fn) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
2999 try: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3000 fnode = ctx.filenode(fn) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3001 except error.LookupError: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3002 continue |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3003 |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3004 copied = flog.renamed(fnode) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3005 copy = follow and copied and copied[0] |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3006 if copy: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3007 copies.setdefault(rev, {})[fn] = copy |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3008 if fn in skip: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3009 if copy: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3010 skip[copy] = True |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3011 continue |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3012 files.append(fn) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3013 |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3014 if fn not in matches[rev]: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3015 grepbody(fn, rev, flog.read(fnode)) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3016 |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3017 pfn = copy or fn |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3018 if pfn not in matches[parent]: |
1057 | 3019 try: |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3020 fnode = pctx.filenode(pfn) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3021 grepbody(pfn, parent, flog.read(fnode)) |
7633 | 3022 except error.LookupError: |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3023 pass |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3024 |
9665
1de5ebfa5585
walkchangerevs: drop ui arg
Matt Mackall <mpm@selenic.com>
parents:
9663
diff
changeset
|
3025 for ctx in cmdutil.walkchangerevs(repo, matchfn, opts, prep): |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3026 rev = ctx.rev() |
13878
a8d13ee0ce68
misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents:
13855
diff
changeset
|
3027 parent = ctx.p1().rev() |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3028 for fn in sorted(revfiles.get(rev, [])): |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3029 states = matches[rev][fn] |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3030 copy = copies.get(rev, {}).get(fn) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3031 if fn in skip: |
8849
80cc4b1a62d0
compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
8834
diff
changeset
|
3032 if copy: |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3033 skip[copy] = True |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3034 continue |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3035 pstates = matches.get(parent, {}).get(copy or fn, []) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3036 if pstates or states: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3037 r = display(fn, ctx, pstates, states) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3038 found = found or r |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3039 if r and not opts.get('all'): |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3040 skip[fn] = True |
8849
80cc4b1a62d0
compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
8834
diff
changeset
|
3041 if copy: |
80cc4b1a62d0
compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
8834
diff
changeset
|
3042 skip[copy] = True |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3043 del matches[rev] |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3044 del revfiles[rev] |
1057 | 3045 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3046 return not found |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3047 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3048 @command('heads', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3049 [('r', 'rev', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3050 _('show only heads which are descendants of STARTREV'), _('STARTREV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3051 ('t', 'topo', False, _('show topological heads only')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3052 ('a', 'active', False, _('show active branchheads only (DEPRECATED)')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3053 ('c', 'closed', False, _('show normal and closed branch heads')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3054 ] + templateopts, |
16869
00e1e40d709c
help: drop -a from heads syntax summary (issue3483)
Matt Mackall <mpm@selenic.com>
parents:
16850
diff
changeset
|
3055 _('[-ct] [-r STARTREV] [REV]...')) |
4648
8e503fa54d2d
Add option to heads to show only heads for current branch.
Eric Hopper <hopper@omnifarious.org>
parents:
4646
diff
changeset
|
3056 def heads(ui, repo, *branchrevs, **opts): |
8e503fa54d2d
Add option to heads to show only heads for current branch.
Eric Hopper <hopper@omnifarious.org>
parents:
4646
diff
changeset
|
3057 """show current repository heads or show branch heads |
8e503fa54d2d
Add option to heads to show only heads for current branch.
Eric Hopper <hopper@omnifarious.org>
parents:
4646
diff
changeset
|
3058 |
10350
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3059 With no arguments, show all repository branch heads. |
4648
8e503fa54d2d
Add option to heads to show only heads for current branch.
Eric Hopper <hopper@omnifarious.org>
parents:
4646
diff
changeset
|
3060 |
9502
8d7d68dd91fd
commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents:
9189
diff
changeset
|
3061 Repository "heads" are changesets with no child changesets. They are |
8d7d68dd91fd
commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents:
9189
diff
changeset
|
3062 where development generally takes place and are the usual targets |
10350
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3063 for update and merge operations. Branch heads are changesets that have |
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3064 no child changeset on the same branch. |
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3065 |
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3066 If one or more REVs are given, only branch heads on the branches |
15044
39eb2e86fb11
commands: clarify that 'hg heads foo' shows heads on branch foo
Martin Geisler <mg@aragost.com>
parents:
15042
diff
changeset
|
3067 associated with the specified changesets are shown. This means |
39eb2e86fb11
commands: clarify that 'hg heads foo' shows heads on branch foo
Martin Geisler <mg@aragost.com>
parents:
15042
diff
changeset
|
3068 that you can use :hg:`heads foo` to see the heads on a branch |
39eb2e86fb11
commands: clarify that 'hg heads foo' shows heads on branch foo
Martin Geisler <mg@aragost.com>
parents:
15042
diff
changeset
|
3069 named ``foo``. |
9502
8d7d68dd91fd
commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents:
9189
diff
changeset
|
3070 |
8d7d68dd91fd
commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents:
9189
diff
changeset
|
3071 If -c/--closed is specified, also show branch heads marked closed |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
3072 (see :hg:`commit --close-branch`). |
9502
8d7d68dd91fd
commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents:
9189
diff
changeset
|
3073 |
8d7d68dd91fd
commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents:
9189
diff
changeset
|
3074 If STARTREV is specified, only those heads that are descendants of |
8d7d68dd91fd
commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents:
9189
diff
changeset
|
3075 STARTREV will be displayed. |
10350
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3076 |
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3077 If -t/--topo is specified, named branch mechanics will be ignored and only |
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3078 changesets without children will be shown. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3079 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3080 Returns 0 if matching heads are found, 1 if not. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3081 """ |
10328
0798a3d5f812
commands: simplify heads a little bit before I start hacking it up
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10326
diff
changeset
|
3082 |
12925
6eab8f0df2ca
commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents:
12918
diff
changeset
|
3083 start = None |
6eab8f0df2ca
commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents:
12918
diff
changeset
|
3084 if 'rev' in opts: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
3085 start = scmutil.revsingle(repo, opts['rev'], None).node() |
10328
0798a3d5f812
commands: simplify heads a little bit before I start hacking it up
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10326
diff
changeset
|
3086 |
10350
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3087 if opts.get('topo'): |
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3088 heads = [repo[h] for h in repo.heads(start)] |
1550
ccb9b62de892
add a -r/--rev option to heads to show only heads descendant from rev
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1547
diff
changeset
|
3089 else: |
10348
0fc5222c0951
commands: externalize branchheads so we can do it for all branches at once
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10347
diff
changeset
|
3090 heads = [] |
14466
bd34a027f3ed
commands: use repo.branchheads in heads command
Martin Geisler <mg@aragost.com>
parents:
14465
diff
changeset
|
3091 for branch in repo.branchmap(): |
bd34a027f3ed
commands: use repo.branchheads in heads command
Martin Geisler <mg@aragost.com>
parents:
14465
diff
changeset
|
3092 heads += repo.branchheads(branch, start, opts.get('closed')) |
bd34a027f3ed
commands: use repo.branchheads in heads command
Martin Geisler <mg@aragost.com>
parents:
14465
diff
changeset
|
3093 heads = [repo[h] for h in heads] |
10350
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3094 |
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3095 if branchrevs: |
13047
6c375e07d673
branch: operate on branch names in local string space where possible
Matt Mackall <mpm@selenic.com>
parents:
13022
diff
changeset
|
3096 branches = set(repo[br].branch() for br in branchrevs) |
10350
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3097 heads = [h for h in heads if h.branch() in branches] |
10328
0798a3d5f812
commands: simplify heads a little bit before I start hacking it up
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10326
diff
changeset
|
3098 |
10349
20356e69710c
commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10348
diff
changeset
|
3099 if opts.get('active') and branchrevs: |
20356e69710c
commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10348
diff
changeset
|
3100 dagheads = repo.heads(start) |
10350
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3101 heads = [h for h in heads if h.node() in dagheads] |
10349
20356e69710c
commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10348
diff
changeset
|
3102 |
20356e69710c
commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10348
diff
changeset
|
3103 if branchrevs: |
10350
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3104 haveheads = set(h.branch() for h in heads) |
10346
e2db50cae6e6
commands: don't do too much work for error messages
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10345
diff
changeset
|
3105 if branches - haveheads: |
13047
6c375e07d673
branch: operate on branch names in local string space where possible
Matt Mackall <mpm@selenic.com>
parents:
13022
diff
changeset
|
3106 headless = ', '.join(b for b in branches - haveheads) |
10346
e2db50cae6e6
commands: don't do too much work for error messages
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10345
diff
changeset
|
3107 msg = _('no open branch heads found on branches %s') |
e2db50cae6e6
commands: don't do too much work for error messages
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10345
diff
changeset
|
3108 if opts.get('rev'): |
16231
ce292f1379ba
i18n: fix all remaining uses of % inside _()
Matt Mackall <mpm@selenic.com>
parents:
16230
diff
changeset
|
3109 msg += _(' (started at %s)') % opts['rev'] |
10346
e2db50cae6e6
commands: don't do too much work for error messages
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10345
diff
changeset
|
3110 ui.warn((msg + '\n') % headless) |
e2db50cae6e6
commands: don't do too much work for error messages
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10345
diff
changeset
|
3111 |
4648
8e503fa54d2d
Add option to heads to show only heads for current branch.
Eric Hopper <hopper@omnifarious.org>
parents:
4646
diff
changeset
|
3112 if not heads: |
8e503fa54d2d
Add option to heads to show only heads for current branch.
Eric Hopper <hopper@omnifarious.org>
parents:
4646
diff
changeset
|
3113 return 1 |
10328
0798a3d5f812
commands: simplify heads a little bit before I start hacking it up
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10326
diff
changeset
|
3114 |
10350
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3115 heads = sorted(heads, key=lambda x: -x.rev()) |
3643
b4ad640a3bcf
templates: move changeset templating bits to cmdutils
Matt Mackall <mpm@selenic.com>
parents:
3631
diff
changeset
|
3116 displayer = cmdutil.show_changeset(ui, repo, opts) |
10331
ec5240a22f4a
commands: always order heads recent to oldest
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10330
diff
changeset
|
3117 for ctx in heads: |
ec5240a22f4a
commands: always order heads recent to oldest
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10330
diff
changeset
|
3118 displayer.show(ctx) |
10152
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
3119 displayer.close() |
221 | 3120 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3121 @command('help', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3122 [('e', 'extension', None, _('show only help for extensions')), |
16711
497deec204d1
help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents:
16708
diff
changeset
|
3123 ('c', 'command', None, _('show only help for commands')), |
497deec204d1
help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents:
16708
diff
changeset
|
3124 ('k', 'keyword', '', _('show topics matching keyword')), |
497deec204d1
help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents:
16708
diff
changeset
|
3125 ], |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3126 _('[-ec] [TOPIC]')) |
15020 | 3127 def help_(ui, name=None, unknowncmd=False, full=True, **opts): |
7210 | 3128 """show help for a given topic or a help overview |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3129 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3130 With no arguments, print a list of commands with short help messages. |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3131 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3132 Given a topic, extension, or command name, print help for that |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3133 topic. |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3134 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3135 Returns 0 if successful. |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3136 """ |
15023
157a294444b2
help: move option text display into a helper function
Matt Mackall <mpm@selenic.com>
parents:
15022
diff
changeset
|
3137 |
13608
63ab6b0ccedc
help: limit documentation width to at most 80 characters
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
13601
diff
changeset
|
3138 textwidth = min(ui.termwidth(), 80) - 2 |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3139 |
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3140 def helpcmd(name): |
6652
ffcf8e82f647
help: enable listing of a subset of the command list
Johannes Stezenbach <js@sig21.net>
parents:
6642
diff
changeset
|
3141 try: |
10364
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3142 aliases, entry = cmdutil.findcmd(name, table, strict=unknowncmd) |
7643
9a1ea6587557
error: move UnknownCommand and AmbiguousCommand
Matt Mackall <mpm@selenic.com>
parents:
7637
diff
changeset
|
3143 except error.AmbiguousCommand, inst: |
9035
8e34f363dd77
compat: don't reference an exception var inside a lambda
Alejandro Santos <alejolp@alejolp.com>
parents:
9031
diff
changeset
|
3144 # py3k fix: except vars can't be used outside the scope of the |
8e34f363dd77
compat: don't reference an exception var inside a lambda
Alejandro Santos <alejolp@alejolp.com>
parents:
9031
diff
changeset
|
3145 # except block, nor can be used inside a lambda. python issue4617 |
8e34f363dd77
compat: don't reference an exception var inside a lambda
Alejandro Santos <alejolp@alejolp.com>
parents:
9031
diff
changeset
|
3146 prefix = inst.args[0] |
8e34f363dd77
compat: don't reference an exception var inside a lambda
Alejandro Santos <alejolp@alejolp.com>
parents:
9031
diff
changeset
|
3147 select = lambda c: c.lstrip('^').startswith(prefix) |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3148 rst = helplist(select) |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3149 return rst |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3150 |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3151 rst = [] |
6652
ffcf8e82f647
help: enable listing of a subset of the command list
Johannes Stezenbach <js@sig21.net>
parents:
6642
diff
changeset
|
3152 |
10021
0022f5c5459e
help: don't display bogus help messages for invalid aliases
Brodie Rao <me+hg@dackz.net>
parents:
10015
diff
changeset
|
3153 # check if it's an invalid alias and display its error if it is |
0022f5c5459e
help: don't display bogus help messages for invalid aliases
Brodie Rao <me+hg@dackz.net>
parents:
10015
diff
changeset
|
3154 if getattr(entry[0], 'badalias', False): |
10364
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3155 if not unknowncmd: |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3156 ui.pushbuffer() |
10364
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3157 entry[0](ui) |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3158 rst.append(ui.popbuffer()) |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3159 return rst |
15203
c7ce651a6bc9
help: generate command help into a single RST string for formatting
Matt Mackall <mpm@selenic.com>
parents:
15202
diff
changeset
|
3160 |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3161 # synopsis |
9901
cb2a1836c50a
commands: minor refactoring
Henri Wiechers <hwiechers@gmail.com>
parents:
9894
diff
changeset
|
3162 if len(entry) > 2: |
cb2a1836c50a
commands: minor refactoring
Henri Wiechers <hwiechers@gmail.com>
parents:
9894
diff
changeset
|
3163 if entry[2].startswith('hg'): |
16818
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3164 rst.append("%s\n" % entry[2]) |
7364
ad7f736f3214
help: remove redundant 'hg <command>' from command synopses
Matt Mackall <mpm@selenic.com>
parents:
7361
diff
changeset
|
3165 else: |
16818
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3166 rst.append('hg %s %s\n' % (aliases[0], entry[2])) |
7364
ad7f736f3214
help: remove redundant 'hg <command>' from command synopses
Matt Mackall <mpm@selenic.com>
parents:
7361
diff
changeset
|
3167 else: |
16818
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3168 rst.append('hg %s\n' % aliases[0]) |
5783
28d9f8cd02f2
Move aliases section in help below synopsis (issue362)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
5781
diff
changeset
|
3169 # aliases |
13950
14d0553bd48b
help: do not show full help text for command on option errors
Adrian Buehlmann <adrian@cadifra.com>
parents:
13920
diff
changeset
|
3170 if full and not ui.quiet and len(aliases) > 1: |
16818
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3171 rst.append(_("\naliases: %s\n") % ', '.join(aliases[1:])) |
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3172 rst.append('\n') |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3173 |
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3174 # description |
9901
cb2a1836c50a
commands: minor refactoring
Henri Wiechers <hwiechers@gmail.com>
parents:
9894
diff
changeset
|
3175 doc = gettext(entry[0].__doc__) |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3176 if not doc: |
7598 | 3177 doc = _("(no help text available)") |
14954
ce7e3014fda7
help command: use safehasattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents:
14949
diff
changeset
|
3178 if util.safehasattr(entry[0], 'definition'): # aliased command |
11524
24965bb270b7
dispatch: add shell aliases
Steve Losh <steve@stevelosh.com>
parents:
11515
diff
changeset
|
3179 if entry[0].definition.startswith('!'): # shell alias |
24965bb270b7
dispatch: add shell aliases
Steve Losh <steve@stevelosh.com>
parents:
11515
diff
changeset
|
3180 doc = _('shell alias for::\n\n %s') % entry[0].definition[1:] |
24965bb270b7
dispatch: add shell aliases
Steve Losh <steve@stevelosh.com>
parents:
11515
diff
changeset
|
3181 else: |
24965bb270b7
dispatch: add shell aliases
Steve Losh <steve@stevelosh.com>
parents:
11515
diff
changeset
|
3182 doc = _('alias for: hg %s\n\n%s') % (entry[0].definition, doc) |
16818
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3183 doc = doc.splitlines(True) |
13950
14d0553bd48b
help: do not show full help text for command on option errors
Adrian Buehlmann <adrian@cadifra.com>
parents:
13920
diff
changeset
|
3184 if ui.quiet or not full: |
16818
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3185 rst.append(doc[0]) |
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3186 else: |
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3187 rst.extend(doc) |
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3188 rst.append('\n') |
4315
bc6f5a1d8b7b
Add a pointer to "hg -v help" to the bottom of hg help {,cmd} output
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4267
diff
changeset
|
3189 |
14285
aa64a87b493d
help: give hint about 'hg help -e' when appropriate
Martin Geisler <mg@aragost.com>
parents:
14284
diff
changeset
|
3190 # check if this command shadows a non-trivial (multi-line) |
aa64a87b493d
help: give hint about 'hg help -e' when appropriate
Martin Geisler <mg@aragost.com>
parents:
14284
diff
changeset
|
3191 # extension help text |
aa64a87b493d
help: give hint about 'hg help -e' when appropriate
Martin Geisler <mg@aragost.com>
parents:
14284
diff
changeset
|
3192 try: |
aa64a87b493d
help: give hint about 'hg help -e' when appropriate
Martin Geisler <mg@aragost.com>
parents:
14284
diff
changeset
|
3193 mod = extensions.find(name) |
aa64a87b493d
help: give hint about 'hg help -e' when appropriate
Martin Geisler <mg@aragost.com>
parents:
14284
diff
changeset
|
3194 doc = gettext(mod.__doc__) or '' |
aa64a87b493d
help: give hint about 'hg help -e' when appropriate
Martin Geisler <mg@aragost.com>
parents:
14284
diff
changeset
|
3195 if '\n' in doc.strip(): |
aa64a87b493d
help: give hint about 'hg help -e' when appropriate
Martin Geisler <mg@aragost.com>
parents:
14284
diff
changeset
|
3196 msg = _('use "hg help -e %s" to show help for ' |
aa64a87b493d
help: give hint about 'hg help -e' when appropriate
Martin Geisler <mg@aragost.com>
parents:
14284
diff
changeset
|
3197 'the %s extension') % (name, name) |
16818
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3198 rst.append('\n%s\n' % msg) |
14285
aa64a87b493d
help: give hint about 'hg help -e' when appropriate
Martin Geisler <mg@aragost.com>
parents:
14284
diff
changeset
|
3199 except KeyError: |
aa64a87b493d
help: give hint about 'hg help -e' when appropriate
Martin Geisler <mg@aragost.com>
parents:
14284
diff
changeset
|
3200 pass |
aa64a87b493d
help: give hint about 'hg help -e' when appropriate
Martin Geisler <mg@aragost.com>
parents:
14284
diff
changeset
|
3201 |
15203
c7ce651a6bc9
help: generate command help into a single RST string for formatting
Matt Mackall <mpm@selenic.com>
parents:
15202
diff
changeset
|
3202 # options |
c7ce651a6bc9
help: generate command help into a single RST string for formatting
Matt Mackall <mpm@selenic.com>
parents:
15202
diff
changeset
|
3203 if not ui.quiet and entry[1]: |
16818
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3204 rst.append('\n%s\n\n' % _("options:")) |
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3205 rst.append(help.optrst(entry[1], ui.verbose)) |
15203
c7ce651a6bc9
help: generate command help into a single RST string for formatting
Matt Mackall <mpm@selenic.com>
parents:
15202
diff
changeset
|
3206 |
c7ce651a6bc9
help: generate command help into a single RST string for formatting
Matt Mackall <mpm@selenic.com>
parents:
15202
diff
changeset
|
3207 if ui.verbose: |
16818
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3208 rst.append('\n%s\n\n' % _("global options:")) |
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3209 rst.append(help.optrst(globalopts, ui.verbose)) |
15203
c7ce651a6bc9
help: generate command help into a single RST string for formatting
Matt Mackall <mpm@selenic.com>
parents:
15202
diff
changeset
|
3210 |
c7ce651a6bc9
help: generate command help into a single RST string for formatting
Matt Mackall <mpm@selenic.com>
parents:
15202
diff
changeset
|
3211 if not ui.verbose: |
c7ce651a6bc9
help: generate command help into a single RST string for formatting
Matt Mackall <mpm@selenic.com>
parents:
15202
diff
changeset
|
3212 if not full: |
16818
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3213 rst.append(_('\nuse "hg help %s" to show the full help text\n') |
15203
c7ce651a6bc9
help: generate command help into a single RST string for formatting
Matt Mackall <mpm@selenic.com>
parents:
15202
diff
changeset
|
3214 % name) |
c7ce651a6bc9
help: generate command help into a single RST string for formatting
Matt Mackall <mpm@selenic.com>
parents:
15202
diff
changeset
|
3215 elif not ui.quiet: |
16818
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3216 rst.append(_('\nuse "hg -v help %s" to show more info\n') |
d0fc1e689227
help: format command help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16817
diff
changeset
|
3217 % name) |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3218 return rst |
15203
c7ce651a6bc9
help: generate command help into a single RST string for formatting
Matt Mackall <mpm@selenic.com>
parents:
15202
diff
changeset
|
3219 |
15128
aaf666bd2942
help: move option list display into subfunctions
Matt Mackall <mpm@selenic.com>
parents:
15127
diff
changeset
|
3220 |
15127
2c80862728cb
help: fold header selection into helplist
Matt Mackall <mpm@selenic.com>
parents:
15126
diff
changeset
|
3221 def helplist(select=None): |
2c80862728cb
help: fold header selection into helplist
Matt Mackall <mpm@selenic.com>
parents:
15126
diff
changeset
|
3222 # list of commands |
2c80862728cb
help: fold header selection into helplist
Matt Mackall <mpm@selenic.com>
parents:
15126
diff
changeset
|
3223 if name == "shortlist": |
2c80862728cb
help: fold header selection into helplist
Matt Mackall <mpm@selenic.com>
parents:
15126
diff
changeset
|
3224 header = _('basic commands:\n\n') |
2c80862728cb
help: fold header selection into helplist
Matt Mackall <mpm@selenic.com>
parents:
15126
diff
changeset
|
3225 else: |
2c80862728cb
help: fold header selection into helplist
Matt Mackall <mpm@selenic.com>
parents:
15126
diff
changeset
|
3226 header = _('list of commands:\n\n') |
2c80862728cb
help: fold header selection into helplist
Matt Mackall <mpm@selenic.com>
parents:
15126
diff
changeset
|
3227 |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3228 h = {} |
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3229 cmds = {} |
7622
4dd7b28003d2
use dict.iteritems() rather than dict.items()
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7598
diff
changeset
|
3230 for c, e in table.iteritems(): |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3231 f = c.split("|", 1)[0] |
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3232 if select and not select(f): |
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3233 continue |
7197
f60730693efc
help: show extension commands in short list, separate extension list in help
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7196
diff
changeset
|
3234 if (not select and name != 'shortlist' and |
f60730693efc
help: show extension commands in short list, separate extension list in help
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7196
diff
changeset
|
3235 e[0].__module__ != __name__): |
7126
111813de4188
remove extension commands from global help
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7125
diff
changeset
|
3236 continue |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3237 if name == "shortlist" and not f.startswith("^"): |
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3238 continue |
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3239 f = f.lstrip("^") |
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3240 if not ui.debugflag and f.startswith("debug"): |
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3241 continue |
9128
98d90ad54749
commands: hide deprecated commands.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9097
diff
changeset
|
3242 doc = e[0].__doc__ |
98d90ad54749
commands: hide deprecated commands.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9097
diff
changeset
|
3243 if doc and 'DEPRECATED' in doc and not ui.verbose: |
98d90ad54749
commands: hide deprecated commands.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9097
diff
changeset
|
3244 continue |
98d90ad54749
commands: hide deprecated commands.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9097
diff
changeset
|
3245 doc = gettext(doc) |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3246 if not doc: |
7598 | 3247 doc = _("(no help text available)") |
9136
31177742f54a
for calls expecting bool args, pass bool instead of int
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
9102
diff
changeset
|
3248 h[f] = doc.splitlines()[0].rstrip() |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3249 cmds[f] = c.lstrip("^") |
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3250 |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3251 rst = [] |
4950
93b7e2fa7ee3
help: avoid traceback if an extension has only debug commands
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4942
diff
changeset
|
3252 if not h: |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3253 if not ui.quiet: |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3254 rst.append(_('no commands defined\n')) |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3255 return rst |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3256 |
16853
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3257 if not ui.quiet: |
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3258 rst.append(header) |
8209
a1a5a57efe90
replace util.sort with sorted built-in
Matt Mackall <mpm@selenic.com>
parents:
8190
diff
changeset
|
3259 fns = sorted(h) |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3260 for f in fns: |
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3261 if ui.verbose: |
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3262 commands = cmds[f].replace("|",", ") |
16853
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3263 rst.append(" :%s: %s\n" % (commands, h[f])) |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3264 else: |
16853
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3265 rst.append(' :%s: %s\n' % (f, h[f])) |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3266 |
15126
d3ad0e9d4be2
help: fold some list help clauses into the helplist function
Matt Mackall <mpm@selenic.com>
parents:
15125
diff
changeset
|
3267 if not name: |
16853
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3268 exts = help.listexts(_('enabled extensions:'), extensions.enabled()) |
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3269 if exts: |
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3270 rst.append('\n') |
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3271 rst.extend(exts) |
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3272 |
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3273 rst.append(_("\nadditional help topics:\n\n")) |
15126
d3ad0e9d4be2
help: fold some list help clauses into the helplist function
Matt Mackall <mpm@selenic.com>
parents:
15125
diff
changeset
|
3274 topics = [] |
d3ad0e9d4be2
help: fold some list help clauses into the helplist function
Matt Mackall <mpm@selenic.com>
parents:
15125
diff
changeset
|
3275 for names, header, doc in help.helptable: |
d3ad0e9d4be2
help: fold some list help clauses into the helplist function
Matt Mackall <mpm@selenic.com>
parents:
15125
diff
changeset
|
3276 topics.append((sorted(names, key=len, reverse=True)[0], header)) |
d3ad0e9d4be2
help: fold some list help clauses into the helplist function
Matt Mackall <mpm@selenic.com>
parents:
15125
diff
changeset
|
3277 for t, desc in topics: |
16853
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3278 rst.append(" :%s: %s\n" % (t, desc)) |
15126
d3ad0e9d4be2
help: fold some list help clauses into the helplist function
Matt Mackall <mpm@selenic.com>
parents:
15125
diff
changeset
|
3279 |
15129
9b904d679850
help: make optlist local to subfunctions
Matt Mackall <mpm@selenic.com>
parents:
15128
diff
changeset
|
3280 optlist = [] |
16783
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3281 if not ui.quiet: |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3282 if ui.verbose: |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3283 optlist.append((_("global options:"), globalopts)) |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3284 if name == 'shortlist': |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3285 optlist.append((_('use "hg help" for the full list ' |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3286 'of commands'), ())) |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3287 else: |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3288 if name == 'shortlist': |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3289 msg = _('use "hg help" for the full list of commands ' |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3290 'or "hg -v" for details') |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3291 elif name and not full: |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3292 msg = _('use "hg help %s" to show the full help ' |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3293 'text') % name |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3294 else: |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3295 msg = _('use "hg -v help%s" to show builtin aliases and ' |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3296 'global options') % (name and " " + name or "") |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3297 optlist.append((msg, ())) |
bb446969efd4
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com>
parents:
16782
diff
changeset
|
3298 |
16853
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3299 if optlist: |
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3300 for title, options in optlist: |
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3301 rst.append('\n%s\n' % title) |
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3302 if options: |
7863ff383894
help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16852
diff
changeset
|
3303 rst.append('\n%s\n' % help.optrst(options, ui.verbose)) |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3304 return rst |
15128
aaf666bd2942
help: move option list display into subfunctions
Matt Mackall <mpm@selenic.com>
parents:
15127
diff
changeset
|
3305 |
3795
17a11f4ff260
Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
3786
diff
changeset
|
3306 def helptopic(name): |
7012 | 3307 for names, header, doc in help.helptable: |
3308 if name in names: | |
3309 break | |
3310 else: | |
7643
9a1ea6587557
error: move UnknownCommand and AmbiguousCommand
Matt Mackall <mpm@selenic.com>
parents:
7637
diff
changeset
|
3311 raise error.UnknownCommand(name) |
3795
17a11f4ff260
Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
3786
diff
changeset
|
3312 |
16817
946800b43533
help: format topic help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16816
diff
changeset
|
3313 rst = ["%s\n\n" % header] |
3795
17a11f4ff260
Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
3786
diff
changeset
|
3314 # description |
17a11f4ff260
Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
3786
diff
changeset
|
3315 if not doc: |
16817
946800b43533
help: format topic help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16816
diff
changeset
|
3316 rst.append(" %s\n" % _("(no help text available)")) |
14943
d3bb825ddae3
globally: use safehasattr(x, '__call__') instead of hasattr(x, '__call__')
Augie Fackler <durin42@gmail.com>
parents:
14918
diff
changeset
|
3317 if util.safehasattr(doc, '__call__'): |
16817
946800b43533
help: format topic help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16816
diff
changeset
|
3318 rst += [" %s\n" % l for l in doc().splitlines()] |
946800b43533
help: format topic help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16816
diff
changeset
|
3319 |
14286
005a540e9aee
help: add -c/--command flag to only show command help (issue2799)
Martin Geisler <mg@aragost.com>
parents:
14285
diff
changeset
|
3320 try: |
005a540e9aee
help: add -c/--command flag to only show command help (issue2799)
Martin Geisler <mg@aragost.com>
parents:
14285
diff
changeset
|
3321 cmdutil.findcmd(name, table) |
16817
946800b43533
help: format topic help using RST
Olav Reinert <seroton10@gmail.com>
parents:
16816
diff
changeset
|
3322 rst.append(_('\nuse "hg help -c %s" to see help for ' |
14286
005a540e9aee
help: add -c/--command flag to only show command help (issue2799)
Martin Geisler <mg@aragost.com>
parents:
14285
diff
changeset
|
3323 'the %s command\n') % (name, name)) |
005a540e9aee
help: add -c/--command flag to only show command help (issue2799)
Martin Geisler <mg@aragost.com>
parents:
14285
diff
changeset
|
3324 except error.UnknownCommand: |
005a540e9aee
help: add -c/--command flag to only show command help (issue2799)
Martin Geisler <mg@aragost.com>
parents:
14285
diff
changeset
|
3325 pass |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3326 return rst |
3795
17a11f4ff260
Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
3786
diff
changeset
|
3327 |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3328 def helpext(name): |
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3329 try: |
4544
930ed513c864
Create a separate module for managing extensions
Matt Mackall <mpm@selenic.com>
parents:
4543
diff
changeset
|
3330 mod = extensions.find(name) |
10364
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3331 doc = gettext(mod.__doc__) or _('no help text available') |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3332 except KeyError: |
10364
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3333 mod = None |
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3334 doc = extensions.disabledext(name) |
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3335 if not doc: |
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3336 raise error.UnknownCommand(name) |
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3337 |
9280
b694531a5aa7
commands: Check if helptext contains a newline before we split
David Soria Parra <dsp@php.net>
parents:
9249
diff
changeset
|
3338 if '\n' not in doc: |
b694531a5aa7
commands: Check if helptext contains a newline before we split
David Soria Parra <dsp@php.net>
parents:
9249
diff
changeset
|
3339 head, tail = doc, "" |
b694531a5aa7
commands: Check if helptext contains a newline before we split
David Soria Parra <dsp@php.net>
parents:
9249
diff
changeset
|
3340 else: |
b694531a5aa7
commands: Check if helptext contains a newline before we split
David Soria Parra <dsp@php.net>
parents:
9249
diff
changeset
|
3341 head, tail = doc.split('\n', 1) |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3342 rst = [_('%s extension - %s\n\n') % (name.split('.')[-1], head)] |
9157
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
3343 if tail: |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3344 rst.extend(tail.splitlines(True)) |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3345 rst.append('\n') |
4009
86098ec4b77a
fix hg help <ext> for extension that do not define any command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3915
diff
changeset
|
3346 |
10364
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3347 if mod: |
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3348 try: |
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3349 ct = mod.cmdtable |
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3350 except AttributeError: |
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3351 ct = {} |
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3352 modcmds = set([c.split('|', 1)[0] for c in ct]) |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3353 rst.extend(helplist(modcmds.__contains__)) |
10364
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3354 else: |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3355 rst.append(_('use "hg help extensions" for information on enabling ' |
10364
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3356 'extensions\n')) |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3357 return rst |
10364
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3358 |
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3359 def helpextcmd(name): |
16591
46e9ed223d2c
commands: parse ui.strict config item as bool
Yuya Nishihara <yuya@tcha.org>
parents:
16568
diff
changeset
|
3360 cmd, ext, mod = extensions.disabledcmd(ui, name, |
46e9ed223d2c
commands: parse ui.strict config item as bool
Yuya Nishihara <yuya@tcha.org>
parents:
16568
diff
changeset
|
3361 ui.configbool('ui', 'strict')) |
10364
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3362 doc = gettext(mod.__doc__).splitlines()[0] |
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3363 |
16852
af69b2b64d6e
help: format extension lists using RST
Olav Reinert <seroton10@gmail.com>
parents:
16818
diff
changeset
|
3364 rst = help.listexts(_("'%s' is provided by the following " |
14316
d5b525697ddb
extensions: drop maxlength from enabled and disabled
Matt Mackall <mpm@selenic.com>
parents:
14305
diff
changeset
|
3365 "extension:") % cmd, {ext: doc}, indent=4) |
16852
af69b2b64d6e
help: format extension lists using RST
Olav Reinert <seroton10@gmail.com>
parents:
16818
diff
changeset
|
3366 rst.append('\n') |
af69b2b64d6e
help: format extension lists using RST
Olav Reinert <seroton10@gmail.com>
parents:
16818
diff
changeset
|
3367 rst.append(_('use "hg help extensions" for information on enabling ' |
10364
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3368 'extensions\n')) |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3369 return rst |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3370 |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3371 |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3372 rst = [] |
16711
497deec204d1
help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents:
16708
diff
changeset
|
3373 kw = opts.get('keyword') |
497deec204d1
help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents:
16708
diff
changeset
|
3374 if kw: |
497deec204d1
help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents:
16708
diff
changeset
|
3375 matches = help.topicmatch(kw) |
497deec204d1
help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents:
16708
diff
changeset
|
3376 for t, title in (('topics', _('Topics')), |
497deec204d1
help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents:
16708
diff
changeset
|
3377 ('commands', _('Commands')), |
497deec204d1
help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents:
16708
diff
changeset
|
3378 ('extensions', _('Extensions')), |
497deec204d1
help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents:
16708
diff
changeset
|
3379 ('extensioncommands', _('Extension Commands'))): |
497deec204d1
help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents:
16708
diff
changeset
|
3380 if matches[t]: |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3381 rst.append('%s:\n\n' % title) |
16949
66721a0d2249
help: sort results from keyword search
Mads Kiilerich <mads@kiilerich.com>
parents:
16936
diff
changeset
|
3382 rst.extend(minirst.maketable(sorted(matches[t]), 1)) |
16870
54b03085065f
help: fix keyword search result formatting
Olav Reinert <seroton10@gmail.com>
parents:
16866
diff
changeset
|
3383 rst.append('\n') |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3384 elif name and name != 'shortlist': |
3795
17a11f4ff260
Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
3786
diff
changeset
|
3385 i = None |
10364
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3386 if unknowncmd: |
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3387 queries = (helpextcmd,) |
14284
1f9e11f65cd7
help: add -e/--extension switch to display extension help text
Henri Wiechers <hwiechers@gmail.com>
parents:
14283
diff
changeset
|
3388 elif opts.get('extension'): |
1f9e11f65cd7
help: add -e/--extension switch to display extension help text
Henri Wiechers <hwiechers@gmail.com>
parents:
14283
diff
changeset
|
3389 queries = (helpext,) |
14286
005a540e9aee
help: add -c/--command flag to only show command help (issue2799)
Martin Geisler <mg@aragost.com>
parents:
14285
diff
changeset
|
3390 elif opts.get('command'): |
005a540e9aee
help: add -c/--command flag to only show command help (issue2799)
Martin Geisler <mg@aragost.com>
parents:
14285
diff
changeset
|
3391 queries = (helpcmd,) |
10364
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3392 else: |
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3393 queries = (helptopic, helpcmd, helpext, helpextcmd) |
de1e7099d100
dispatch: provide help for disabled extensions and commands
Brodie Rao <me+hg@dackz.net>
parents:
10355
diff
changeset
|
3394 for f in queries: |
3795
17a11f4ff260
Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
3786
diff
changeset
|
3395 try: |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3396 rst = f(name) |
3795
17a11f4ff260
Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
3786
diff
changeset
|
3397 i = None |
17a11f4ff260
Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
3786
diff
changeset
|
3398 break |
7643
9a1ea6587557
error: move UnknownCommand and AmbiguousCommand
Matt Mackall <mpm@selenic.com>
parents:
7637
diff
changeset
|
3399 except error.UnknownCommand, inst: |
3795
17a11f4ff260
Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
3786
diff
changeset
|
3400 i = inst |
17a11f4ff260
Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
3786
diff
changeset
|
3401 if i: |
17a11f4ff260
Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
3786
diff
changeset
|
3402 raise i |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3403 else: |
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3404 # program name |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3405 if not ui.quiet: |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3406 rst = [_("Mercurial Distributed SCM\n"), '\n'] |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3407 rst.extend(helplist()) |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3408 |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3409 keep = ui.verbose and ['verbose'] or [] |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3410 formatted, pruned = minirst.format(''.join(rst), textwidth, keep=keep) |
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3411 ui.write(formatted) |
6653
a78d8edaeedd
help: list special help topics with -v
Johannes Stezenbach <js@sig21.net>
parents:
6652
diff
changeset
|
3412 |
221 | 3413 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3414 @command('identify|id', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3415 [('r', 'rev', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3416 _('identify the specified revision'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3417 ('n', 'num', None, _('show local revision number')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3418 ('i', 'id', None, _('show global revision id')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3419 ('b', 'branch', None, _('show branch')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3420 ('t', 'tags', None, _('show tags')), |
15580
5a7733563c2e
id: add command line options for handling ssh and https urls
Mads Kiilerich <mads@kiilerich.com>
parents:
15578
diff
changeset
|
3421 ('B', 'bookmarks', None, _('show bookmarks')), |
5a7733563c2e
id: add command line options for handling ssh and https urls
Mads Kiilerich <mads@kiilerich.com>
parents:
15578
diff
changeset
|
3422 ] + remoteopts, |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3423 _('[-nibtB] [-r REV] [SOURCE]')) |
13477
0fb2ff949790
id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents:
13473
diff
changeset
|
3424 def identify(ui, repo, source=None, rev=None, |
15580
5a7733563c2e
id: add command line options for handling ssh and https urls
Mads Kiilerich <mads@kiilerich.com>
parents:
15578
diff
changeset
|
3425 num=None, id=None, branch=None, tags=None, bookmarks=None, **opts): |
4665
091c9e54d306
identify: accept a revision argument
Matt Mackall <mpm@selenic.com>
parents:
4664
diff
changeset
|
3426 """identify the working copy or specified revision |
091c9e54d306
identify: accept a revision argument
Matt Mackall <mpm@selenic.com>
parents:
4664
diff
changeset
|
3427 |
13963
3c753f9a2fbc
identify: further clarification of help
Kevin Bullock <kbullock@ringworld.org>
parents:
13952
diff
changeset
|
3428 Print a summary identifying the repository state at REV using one or |
3c753f9a2fbc
identify: further clarification of help
Kevin Bullock <kbullock@ringworld.org>
parents:
13952
diff
changeset
|
3429 two parent hash identifiers, followed by a "+" if the working |
3c753f9a2fbc
identify: further clarification of help
Kevin Bullock <kbullock@ringworld.org>
parents:
13952
diff
changeset
|
3430 directory has uncommitted changes, the branch name (if not default), |
3c753f9a2fbc
identify: further clarification of help
Kevin Bullock <kbullock@ringworld.org>
parents:
13952
diff
changeset
|
3431 a list of tags, and a list of bookmarks. |
13952
1416b9118540
identify/help: say what the command does first, mention bookmarks
Idan Kamara <idankk86@gmail.com>
parents:
13693
diff
changeset
|
3432 |
1416b9118540
identify/help: say what the command does first, mention bookmarks
Idan Kamara <idankk86@gmail.com>
parents:
13693
diff
changeset
|
3433 When REV is not given, print a summary of the current state of the |
8027
9c7ca86fc658
expand "repo" to "repository" in help texts
Martin Geisler <mg@lazybytes.net>
parents:
8026
diff
changeset
|
3434 repository. |
4671
150afe6becf6
identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents:
4667
diff
changeset
|
3435 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3436 Specifying a path to a repository root or Mercurial bundle will |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3437 cause lookup to operate on that repository/bundle. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3438 |
15112
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3439 .. container:: verbose |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3440 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3441 Examples: |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3442 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3443 - generate a build identifier for the working directory:: |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3444 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3445 hg id --id > build-id.dat |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3446 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3447 - find the revision corresponding to a tag:: |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3448 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3449 hg id -n -r 1.3 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3450 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3451 - check the most recent revision of a remote repository:: |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3452 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3453 hg id -r tip http://selenic.com/hg/ |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3454 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3455 Returns 0 if successful. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3456 """ |
4662
f9b8ea362b49
identify: show nullid for empty repo
Matt Mackall <mpm@selenic.com>
parents:
4659
diff
changeset
|
3457 |
5330
4528858e7202
make identify an optionalrepo command
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5329
diff
changeset
|
3458 if not repo and not source: |
12067
a4fbbe0fbc38
Lowercase error messages
Martin Geisler <mg@lazybytes.net>
parents:
11881
diff
changeset
|
3459 raise util.Abort(_("there is no Mercurial repository here " |
5330
4528858e7202
make identify an optionalrepo command
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5329
diff
changeset
|
3460 "(.hg not found)")) |
4528858e7202
make identify an optionalrepo command
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5329
diff
changeset
|
3461 |
2966
fb493241d7f6
Only show long hashes with --debug, not --verbose
Matt Mackall <mpm@selenic.com>
parents:
2963
diff
changeset
|
3462 hexfunc = ui.debugflag and hex or short |
13477
0fb2ff949790
id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents:
13473
diff
changeset
|
3463 default = not (num or id or branch or tags or bookmarks) |
4666
48c94bffdb28
identify: add support for output flags
Matt Mackall <mpm@selenic.com>
parents:
4665
diff
changeset
|
3464 output = [] |
7757
af6a63438a8a
identify: have consistent output for local repositories
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7743
diff
changeset
|
3465 revs = [] |
13953
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3466 |
4671
150afe6becf6
identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents:
4667
diff
changeset
|
3467 if source: |
10365
d757bc0c7865
interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents:
10364
diff
changeset
|
3468 source, branches = hg.parseurl(ui.expandpath(source)) |
17191
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
3469 peer = hg.peer(ui, opts, source) |
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
3470 repo = peer.local() |
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
3471 revs, checkout = hg.addbranchrevs(repo, peer, branches, None) |
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
3472 |
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
3473 if not repo: |
13953
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3474 if num or branch or tags: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3475 raise util.Abort( |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3476 _("can't query remote revision number, branch, or tags")) |
4671
150afe6becf6
identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents:
4667
diff
changeset
|
3477 if not rev and revs: |
150afe6becf6
identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents:
4667
diff
changeset
|
3478 rev = revs[0] |
4667
c7a81e3ae80f
identify: work with remote repos
Matt Mackall <mpm@selenic.com>
parents:
4666
diff
changeset
|
3479 if not rev: |
c7a81e3ae80f
identify: work with remote repos
Matt Mackall <mpm@selenic.com>
parents:
4666
diff
changeset
|
3480 rev = "tip" |
13644
7e6c2f58ad56
identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents:
13639
diff
changeset
|
3481 |
17191
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
3482 remoterev = peer.lookup(rev) |
4666
48c94bffdb28
identify: add support for output flags
Matt Mackall <mpm@selenic.com>
parents:
4665
diff
changeset
|
3483 if default or id: |
13644
7e6c2f58ad56
identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents:
13639
diff
changeset
|
3484 output = [hexfunc(remoterev)] |
7e6c2f58ad56
identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents:
13639
diff
changeset
|
3485 |
13953
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3486 def getbms(): |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3487 bms = [] |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3488 |
17191
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
3489 if 'bookmarks' in peer.listkeys('namespaces'): |
13953
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3490 hexremoterev = hex(remoterev) |
17191
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
3491 bms = [bm for bm, bmr in peer.listkeys('bookmarks').iteritems() |
13953
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3492 if bmr == hexremoterev] |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3493 |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3494 return bms |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3495 |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3496 if bookmarks: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3497 output.extend(getbms()) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3498 elif default and not ui.quiet: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3499 # multiple bookmarks for a single parent separated by '/' |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3500 bm = '/'.join(getbms()) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3501 if bm: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3502 output.append(bm) |
4665
091c9e54d306
identify: accept a revision argument
Matt Mackall <mpm@selenic.com>
parents:
4664
diff
changeset
|
3503 else: |
13953
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3504 if not rev: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3505 ctx = repo[None] |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3506 parents = ctx.parents() |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3507 changed = "" |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3508 if default or id or num: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3509 changed = util.any(repo.status()) and "+" or "" |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3510 if default or id: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3511 output = ["%s%s" % |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3512 ('+'.join([hexfunc(p.node()) for p in parents]), changed)] |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3513 if num: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3514 output.append("%s%s" % |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3515 ('+'.join([str(p.rev()) for p in parents]), changed)) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3516 else: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
3517 ctx = scmutil.revsingle(repo, rev) |
13953
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3518 if default or id: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3519 output = [hexfunc(ctx.node())] |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3520 if num: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3521 output.append(str(ctx.rev())) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3522 |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3523 if default and not ui.quiet: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3524 b = ctx.branch() |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3525 if b != 'default': |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3526 output.append("(%s)" % b) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3527 |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3528 # multiple tags for a single parent separated by '/' |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3529 t = '/'.join(ctx.tags()) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3530 if t: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3531 output.append(t) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3532 |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3533 # multiple bookmarks for a single parent separated by '/' |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3534 bm = '/'.join(ctx.bookmarks()) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3535 if bm: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3536 output.append(bm) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3537 else: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3538 if branch: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3539 output.append(ctx.branch()) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3540 |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3541 if tags: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3542 output.extend(ctx.tags()) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3543 |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3544 if bookmarks: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3545 output.extend(ctx.bookmarks()) |
13477
0fb2ff949790
id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents:
13473
diff
changeset
|
3546 |
386
494c8e3f47f3
Improvements for hg identify:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
371
diff
changeset
|
3547 ui.write("%s\n" % ' '.join(output)) |
339
a76fc9c4b67b
added hg identify|id (based on a patch from Andrew Thompson)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
338
diff
changeset
|
3548 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3549 @command('import|patch', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3550 [('p', 'strip', 1, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3551 _('directory strip option for patch. This has the same ' |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3552 'meaning as the corresponding patch option'), _('NUM')), |
14532
2498128821a9
import: deprecate --base
Patrick Mezard <pmezard@gmail.com>
parents:
14529
diff
changeset
|
3553 ('b', 'base', '', _('base path (DEPRECATED)'), _('PATH')), |
15221 | 3554 ('e', 'edit', False, _('invoke editor on commit messages')), |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3555 ('f', 'force', None, _('skip check for outstanding uncommitted changes')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3556 ('', 'no-commit', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3557 _("don't commit, just update the working directory")), |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3558 ('', 'bypass', None, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3559 _("apply patch without touching the working directory")), |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3560 ('', 'exact', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3561 _('apply patch to the nodes from which it was generated')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3562 ('', 'import-branch', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3563 _('use any branch information in patch (implied by --exact)'))] + |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3564 commitopts + commitopts2 + similarityopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3565 _('[OPTION]... PATCH...')) |
15327
67e92d29ecb5
import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents:
15321
diff
changeset
|
3566 def import_(ui, repo, patch1=None, *patches, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3567 """import an ordered set of patches |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3568 |
9649 | 3569 Import a list of patches and commit them individually (unless |
3570 --no-commit is specified). | |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3571 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3572 If there are outstanding changes in the working directory, import |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
3573 will abort unless given the -f/--force flag. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3574 |
6448
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
3575 You can import a patch straight from a mail message. Even patches |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3576 as attachments work (to use the body part, it must have type |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3577 text/plain or text/x-patch). From and Subject headers of email |
6448
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
3578 message are used as default committer and commit message. All |
2515
a6700c222314
import: make help clearer. suggested by asak.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2513
diff
changeset
|
3579 text/plain body parts before first diff are added to commit |
a6700c222314
import: make help clearer. suggested by asak.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2513
diff
changeset
|
3580 message. |
2504
158d3d2ae070
import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2494
diff
changeset
|
3581 |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
3582 If the imported patch was generated by :hg:`export`, user and |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3583 description from patch override values from message headers and |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
3584 body. Values given on command line with -m/--message and -u/--user |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
3585 override these. |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3586 |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3587 If --exact is specified, import will set the working directory to |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3588 the parent of each patch before applying it, and will abort if the |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3589 resulting changeset has a different ID than the one recorded in |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3590 the patch. This may happen due to character set problems or other |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3591 deficiencies in the text patch format. |
4263 | 3592 |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3593 Use --bypass to apply and commit patches directly to the |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3594 repository, not touching the working directory. Without --exact, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3595 patches will be applied on top of the working directory parent |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3596 revision. |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3597 |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
3598 With -s/--similarity, hg will attempt to discover renames and |
15779
01831f55e972
commands: add link to addremove in commit help text
Martin Geisler <mg@lazybytes.net>
parents:
15765
diff
changeset
|
3599 copies in the patch in the same way as :hg:`addremove`. |
7402
bffdab64dfbb
import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents:
7372
diff
changeset
|
3600 |
8931
4c99eafb101e
commands: add note about import retrieving patches from URLs
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8927
diff
changeset
|
3601 To read a patch from standard input, use "-" as the patch name. If |
4c99eafb101e
commands: add note about import retrieving patches from URLs
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8927
diff
changeset
|
3602 a URL is specified, the patch will be downloaded from it. |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
3603 See :hg:`help dates` for a list of formats valid for -d/--date. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3604 |
15113 | 3605 .. container:: verbose |
3606 | |
3607 Examples: | |
3608 | |
3609 - import a traditional patch from a website and detect renames:: | |
3610 | |
3611 hg import -s 80 http://example.com/bugfix.patch | |
3612 | |
3613 - import a changeset from an hgweb server:: | |
3614 | |
3615 hg import http://www.selenic.com/hg/rev/5ca8c111e9aa | |
3616 | |
3617 - import all the patches in an Unix-style mbox:: | |
3618 | |
3619 hg import incoming-patches.mbox | |
3620 | |
3621 - attempt to exactly restore an exported changeset (not always | |
3622 possible):: | |
3623 | |
3624 hg import --exact proposed-fix.patch | |
3625 | |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3626 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3627 """ |
15327
67e92d29ecb5
import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents:
15321
diff
changeset
|
3628 |
67e92d29ecb5
import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents:
15321
diff
changeset
|
3629 if not patch1: |
67e92d29ecb5
import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents:
15321
diff
changeset
|
3630 raise util.Abort(_('need at least one patch to import')) |
67e92d29ecb5
import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents:
15321
diff
changeset
|
3631 |
437 | 3632 patches = (patch1,) + patches |
500
ebc4714a7632
[PATCH] Clean up destination directory if a clone fails.
mpm@selenic.com
parents:
499
diff
changeset
|
3633 |
6139
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6134
diff
changeset
|
3634 date = opts.get('date') |
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6134
diff
changeset
|
3635 if date: |
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6134
diff
changeset
|
3636 opts['date'] = util.parsedate(date) |
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6134
diff
changeset
|
3637 |
15221 | 3638 editor = cmdutil.commiteditor |
3639 if opts.get('edit'): | |
3640 editor = cmdutil.commitforceeditor | |
3641 | |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3642 update = not opts.get('bypass') |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3643 if not update and opts.get('no_commit'): |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3644 raise util.Abort(_('cannot use --no-commit with --bypass')) |
7402
bffdab64dfbb
import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents:
7372
diff
changeset
|
3645 try: |
bffdab64dfbb
import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents:
7372
diff
changeset
|
3646 sim = float(opts.get('similarity') or 0) |
bffdab64dfbb
import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents:
7372
diff
changeset
|
3647 except ValueError: |
bffdab64dfbb
import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents:
7372
diff
changeset
|
3648 raise util.Abort(_('similarity must be a number')) |
bffdab64dfbb
import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents:
7372
diff
changeset
|
3649 if sim < 0 or sim > 100: |
bffdab64dfbb
import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents:
7372
diff
changeset
|
3650 raise util.Abort(_('similarity must be between 0 and 100')) |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3651 if sim and not update: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3652 raise util.Abort(_('cannot use --similarity with --bypass')) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3653 |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3654 if (opts.get('exact') or not opts.get('force')) and update: |
14289
d68ddccf276b
cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents:
14286
diff
changeset
|
3655 cmdutil.bailifchanged(repo) |
966
022bcc738389
hg import: abort with uncommitted changes, override with --force
mpm@selenic.com
parents:
965
diff
changeset
|
3656 |
15195
5b2a3bb06cef
import: rename some local variables
Greg Ward <greg@gerg.ca>
parents:
15194
diff
changeset
|
3657 base = opts["base"] |
437 | 3658 strip = opts["strip"] |
15198
62dc0e7ab092
import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents:
15197
diff
changeset
|
3659 wlock = lock = tr = None |
12913
0e0a52bd58f9
import: --no-commit should update .hg/last-message.txt
Steve Borho <steve@borho.org>
parents:
12893
diff
changeset
|
3660 msgs = [] |
10384
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3661 |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3662 def checkexact(repo, n, nodeid): |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3663 if opts.get('exact') and hex(n) != nodeid: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3664 repo.rollback() |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3665 raise util.Abort(_('patch is damaged or loses information')) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3666 |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3667 def tryone(ui, hunk, parents): |
10413
e433002acb05
fix up a bunch of check-code warnings
Matt Mackall <mpm@selenic.com>
parents:
10405
diff
changeset
|
3668 tmpname, message, user, date, branch, nodeid, p1, p2 = \ |
e433002acb05
fix up a bunch of check-code warnings
Matt Mackall <mpm@selenic.com>
parents:
10405
diff
changeset
|
3669 patch.extract(ui, hunk) |
10384
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3670 |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3671 if not tmpname: |
15194
0705f2ac79d6
import: simplify status reporting logic (and make it more I18N-friendly)
Greg Ward <greg@gerg.ca>
parents:
15192
diff
changeset
|
3672 return (None, None) |
0705f2ac79d6
import: simplify status reporting logic (and make it more I18N-friendly)
Greg Ward <greg@gerg.ca>
parents:
15192
diff
changeset
|
3673 msg = _('applied to working directory') |
10384
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3674 |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3675 try: |
14635
217b7d83afc3
cmdutil, logmessage: use ui.fin when reading from '-'
Idan Kamara <idankk86@gmail.com>
parents:
14631
diff
changeset
|
3676 cmdline_message = cmdutil.logmessage(ui, opts) |
10384
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3677 if cmdline_message: |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3678 # pickup the cmdline msg |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3679 message = cmdline_message |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3680 elif message: |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3681 # pickup the patch msg |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3682 message = message.strip() |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3683 else: |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3684 # launch the editor |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3685 message = None |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3686 ui.debug('message:\n%s\n' % message) |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3687 |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3688 if len(parents) == 1: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3689 parents.append(repo[nullid]) |
10384
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3690 if opts.get('exact'): |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3691 if not nodeid or not p1: |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3692 raise util.Abort(_('not a Mercurial patch')) |
14610
5d6244930559
import: separate parents selection from working dir update
Patrick Mezard <pmezard@gmail.com>
parents:
14604
diff
changeset
|
3693 p1 = repo[p1] |
5d6244930559
import: separate parents selection from working dir update
Patrick Mezard <pmezard@gmail.com>
parents:
14604
diff
changeset
|
3694 p2 = repo[p2 or nullid] |
10384
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3695 elif p2: |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3696 try: |
14610
5d6244930559
import: separate parents selection from working dir update
Patrick Mezard <pmezard@gmail.com>
parents:
14604
diff
changeset
|
3697 p1 = repo[p1] |
5d6244930559
import: separate parents selection from working dir update
Patrick Mezard <pmezard@gmail.com>
parents:
14604
diff
changeset
|
3698 p2 = repo[p2] |
15511
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3699 # Without any options, consider p2 only if the |
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3700 # patch is being applied on top of the recorded |
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3701 # first parent. |
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3702 if p1 != parents[0]: |
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3703 p1 = parents[0] |
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3704 p2 = repo[nullid] |
10384
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3705 except error.RepoError: |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3706 p1, p2 = parents |
14610
5d6244930559
import: separate parents selection from working dir update
Patrick Mezard <pmezard@gmail.com>
parents:
14604
diff
changeset
|
3707 else: |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3708 p1, p2 = parents |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3709 |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3710 n = None |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3711 if update: |
15511
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3712 if p1 != parents[0]: |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3713 hg.clean(repo, p1.node()) |
15511
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3714 if p2 != parents[1]: |
16551
ebf6d38c9063
localrepo: add setparents() to adjust dirstate copies (issue3407)
Patrick Mezard <patrick@mezard.eu>
parents:
16505
diff
changeset
|
3715 repo.setparents(p1.node(), p2.node()) |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3716 |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3717 if opts.get('exact') or opts.get('import_branch'): |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3718 repo.dirstate.setbranch(branch or 'default') |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3719 |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3720 files = set() |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3721 patch.patch(ui, repo, tmpname, strip=strip, files=files, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3722 eolmode=None, similarity=sim / 100.0) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3723 files = list(files) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3724 if opts.get('no_commit'): |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3725 if message: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3726 msgs.append(message) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3727 else: |
15511
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3728 if opts.get('exact') or p2: |
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3729 # If you got here, you either use --force and know what |
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3730 # you are doing or used --exact or a merge patch while |
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3731 # being updated to its first parent. |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3732 m = None |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3733 else: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3734 m = scmutil.matchfiles(repo, files or []) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3735 n = repo.commit(message, opts.get('user') or user, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3736 opts.get('date') or date, match=m, |
15221 | 3737 editor=editor) |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3738 checkexact(repo, n, nodeid) |
12913
0e0a52bd58f9
import: --no-commit should update .hg/last-message.txt
Steve Borho <steve@borho.org>
parents:
12893
diff
changeset
|
3739 else: |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3740 if opts.get('exact') or opts.get('import_branch'): |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3741 branch = branch or 'default' |
10384
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3742 else: |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3743 branch = p1.branch() |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3744 store = patch.filestore() |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3745 try: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3746 files = set() |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3747 try: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3748 patch.patchrepo(ui, repo, p1, store, tmpname, strip, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3749 files, eolmode=None) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3750 except patch.PatchError, e: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3751 raise util.Abort(str(e)) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3752 memctx = patch.makememctx(repo, (p1.node(), p2.node()), |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3753 message, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3754 opts.get('user') or user, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3755 opts.get('date') or date, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3756 branch, files, store, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3757 editor=cmdutil.commiteditor) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3758 repo.savecommitmessage(memctx.description()) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3759 n = memctx.commit() |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3760 checkexact(repo, n, nodeid) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3761 finally: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3762 store.close() |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3763 if n: |
15307
718e0684c703
import: add i18n context
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
15293
diff
changeset
|
3764 # i18n: refers to a short changeset id |
15194
0705f2ac79d6
import: simplify status reporting logic (and make it more I18N-friendly)
Greg Ward <greg@gerg.ca>
parents:
15192
diff
changeset
|
3765 msg = _('created %s') % short(n) |
0705f2ac79d6
import: simplify status reporting logic (and make it more I18N-friendly)
Greg Ward <greg@gerg.ca>
parents:
15192
diff
changeset
|
3766 return (msg, n) |
10384
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3767 finally: |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3768 os.unlink(tmpname) |
10405
2d30d66a89ad
whitespace cleanup
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
10394
diff
changeset
|
3769 |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4914
diff
changeset
|
3770 try: |
15278
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3771 try: |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3772 wlock = repo.wlock() |
16274
5d75eb8568d1
encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents:
16249
diff
changeset
|
3773 if not opts.get('no_commit'): |
5d75eb8568d1
encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents:
16249
diff
changeset
|
3774 lock = repo.lock() |
5d75eb8568d1
encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents:
16249
diff
changeset
|
3775 tr = repo.transaction('import') |
15278
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3776 parents = repo.parents() |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3777 for patchurl in patches: |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3778 if patchurl == '-': |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3779 ui.status(_('applying patch from stdin\n')) |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3780 patchfile = ui.fin |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3781 patchurl = 'stdin' # for error message |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3782 else: |
15278
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3783 patchurl = os.path.join(base, patchurl) |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3784 ui.status(_('applying %s\n') % patchurl) |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3785 patchfile = url.open(ui, patchurl) |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3786 |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3787 haspatch = False |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3788 for hunk in patch.split(patchfile): |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3789 (msg, node) = tryone(ui, hunk, parents) |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3790 if msg: |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3791 haspatch = True |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3792 ui.note(msg + '\n') |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3793 if update or opts.get('exact'): |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3794 parents = repo.parents() |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3795 else: |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3796 parents = [repo[node]] |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3797 |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3798 if not haspatch: |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3799 raise util.Abort(_('%s: no diffs found') % patchurl) |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3800 |
16274
5d75eb8568d1
encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents:
16249
diff
changeset
|
3801 if tr: |
5d75eb8568d1
encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents:
16249
diff
changeset
|
3802 tr.close() |
15278
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3803 if msgs: |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3804 repo.savecommitmessage('\n* * *\n'.join(msgs)) |
16705
c2d9ef43ff6c
check-code: ignore naked excepts with a "re-raise" comment
Brodie Rao <brodie@sf.io>
parents:
16690
diff
changeset
|
3805 except: # re-raises |
15278
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3806 # wlock.release() indirectly calls dirstate.write(): since |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3807 # we're crashing, we do not want to change the working dir |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3808 # parent after all, so make sure it writes nothing |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3809 repo.dirstate.invalidate() |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3810 raise |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4914
diff
changeset
|
3811 finally: |
15198
62dc0e7ab092
import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents:
15197
diff
changeset
|
3812 if tr: |
62dc0e7ab092
import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents:
15197
diff
changeset
|
3813 tr.release() |
8109
496ae1ea4698
switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents:
8088
diff
changeset
|
3814 release(lock, wlock) |
437 | 3815 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3816 @command('incoming|in', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3817 [('f', 'force', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3818 _('run even if remote repository is unrelated')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3819 ('n', 'newest-first', None, _('show newest record first')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3820 ('', 'bundle', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3821 _('file to store the bundles into'), _('FILE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3822 ('r', 'rev', [], _('a remote changeset intended to be added'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3823 ('B', 'bookmarks', False, _("compare bookmarks")), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3824 ('b', 'branch', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3825 _('a specific branch you would like to pull'), _('BRANCH')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3826 ] + logopts + remoteopts + subrepoopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3827 _('[-p] [-n] [-M] [-f] [-r REV]... [--bundle FILENAME] [SOURCE]')) |
1192
6e165de907c5
Add -p to incoming and outgoing commands to show patch
TK Soh <teekaysoh@yahoo.com>
parents:
1191
diff
changeset
|
3828 def incoming(ui, repo, source="default", **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3829 """show new changesets found in source |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3830 |
1979
d545fa1426b9
More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1974
diff
changeset
|
3831 Show new changesets found in the specified path/URL or the default |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3832 pull location. These are the changesets that would have been pulled |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3833 if a pull at the time you issued this command. |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3834 |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3835 For remote repository, using --bundle avoids downloading the |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3836 changesets twice if the incoming is followed by a pull. |
1979
d545fa1426b9
More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1974
diff
changeset
|
3837 |
d545fa1426b9
More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1974
diff
changeset
|
3838 See pull for valid source format details. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3839 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3840 Returns 0 if there are incoming changes, 1 otherwise. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3841 """ |
17182
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3842 if opts.get('graph'): |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3843 cmdutil.checkunsupportedgraphflags([], opts) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3844 def display(other, chlist, displayer): |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3845 revdag = cmdutil.graphrevs(other, chlist, opts) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3846 showparents = [ctx.node() for ctx in repo[None].parents()] |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3847 cmdutil.displaygraph(ui, revdag, displayer, showparents, |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3848 graphmod.asciiedges) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3849 |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3850 hg._incoming(display, lambda: 1, ui, repo, source, opts, buffered=True) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3851 return 0 |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3852 |
12274
c02e1ed3d407
incoming: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents:
12273
diff
changeset
|
3853 if opts.get('bundle') and opts.get('subrepos'): |
c02e1ed3d407
incoming: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents:
12273
diff
changeset
|
3854 raise util.Abort(_('cannot combine --bundle and --subrepos')) |
c02e1ed3d407
incoming: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents:
12273
diff
changeset
|
3855 |
13366
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
3856 if opts.get('bookmarks'): |
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
3857 source, branches = hg.parseurl(ui.expandpath(source), |
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
3858 opts.get('branch')) |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
3859 other = hg.peer(repo, opts, source) |
13453
c1b808020819
bookmarks: issue a warning if remote doesn't support comparing bookmarks
David Soria Parra <dsp@php.net>
parents:
13448
diff
changeset
|
3860 if 'bookmarks' not in other.listkeys('namespaces'): |
c1b808020819
bookmarks: issue a warning if remote doesn't support comparing bookmarks
David Soria Parra <dsp@php.net>
parents:
13448
diff
changeset
|
3861 ui.warn(_("remote doesn't support bookmarks\n")) |
c1b808020819
bookmarks: issue a warning if remote doesn't support comparing bookmarks
David Soria Parra <dsp@php.net>
parents:
13448
diff
changeset
|
3862 return 0 |
14076
924c82157d46
url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents:
14073
diff
changeset
|
3863 ui.status(_('comparing with %s\n') % util.hidepassword(source)) |
13366
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
3864 return bookmarks.diff(ui, repo, other) |
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
3865 |
14360
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
3866 repo._subtoppath = ui.expandpath(source) |
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
3867 try: |
14362
8c740a850ad7
commands: replace 'x = f(); return x' with 'return f()'
Martin Geisler <mg@lazybytes.net>
parents:
14361
diff
changeset
|
3868 return hg.incoming(ui, repo, source, opts) |
14360
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
3869 finally: |
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
3870 del repo._subtoppath |
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
3871 |
1944
fdf40c9b3306
incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1943
diff
changeset
|
3872 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3873 @command('^init', remoteopts, _('[-e CMD] [--remotecmd CMD] [DEST]')) |
2598
b898afee9d0d
Add ui method to set --ssh/--remotecmd, use it in init/clone/pull/push/in/out.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
2597
diff
changeset
|
3874 def init(ui, dest=".", **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3875 """create a new repository in the given directory |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3876 |
6448
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
3877 Initialize a new repository in the given directory. If the given |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3878 directory does not exist, it will be created. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3879 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3880 If no directory is given, the current directory is used. |
2590
911b56853fdd
Additional information about URLs in pull/push/clone/init:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
2589
diff
changeset
|
3881 |
9970
36760956f6d3
commands: mark "ssh://" as inline literals in help texts
Martin Geisler <mg@lazybytes.net>
parents:
9952
diff
changeset
|
3882 It is possible to specify an ``ssh://`` URL as the destination. |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
3883 See :hg:`help urls` for more information. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3884 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3885 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3886 """ |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
3887 hg.peer(ui, opts, ui.expandpath(dest), create=True) |
338 | 3888 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3889 @command('locate', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3890 [('r', 'rev', '', _('search the repository as it is in REV'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3891 ('0', 'print0', None, _('end filenames with NUL, for use with xargs')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3892 ('f', 'fullpath', None, _('print complete paths from the filesystem root')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3893 ] + walkopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3894 _('[OPTION]... [PATTERN]...')) |
627 | 3895 def locate(ui, repo, *pats, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3896 """locate files matching specific patterns |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3897 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3898 Print files under Mercurial control in the working directory whose |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3899 names match the given patterns. |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3900 |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3901 By default, this command searches all directories in the working |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3902 directory. To search just the current directory and its |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3903 subdirectories, use "--include .". |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3904 |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3905 If no patterns are given to match, this command prints the names |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3906 of all files under Mercurial control in the working directory. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3907 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3908 If you want to feed the output of this command into the "xargs" |
8032
4726a522a182
commands: use double quotes consistently in help texts
Martin Geisler <mg@lazybytes.net>
parents:
8031
diff
changeset
|
3909 command, use the -0 option to both this command and "xargs". This |
4726a522a182
commands: use double quotes consistently in help texts
Martin Geisler <mg@lazybytes.net>
parents:
8031
diff
changeset
|
3910 will avoid the problem of "xargs" treating single filenames that |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3911 contain whitespace as multiple filenames. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3912 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3913 Returns 0 if a match is found, 1 otherwise. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3914 """ |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
3915 end = opts.get('print0') and '\0' or '\n' |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
3916 rev = scmutil.revsingle(repo, opts.get('rev'), None).node() |
742 | 3917 |
4196
1c69c73d85d9
locate: exit(1) if we didn't print any file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4195
diff
changeset
|
3918 ret = 1 |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
3919 m = scmutil.match(repo[rev], pats, opts, default='relglob') |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10270
diff
changeset
|
3920 m.bad = lambda x, y: False |
6764 | 3921 for abs in repo[rev].walk(m): |
3922 if not rev and abs not in repo.dirstate: | |
4308
a5cde03cd019
locate: don't print "file not found" messages.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4252
diff
changeset
|
3923 continue |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
3924 if opts.get('fullpath'): |
7570
e05aa73ce2b7
use repo.wjoin(f) instead of os.path.join(repo.root, f)
Martin Geisler <mg@daimi.au.dk>
parents:
7540
diff
changeset
|
3925 ui.write(repo.wjoin(abs), end) |
724
1c0c413cccdd
Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
723
diff
changeset
|
3926 else: |
6584
29c77e5dfb3c
walk: remove rel and exact returns
Matt Mackall <mpm@selenic.com>
parents:
6583
diff
changeset
|
3927 ui.write(((pats and m.rel(abs)) or abs), end) |
4196
1c69c73d85d9
locate: exit(1) if we didn't print any file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4195
diff
changeset
|
3928 ret = 0 |
1c69c73d85d9
locate: exit(1) if we didn't print any file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4195
diff
changeset
|
3929 |
1c69c73d85d9
locate: exit(1) if we didn't print any file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4195
diff
changeset
|
3930 return ret |
627 | 3931 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3932 @command('^log|history', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3933 [('f', 'follow', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3934 _('follow changeset history, or file history across copies and renames')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3935 ('', 'follow-first', None, |
15405
e4a17bb8472f
log: hide some low-utility options
Matt Mackall <mpm@selenic.com>
parents:
15404
diff
changeset
|
3936 _('only follow the first parent of merge changesets (DEPRECATED)')), |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3937 ('d', 'date', '', _('show revisions matching date spec'), _('DATE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3938 ('C', 'copies', None, _('show copied files')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3939 ('k', 'keyword', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3940 _('do case-insensitive search for a given text'), _('TEXT')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3941 ('r', 'rev', [], _('show the specified revision or range'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3942 ('', 'removed', None, _('include revisions where files were removed')), |
15405
e4a17bb8472f
log: hide some low-utility options
Matt Mackall <mpm@selenic.com>
parents:
15404
diff
changeset
|
3943 ('m', 'only-merges', None, _('show only merges (DEPRECATED)')), |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3944 ('u', 'user', [], _('revisions committed by user'), _('USER')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3945 ('', 'only-branch', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3946 _('show only changesets within the given named branch (DEPRECATED)'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3947 _('BRANCH')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3948 ('b', 'branch', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3949 _('show changesets within the given named branch'), _('BRANCH')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3950 ('P', 'prune', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3951 _('do not display revision or any of its ancestors'), _('REV')), |
15424
f3b5ba25d217
log: hide hidden option until it actually does something
Matt Mackall <mpm@selenic.com>
parents:
15405
diff
changeset
|
3952 ('', 'hidden', False, _('show hidden changesets (DEPRECATED)')), |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3953 ] + logopts + walkopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3954 _('[OPTION]... [FILE]')) |
1031
503aaf19a040
Rewrite log command. New version is faster and more featureful.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1030
diff
changeset
|
3955 def log(ui, repo, *pats, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3956 """show revision history of entire repository or files |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3957 |
2741
ae5ce3454ef5
log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2739
diff
changeset
|
3958 Print the revision history of the specified files or the entire |
ae5ce3454ef5
log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2739
diff
changeset
|
3959 project. |
ae5ce3454ef5
log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2739
diff
changeset
|
3960 |
15104
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
3961 If no revision range is specified, the default is ``tip:0`` unless |
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
3962 --follow is set, in which case the working directory parent is |
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
3963 used as the starting revision. |
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
3964 |
2741
ae5ce3454ef5
log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2739
diff
changeset
|
3965 File history is shown without following rename or copy history of |
8761
0289f384e1e5
Generally replace "file name" with "filename" in help and comments.
timeless <timeless@gmail.com>
parents:
8760
diff
changeset
|
3966 files. Use -f/--follow with a filename to follow history across |
0289f384e1e5
Generally replace "file name" with "filename" in help and comments.
timeless <timeless@gmail.com>
parents:
8760
diff
changeset
|
3967 renames and copies. --follow without a filename will only show |
15104
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
3968 ancestors or descendants of the starting revision. |
6163
1f733c2f0165
Document log date ranges and mention 'hg help dates' for all commands (issue998)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6161
diff
changeset
|
3969 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3970 By default this command prints revision number and changeset id, |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3971 tags, non-trivial parents, user, date and time, and a summary for |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3972 each commit. When the -v/--verbose switch is used, the list of |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3973 changed files and full commit message are shown. |
3822
28134d82db9b
Add notes about diff/merge asymmetry to export, diff, and log
Matt Mackall <mpm@selenic.com>
parents:
3815
diff
changeset
|
3974 |
12390
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
3975 .. note:: |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
3976 log -p/--patch may generate unexpected diff output for merge |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
3977 changesets, as it will only compare the merge changeset against |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
3978 its first parent. Also, only files different from BOTH parents |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
3979 will appear in files:. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3980 |
15105
6e91fba485fa
log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents:
15104
diff
changeset
|
3981 .. note:: |
6e91fba485fa
log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents:
15104
diff
changeset
|
3982 for performance reasons, log FILE may omit duplicate changes |
6e91fba485fa
log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents:
15104
diff
changeset
|
3983 made on branches and will not show deletions. To see all |
6e91fba485fa
log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents:
15104
diff
changeset
|
3984 changes including duplicates and deletions, use the --removed |
6e91fba485fa
log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents:
15104
diff
changeset
|
3985 switch. |
6e91fba485fa
log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents:
15104
diff
changeset
|
3986 |
15103
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3987 .. container:: verbose |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3988 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3989 Some examples: |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3990 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3991 - changesets with full descriptions and file lists:: |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3992 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3993 hg log -v |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3994 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3995 - changesets ancestral to the working directory:: |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3996 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3997 hg log -f |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3998 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3999 - last 10 commits on the current branch:: |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4000 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4001 hg log -l 10 -b . |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4002 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4003 - changesets showing all modifications of a file, including removals:: |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4004 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4005 hg log --removed file.c |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4006 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4007 - all changesets that touch a directory, with diffs, excluding merges:: |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4008 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4009 hg log -Mp lib/ |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4010 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4011 - all revision numbers that match a keyword:: |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4012 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4013 hg log -k bug --template "{rev}\\n" |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4014 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4015 - check if a given changeset is included is a tagged release:: |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4016 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4017 hg log -r "a21ccf and ancestor(1.9)" |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4018 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4019 - find all changesets by some user in a date range:: |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4020 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4021 hg log -k alice -d "may 2008 to jul 2008" |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4022 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4023 - summary of all changesets after the last tag:: |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4024 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4025 hg log -r "last(tagged())::" --template "{desc|firstline}\\n" |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4026 |
15104
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
4027 See :hg:`help dates` for a list of formats valid for -d/--date. |
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
4028 |
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
4029 See :hg:`help revisions` and :hg:`help revsets` for more about |
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
4030 specifying revisions. |
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
4031 |
16568
770190bff625
help: add reference to template help (issue3413)
A. S. Budden <abudden@gmail.com>
parents:
16551
diff
changeset
|
4032 See :hg:`help templates` for more about pre-packaged styles and |
770190bff625
help: add reference to template help (issue3413)
A. S. Budden <abudden@gmail.com>
parents:
16551
diff
changeset
|
4033 specifying custom templates. |
770190bff625
help: add reference to template help (issue3413)
A. S. Budden <abudden@gmail.com>
parents:
16551
diff
changeset
|
4034 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4035 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4036 """ |
17181
6f71167292f2
log: support --graph without graphlog extension
Patrick Mezard <patrick@mezard.eu>
parents:
17168
diff
changeset
|
4037 if opts.get('graph'): |
6f71167292f2
log: support --graph without graphlog extension
Patrick Mezard <patrick@mezard.eu>
parents:
17168
diff
changeset
|
4038 return cmdutil.graphlog(ui, repo, *pats, **opts) |
1756
f29857aaa053
add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1747
diff
changeset
|
4039 |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
4040 matchfn = scmutil.match(repo[None], pats, opts) |
6190
a79d9408806f
Move finding/checking the log limit to cmdutil
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6189
diff
changeset
|
4041 limit = cmdutil.loglimit(opts) |
1756
f29857aaa053
add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1747
diff
changeset
|
4042 count = 0 |
f29857aaa053
add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1747
diff
changeset
|
4043 |
16175
280e834c9d15
log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents:
16163
diff
changeset
|
4044 getrenamed, endrev = None, None |
280e834c9d15
log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents:
16163
diff
changeset
|
4045 if opts.get('copies'): |
280e834c9d15
log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents:
16163
diff
changeset
|
4046 if opts.get('rev'): |
280e834c9d15
log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents:
16163
diff
changeset
|
4047 endrev = max(scmutil.revrange(repo, opts.get('rev'))) + 1 |
280e834c9d15
log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents:
16163
diff
changeset
|
4048 getrenamed = templatekw.getrenamedfn(repo, endrev=endrev) |
3197 | 4049 |
3813 | 4050 df = False |
4051 if opts["date"]: | |
4052 df = util.matchdate(opts["date"]) | |
4053 | |
10963
9e314c5e6890
log -b: use opts.get() instead of assuming opts is correctly filled
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10962
diff
changeset
|
4054 branches = opts.get('branch', []) + opts.get('only_branch', []) |
9e314c5e6890
log -b: use opts.get() instead of assuming opts is correctly filled
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10962
diff
changeset
|
4055 opts['branch'] = [repo.lookupbranch(b) for b in branches] |
10957
0d5f139b23c1
commands: Add 'hg log --branch' and deprecate 'hg log --only-branch'
Steve Losh <steve@stevelosh.com>
parents:
10934
diff
changeset
|
4056 |
11488
f786fc4b8764
log: follow filenames through renames (issue647)
Mads Kiilerich <mads@kiilerich.com>
parents:
11459
diff
changeset
|
4057 displayer = cmdutil.show_changeset(ui, repo, opts, True) |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4058 def prep(ctx, fns): |
9655
6d7d3f849062
walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents:
9654
diff
changeset
|
4059 rev = ctx.rev() |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4060 parents = [p for p in repo.changelog.parentrevs(rev) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4061 if p != nullrev] |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4062 if opts.get('no_merges') and len(parents) == 2: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4063 return |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4064 if opts.get('only_merges') and len(parents) != 2: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4065 return |
10957
0d5f139b23c1
commands: Add 'hg log --branch' and deprecate 'hg log --only-branch'
Steve Losh <steve@stevelosh.com>
parents:
10934
diff
changeset
|
4066 if opts.get('branch') and ctx.branch() not in opts['branch']: |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4067 return |
14645
e4cfdff6d3f4
log: do not display hidden changeset
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
14639
diff
changeset
|
4068 if not opts.get('hidden') and ctx.hidden(): |
e4cfdff6d3f4
log: do not display hidden changeset
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
14639
diff
changeset
|
4069 return |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4070 if df and not df(ctx.date()[0]): |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4071 return |
15725
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4072 |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4073 lower = encoding.lower |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4074 if opts.get('user'): |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4075 luser = lower(ctx.user()) |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4076 for k in [lower(x) for x in opts['user']]: |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4077 if (k in luser): |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4078 break |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4079 else: |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4080 return |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4081 if opts.get('keyword'): |
15725
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4082 luser = lower(ctx.user()) |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4083 ldesc = lower(ctx.description()) |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4084 lfiles = lower(" ".join(ctx.files())) |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4085 for k in [lower(x) for x in opts['keyword']]: |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4086 if (k in luser or k in ldesc or k in lfiles): |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4087 break |
9663
4164a17e7126
log: tidy up some filter tests
Matt Mackall <mpm@selenic.com>
parents:
9662
diff
changeset
|
4088 else: |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4089 return |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4090 |
10060
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10021
diff
changeset
|
4091 copies = None |
16175
280e834c9d15
log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents:
16163
diff
changeset
|
4092 if getrenamed is not None and rev: |
10060
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10021
diff
changeset
|
4093 copies = [] |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4094 for fn in ctx.files(): |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4095 rename = getrenamed(fn, rev) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4096 if rename: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4097 copies.append((fn, rename[0])) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4098 |
11488
f786fc4b8764
log: follow filenames through renames (issue647)
Mads Kiilerich <mads@kiilerich.com>
parents:
11459
diff
changeset
|
4099 revmatchfn = None |
f786fc4b8764
log: follow filenames through renames (issue647)
Mads Kiilerich <mads@kiilerich.com>
parents:
11459
diff
changeset
|
4100 if opts.get('patch') or opts.get('stat'): |
12382
28ddf67198b2
log: include unmodified-in-merge files in log diff/stat (issue2383)
Mads Kiilerich <mads@kiilerich.com>
parents:
12129
diff
changeset
|
4101 if opts.get('follow') or opts.get('follow_first'): |
28ddf67198b2
log: include unmodified-in-merge files in log diff/stat (issue2383)
Mads Kiilerich <mads@kiilerich.com>
parents:
12129
diff
changeset
|
4102 # note: this might be wrong when following through merges |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
4103 revmatchfn = scmutil.match(repo[None], fns, default='path') |
12382
28ddf67198b2
log: include unmodified-in-merge files in log diff/stat (issue2383)
Mads Kiilerich <mads@kiilerich.com>
parents:
12129
diff
changeset
|
4104 else: |
28ddf67198b2
log: include unmodified-in-merge files in log diff/stat (issue2383)
Mads Kiilerich <mads@kiilerich.com>
parents:
12129
diff
changeset
|
4105 revmatchfn = matchfn |
11488
f786fc4b8764
log: follow filenames through renames (issue647)
Mads Kiilerich <mads@kiilerich.com>
parents:
11459
diff
changeset
|
4106 |
f786fc4b8764
log: follow filenames through renames (issue647)
Mads Kiilerich <mads@kiilerich.com>
parents:
11459
diff
changeset
|
4107 displayer.show(ctx, copies=copies, matchfn=revmatchfn) |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4108 |
9665
1de5ebfa5585
walkchangerevs: drop ui arg
Matt Mackall <mpm@selenic.com>
parents:
9663
diff
changeset
|
4109 for ctx in cmdutil.walkchangerevs(repo, matchfn, opts, prep): |
9687
c6da1cb3b255
log --limit: break after a limited number of csets (broken by f3d60543924f)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
9679
diff
changeset
|
4110 if count == limit: |
c6da1cb3b255
log --limit: break after a limited number of csets (broken by f3d60543924f)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
9679
diff
changeset
|
4111 break |
c6da1cb3b255
log --limit: break after a limited number of csets (broken by f3d60543924f)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
9679
diff
changeset
|
4112 if displayer.flush(ctx.rev()): |
c6da1cb3b255
log --limit: break after a limited number of csets (broken by f3d60543924f)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
9679
diff
changeset
|
4113 count += 1 |
10152
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
4114 displayer.close() |
255 | 4115 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4116 @command('manifest', |
14399
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4117 [('r', 'rev', '', _('revision to display'), _('REV')), |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4118 ('', 'all', False, _("list files from all revisions"))], |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4119 _('[-r REV]')) |
14399
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4120 def manifest(ui, repo, node=None, rev=None, **opts): |
3914
283ee8971570
doc string fix: hg cat and manifest default to current parent revision.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3900
diff
changeset
|
4121 """output the current or given revision of the project manifest |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4122 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4123 Print a list of version controlled files for the given revision. |
8041
87c5a4af0b5a
Fix manifest default rev doc when no rev is checked out (issue1603)
Patrick Mezard <pmezard@gmail.com>
parents:
7850
diff
changeset
|
4124 If no revision is given, the first parent of the working directory |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4125 is used, or the null revision if no revision is checked out. |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4126 |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4127 With -v, print file permissions, symlink and executable bits. |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4128 With --debug, print file revision hashes. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4129 |
14399
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4130 If option --all is specified, the list of all files from all revisions |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4131 is printed. This includes deleted and renamed files. |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4132 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4133 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4134 """ |
14399
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4135 if opts.get('all'): |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4136 if rev or node: |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4137 raise util.Abort(_("can't specify a revision with --all")) |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4138 |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4139 res = [] |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4140 prefix = "data/" |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4141 suffix = ".i" |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4142 plen = len(prefix) |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4143 slen = len(suffix) |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4144 lock = repo.lock() |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4145 try: |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4146 for fn, b, size in repo.store.datafiles(): |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4147 if size != 0 and fn[-slen:] == suffix and fn[:plen] == prefix: |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4148 res.append(fn[plen:-slen]) |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4149 finally: |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4150 lock.release() |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4151 for f in sorted(res): |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4152 ui.write("%s\n" % f) |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4153 return |
3736 | 4154 |
5155
13d23d66a6cd
manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents:
5148
diff
changeset
|
4155 if rev and node: |
13d23d66a6cd
manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents:
5148
diff
changeset
|
4156 raise util.Abort(_("please specify just one revision")) |
13d23d66a6cd
manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents:
5148
diff
changeset
|
4157 |
13d23d66a6cd
manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents:
5148
diff
changeset
|
4158 if not node: |
13d23d66a6cd
manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents:
5148
diff
changeset
|
4159 node = rev |
13d23d66a6cd
manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents:
5148
diff
changeset
|
4160 |
6749
51b0e799352f
manifest: remove execf/linkf methods
Matt Mackall <mpm@selenic.com>
parents:
6748
diff
changeset
|
4161 decor = {'l':'644 @ ', 'x':'755 * ', '':'644 '} |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
4162 ctx = scmutil.revsingle(repo, node) |
6749
51b0e799352f
manifest: remove execf/linkf methods
Matt Mackall <mpm@selenic.com>
parents:
6748
diff
changeset
|
4163 for f in ctx: |
3736 | 4164 if ui.debugflag: |
6749
51b0e799352f
manifest: remove execf/linkf methods
Matt Mackall <mpm@selenic.com>
parents:
6748
diff
changeset
|
4165 ui.write("%40s " % hex(ctx.manifest()[f])) |
3736 | 4166 if ui.verbose: |
6749
51b0e799352f
manifest: remove execf/linkf methods
Matt Mackall <mpm@selenic.com>
parents:
6748
diff
changeset
|
4167 ui.write(decor[ctx.flags(f)]) |
3736 | 4168 ui.write("%s\n" % f) |
255 | 4169 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4170 @command('^merge', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4171 [('f', 'force', None, _('force a merge with outstanding changes')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4172 ('r', 'rev', '', _('revision to merge'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4173 ('P', 'preview', None, |
14852
cac04f2f475b
commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents:
14840
diff
changeset
|
4174 _('review revisions to merge (no merge is performed)')) |
cac04f2f475b
commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents:
14840
diff
changeset
|
4175 ] + mergetoolopts, |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4176 _('[-P] [-f] [[-r] REV]')) |
8387
50b6af595e0c
merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8366
diff
changeset
|
4177 def merge(ui, repo, node=None, **opts): |
4014
509342f95564
various doc fixes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
4013
diff
changeset
|
4178 """merge working directory with another revision |
2019
ced2d3620f95
add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1996
diff
changeset
|
4179 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4180 The current working directory is updated with all changes made in |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4181 the requested revision since the last common predecessor revision. |
7977
1cd3775e097c
commands: better merge help text
Martin Geisler <mg@daimi.au.dk>
parents:
7976
diff
changeset
|
4182 |
1cd3775e097c
commands: better merge help text
Martin Geisler <mg@daimi.au.dk>
parents:
7976
diff
changeset
|
4183 Files that changed between either parent are marked as changed for |
1cd3775e097c
commands: better merge help text
Martin Geisler <mg@daimi.au.dk>
parents:
7976
diff
changeset
|
4184 the next commit and a commit must be performed before any further |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4185 updates to the repository are allowed. The next commit will have |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4186 two parents. |
2915
013921c753bd
merge with other head by default, not tip.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2911
diff
changeset
|
4187 |
12750
05bd2658bbb3
merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents:
12727
diff
changeset
|
4188 ``--tool`` can be used to specify the merge tool used for file |
05bd2658bbb3
merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents:
12727
diff
changeset
|
4189 merges. It overrides the HGMERGE environment variable and your |
13891
1bd9f3a6a0d0
merge: added info that hg help merge-tools shows the options for --tool
Arne Babenhauserheide <bab@draketo.de>
parents:
13878
diff
changeset
|
4190 configuration files. See :hg:`help merge-tools` for options. |
12750
05bd2658bbb3
merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents:
12727
diff
changeset
|
4191 |
2915
013921c753bd
merge with other head by default, not tip.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2911
diff
changeset
|
4192 If no revision is specified, the working directory's parent is a |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4193 head revision, and the current branch contains exactly one other |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4194 head, the other head is merged with by default. Otherwise, an |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4195 explicit revision with which to merge with must be provided. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4196 |
12750
05bd2658bbb3
merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents:
12727
diff
changeset
|
4197 :hg:`resolve` must be used to resolve unresolved files. |
05bd2658bbb3
merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents:
12727
diff
changeset
|
4198 |
11452
eac141407b85
merge: document how to 'undo' a merge
Matt Mackall <mpm@selenic.com>
parents:
11442
diff
changeset
|
4199 To undo an uncommitted merge, use :hg:`update --clean .` which |
eac141407b85
merge: document how to 'undo' a merge
Matt Mackall <mpm@selenic.com>
parents:
11442
diff
changeset
|
4200 will check out a clean copy of the original merge parent, losing |
eac141407b85
merge: document how to 'undo' a merge
Matt Mackall <mpm@selenic.com>
parents:
11442
diff
changeset
|
4201 all changes. |
eac141407b85
merge: document how to 'undo' a merge
Matt Mackall <mpm@selenic.com>
parents:
11442
diff
changeset
|
4202 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4203 Returns 0 on success, 1 if there are unresolved files. |
2019
ced2d3620f95
add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1996
diff
changeset
|
4204 """ |
2806
0bf22c109cc3
Factor doupdate into _lookup + hg.update
Matt Mackall <mpm@selenic.com>
parents:
2803
diff
changeset
|
4205 |
8387
50b6af595e0c
merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8366
diff
changeset
|
4206 if opts.get('rev') and node: |
4450
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
4207 raise util.Abort(_("please specify just one revision")) |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
4208 if not node: |
8387
50b6af595e0c
merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8366
diff
changeset
|
4209 node = opts.get('rev') |
4450
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
4210 |
16708
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4211 if node: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4212 node = scmutil.revsingle(repo, node).node() |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4213 |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4214 if not node and repo._bookmarkcurrent: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4215 bmheads = repo.bookmarkheads(repo._bookmarkcurrent) |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4216 curhead = repo[repo._bookmarkcurrent] |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4217 if len(bmheads) == 2: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4218 if curhead == bmheads[0]: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4219 node = bmheads[1] |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4220 else: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4221 node = bmheads[0] |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4222 elif len(bmheads) > 2: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4223 raise util.Abort(_("multiple matching bookmarks to merge - " |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4224 "please merge with an explicit rev or bookmark"), |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4225 hint=_("run 'hg heads' to see all heads")) |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4226 elif len(bmheads) <= 1: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4227 raise util.Abort(_("no matching bookmark to merge - " |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4228 "please merge with an explicit rev or bookmark"), |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4229 hint=_("run 'hg heads' to see all heads")) |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4230 |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4231 if not node and not repo._bookmarkcurrent: |
13047
6c375e07d673
branch: operate on branch names in local string space where possible
Matt Mackall <mpm@selenic.com>
parents:
13022
diff
changeset
|
4232 branch = repo[None].branch() |
6844
a38dff85d31f
merge: use correct branch name for counting heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6843
diff
changeset
|
4233 bheads = repo.branchheads(branch) |
16708
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4234 nbhs = [bh for bh in bheads if not repo[bh].bookmarks()] |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4235 |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4236 if len(nbhs) > 2: |
14198
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4237 raise util.Abort(_("branch '%s' has %d heads - " |
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4238 "please merge with an explicit rev") |
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4239 % (branch, len(bheads)), |
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4240 hint=_("run 'hg heads .' to see heads")) |
6723
1fe6f365df2e
merge: only in-branch merges can be implicit
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6686
diff
changeset
|
4241 |
13878
a8d13ee0ce68
misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents:
13855
diff
changeset
|
4242 parent = repo.dirstate.p1() |
16708
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4243 if len(nbhs) == 1: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4244 if len(bheads) > 1: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4245 raise util.Abort(_("heads are bookmarked - " |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4246 "please merge with an explicit rev"), |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4247 hint=_("run 'hg heads' to see all heads")) |
6723
1fe6f365df2e
merge: only in-branch merges can be implicit
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6686
diff
changeset
|
4248 if len(repo.heads()) > 1: |
14198
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4249 raise util.Abort(_("branch '%s' has one head - " |
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4250 "please merge with an explicit rev") |
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4251 % branch, |
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4252 hint=_("run 'hg heads' to see all heads")) |
15619
6c8573dd1b6b
merge: make 'nothing to merge' aborts consistent
Kevin Bullock <kbullock@ringworld.org>
parents:
15618
diff
changeset
|
4253 msg, hint = _('nothing to merge'), None |
15618
0aca2695a110
merge: remove excess creation of changectx
Kevin Bullock <kbullock@ringworld.org>
parents:
15614
diff
changeset
|
4254 if parent != repo.lookup(branch): |
15619
6c8573dd1b6b
merge: make 'nothing to merge' aborts consistent
Kevin Bullock <kbullock@ringworld.org>
parents:
15618
diff
changeset
|
4255 hint = _("use 'hg update' instead") |
6c8573dd1b6b
merge: make 'nothing to merge' aborts consistent
Kevin Bullock <kbullock@ringworld.org>
parents:
15618
diff
changeset
|
4256 raise util.Abort(msg, hint=hint) |
5242
9cd6578750b9
improve error message for 'hg merge' when repo already at branchtip
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
5205
diff
changeset
|
4257 |
6723
1fe6f365df2e
merge: only in-branch merges can be implicit
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6686
diff
changeset
|
4258 if parent not in bheads: |
14198
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4259 raise util.Abort(_('working directory not at a head revision'), |
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4260 hint=_("use 'hg update' or merge with an " |
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4261 "explicit revision")) |
16708
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4262 if parent == nbhs[0]: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4263 node = nbhs[-1] |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4264 else: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4265 node = nbhs[0] |
8387
50b6af595e0c
merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8366
diff
changeset
|
4266 |
8834
6d36fc70754e
merge: rename -S/--show option to -P/--preview
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8815
diff
changeset
|
4267 if opts.get('preview'): |
10505
b3311e26f94f
merge: fix --preview to show all nodes that will be merged (issue2043).
Greg Ward <greg-hg@gerg.ca>
parents:
10479
diff
changeset
|
4268 # find nodes that are ancestors of p2 but not of p1 |
b3311e26f94f
merge: fix --preview to show all nodes that will be merged (issue2043).
Greg Ward <greg-hg@gerg.ca>
parents:
10479
diff
changeset
|
4269 p1 = repo.lookup('.') |
b3311e26f94f
merge: fix --preview to show all nodes that will be merged (issue2043).
Greg Ward <greg-hg@gerg.ca>
parents:
10479
diff
changeset
|
4270 p2 = repo.lookup(node) |
b3311e26f94f
merge: fix --preview to show all nodes that will be merged (issue2043).
Greg Ward <greg-hg@gerg.ca>
parents:
10479
diff
changeset
|
4271 nodes = repo.changelog.findmissing(common=[p1], heads=[p2]) |
b3311e26f94f
merge: fix --preview to show all nodes that will be merged (issue2043).
Greg Ward <greg-hg@gerg.ca>
parents:
10479
diff
changeset
|
4272 |
8387
50b6af595e0c
merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8366
diff
changeset
|
4273 displayer = cmdutil.show_changeset(ui, repo, opts) |
10505
b3311e26f94f
merge: fix --preview to show all nodes that will be merged (issue2043).
Greg Ward <greg-hg@gerg.ca>
parents:
10479
diff
changeset
|
4274 for node in nodes: |
b3311e26f94f
merge: fix --preview to show all nodes that will be merged (issue2043).
Greg Ward <greg-hg@gerg.ca>
parents:
10479
diff
changeset
|
4275 displayer.show(repo[node]) |
10152
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
4276 displayer.close() |
8387
50b6af595e0c
merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8366
diff
changeset
|
4277 return 0 |
50b6af595e0c
merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8366
diff
changeset
|
4278 |
12788
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4279 try: |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4280 # ui.forcemerge is an internal variable, do not document |
14840
11b5a5d2ca8b
commands, merge: call setconfig on the right ui
Idan Kamara <idankk86@gmail.com>
parents:
14755
diff
changeset
|
4281 repo.ui.setconfig('ui', 'forcemerge', opts.get('tool', '')) |
12788
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4282 return hg.merge(repo, node, force=opts.get('force')) |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4283 finally: |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4284 ui.setconfig('ui', 'forcemerge', '') |
2029
d436b21b20dc
rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2022
diff
changeset
|
4285 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4286 @command('outgoing|out', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4287 [('f', 'force', None, _('run even when the destination is unrelated')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4288 ('r', 'rev', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4289 _('a changeset intended to be included in the destination'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4290 ('n', 'newest-first', None, _('show newest record first')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4291 ('B', 'bookmarks', False, _('compare bookmarks')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4292 ('b', 'branch', [], _('a specific branch you would like to push'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4293 _('BRANCH')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4294 ] + logopts + remoteopts + subrepoopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4295 _('[-M] [-p] [-n] [-f] [-r REV]... [DEST]')) |
2494
73ac95671788
push, outgoing, bundle: fall back to "default" if "default-push" not defined
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2493
diff
changeset
|
4296 def outgoing(ui, repo, dest=None, **opts): |
10376 | 4297 """show changesets not found in the destination |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4298 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4299 Show changesets not found in the specified destination repository |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4300 or the default push location. These are the changesets that would |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4301 be pushed if a push was requested. |
1811
6cb548cffdf5
resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1804
diff
changeset
|
4302 |
10376 | 4303 See pull for details of valid destination formats. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4304 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4305 Returns 0 if there are outgoing changes, 1 otherwise. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4306 """ |
17182
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4307 if opts.get('graph'): |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4308 cmdutil.checkunsupportedgraphflags([], opts) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4309 o = hg._outgoing(ui, repo, dest, opts) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4310 if o is None: |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4311 return |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4312 |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4313 revdag = cmdutil.graphrevs(repo, o, opts) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4314 displayer = cmdutil.show_changeset(ui, repo, opts, buffered=True) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4315 showparents = [ctx.node() for ctx in repo[None].parents()] |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4316 cmdutil.displaygraph(ui, revdag, displayer, showparents, |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4317 graphmod.asciiedges) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4318 return 0 |
13366
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
4319 |
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
4320 if opts.get('bookmarks'): |
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
4321 dest = ui.expandpath(dest or 'default-push', dest or 'default') |
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
4322 dest, branches = hg.parseurl(dest, opts.get('branch')) |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
4323 other = hg.peer(repo, opts, dest) |
13453
c1b808020819
bookmarks: issue a warning if remote doesn't support comparing bookmarks
David Soria Parra <dsp@php.net>
parents:
13448
diff
changeset
|
4324 if 'bookmarks' not in other.listkeys('namespaces'): |
c1b808020819
bookmarks: issue a warning if remote doesn't support comparing bookmarks
David Soria Parra <dsp@php.net>
parents:
13448
diff
changeset
|
4325 ui.warn(_("remote doesn't support bookmarks\n")) |
c1b808020819
bookmarks: issue a warning if remote doesn't support comparing bookmarks
David Soria Parra <dsp@php.net>
parents:
13448
diff
changeset
|
4326 return 0 |
14076
924c82157d46
url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents:
14073
diff
changeset
|
4327 ui.status(_('comparing with %s\n') % util.hidepassword(dest)) |
13366
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
4328 return bookmarks.diff(ui, other, repo) |
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
4329 |
14360
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
4330 repo._subtoppath = ui.expandpath(dest or 'default-push', dest or 'default') |
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
4331 try: |
14362
8c740a850ad7
commands: replace 'x = f(); return x' with 'return f()'
Martin Geisler <mg@lazybytes.net>
parents:
14361
diff
changeset
|
4332 return hg.outgoing(ui, repo, dest, opts) |
14360
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
4333 finally: |
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
4334 del repo._subtoppath |
920 | 4335 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4336 @command('parents', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4337 [('r', 'rev', '', _('show parents of the specified revision'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4338 ] + templateopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4339 _('[-r REV] [FILE]')) |
3658
d12c8668b102
remove legacy hg parents REV syntax
Matt Mackall <mpm@selenic.com>
parents:
3657
diff
changeset
|
4340 def parents(ui, repo, file_=None, **opts): |
8026
683d8ebcf434
expand "dir" to "directory" in help texts
Martin Geisler <mg@lazybytes.net>
parents:
8021
diff
changeset
|
4341 """show the parents of the working directory or revision |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4342 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4343 Print the working directory's parent revisions. If a revision is |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
4344 given via -r/--rev, the parent of that revision will be printed. |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4345 If a file argument is given, the revision in which the file was |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4346 last changed (before the working directory revision or the |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4347 argument to --rev if given) is printed. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4348 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4349 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4350 """ |
12925
6eab8f0df2ca
commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents:
12918
diff
changeset
|
4351 |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
4352 ctx = scmutil.revsingle(repo, opts.get('rev'), None) |
5298
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4353 |
4586
1fcc076fcb17
Make parents with a file but not a revision use working directory revision.
Brendan Cully <brendan@kublai.com>
parents:
4451
diff
changeset
|
4354 if file_: |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
4355 m = scmutil.match(ctx, (file_,), opts) |
6582
5acbdd3941c4
walk: remove remaining users of cmdutils.matchpats
Matt Mackall <mpm@selenic.com>
parents:
6579
diff
changeset
|
4356 if m.anypats() or len(m.files()) != 1: |
8761
0289f384e1e5
Generally replace "file name" with "filename" in help and comments.
timeless <timeless@gmail.com>
parents:
8760
diff
changeset
|
4357 raise util.Abort(_('can only specify an explicit filename')) |
6582
5acbdd3941c4
walk: remove remaining users of cmdutils.matchpats
Matt Mackall <mpm@selenic.com>
parents:
6579
diff
changeset
|
4358 file_ = m.files()[0] |
5298
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4359 filenodes = [] |
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4360 for cp in ctx.parents(): |
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4361 if not cp: |
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4362 continue |
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4363 try: |
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4364 filenodes.append(cp.filenode(file_)) |
7633 | 4365 except error.LookupError: |
5298
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4366 pass |
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4367 if not filenodes: |
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4368 raise util.Abort(_("'%s' not found in manifest!") % file_) |
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4369 fl = repo.file(file_) |
7361
9fe97eea5510
linkrev: take a revision number rather than a hash
Matt Mackall <mpm@selenic.com>
parents:
7308
diff
changeset
|
4370 p = [repo.lookup(fl.linkrev(fl.rev(fn))) for fn in filenodes] |
255 | 4371 else: |
5298
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4372 p = [cp.node() for cp in ctx.parents()] |
255 | 4373 |
3643
b4ad640a3bcf
templates: move changeset templating bits to cmdutils
Matt Mackall <mpm@selenic.com>
parents:
3631
diff
changeset
|
4374 displayer = cmdutil.show_changeset(ui, repo, opts) |
255 | 4375 for n in p: |
1092 | 4376 if n != nullid: |
7743
ec9b726a9428
commands: fix paths command docstring indention
Martin Geisler <mg@daimi.au.dk>
parents:
7739
diff
changeset
|
4377 displayer.show(repo[n]) |
10152
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
4378 displayer.close() |
255 | 4379 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4380 @command('paths', [], _('[NAME]')) |
1858
9fab6e903bae
Make hg paths and hg debugconfig work with -R/--repository option.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1857
diff
changeset
|
4381 def paths(ui, repo, search=None): |
7691
bcdc2fe3fd07
Clarified 'hg paths' command help
Bill Barry <after.fallout@gmail.com>
parents:
7684
diff
changeset
|
4382 """show aliases for remote repositories |
bcdc2fe3fd07
Clarified 'hg paths' command help
Bill Barry <after.fallout@gmail.com>
parents:
7684
diff
changeset
|
4383 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4384 Show definition of symbolic path name NAME. If no name is given, |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4385 show definition of all available names. |
7743
ec9b726a9428
commands: fix paths command docstring indention
Martin Geisler <mg@daimi.au.dk>
parents:
7739
diff
changeset
|
4386 |
14331
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4387 Option -q/--quiet suppresses all output when searching for NAME |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4388 and shows only the path names when listing all definitions. |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4389 |
12083
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
12067
diff
changeset
|
4390 Path names are defined in the [paths] section of your |
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
12067
diff
changeset
|
4391 configuration file and in ``/etc/mercurial/hgrc``. If run inside a |
11009
4d3288197717
commands: better markup in "hg help paths"
Martin Geisler <mg@lazybytes.net>
parents:
11008
diff
changeset
|
4392 repository, ``.hg/hgrc`` is used, too. |
7693
e040f9d6b2f3
consolidated url help into urls help topic and added information about path aliases
Bill Barry <after.fallout@gmail.com>
parents:
7691
diff
changeset
|
4393 |
11007
a0102da324ab
commands: revised documentation of 'default' and 'default-push'
Faheem Mitha <faheem@email.unc.edu>
parents:
10948
diff
changeset
|
4394 The path names ``default`` and ``default-push`` have a special |
a0102da324ab
commands: revised documentation of 'default' and 'default-push'
Faheem Mitha <faheem@email.unc.edu>
parents:
10948
diff
changeset
|
4395 meaning. When performing a push or pull operation, they are used |
a0102da324ab
commands: revised documentation of 'default' and 'default-push'
Faheem Mitha <faheem@email.unc.edu>
parents:
10948
diff
changeset
|
4396 as fallbacks if no location is specified on the command-line. |
a0102da324ab
commands: revised documentation of 'default' and 'default-push'
Faheem Mitha <faheem@email.unc.edu>
parents:
10948
diff
changeset
|
4397 When ``default-push`` is set, it will be used for push and |
a0102da324ab
commands: revised documentation of 'default' and 'default-push'
Faheem Mitha <faheem@email.unc.edu>
parents:
10948
diff
changeset
|
4398 ``default`` will be used for pull; otherwise ``default`` is used |
a0102da324ab
commands: revised documentation of 'default' and 'default-push'
Faheem Mitha <faheem@email.unc.edu>
parents:
10948
diff
changeset
|
4399 as the fallback for both. When cloning a repository, the clone |
a0102da324ab
commands: revised documentation of 'default' and 'default-push'
Faheem Mitha <faheem@email.unc.edu>
parents:
10948
diff
changeset
|
4400 source is written as ``default`` in ``.hg/hgrc``. Note that |
11009
4d3288197717
commands: better markup in "hg help paths"
Martin Geisler <mg@lazybytes.net>
parents:
11008
diff
changeset
|
4401 ``default`` and ``default-push`` apply to all inbound (e.g. |
4d3288197717
commands: better markup in "hg help paths"
Martin Geisler <mg@lazybytes.net>
parents:
11008
diff
changeset
|
4402 :hg:`incoming`) and outbound (e.g. :hg:`outgoing`, :hg:`email` and |
4d3288197717
commands: better markup in "hg help paths"
Martin Geisler <mg@lazybytes.net>
parents:
11008
diff
changeset
|
4403 :hg:`bundle`) operations. |
10933
e3396b218e10
Document 'default' and 'default-push' in paths docstring
Faheem Mitha <faheem@email.unc.edu>
parents:
10645
diff
changeset
|
4404 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
4405 See :hg:`help urls` for more information. |
11507
35e2d453cf0d
commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11488
diff
changeset
|
4406 |
35e2d453cf0d
commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11488
diff
changeset
|
4407 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4408 """ |
779 | 4409 if search: |
4410 for name, path in ui.configitems("paths"): | |
4411 if name == search: | |
14331
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4412 ui.status("%s\n" % util.hidepassword(path)) |
779 | 4413 return |
14331
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4414 if not ui.quiet: |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4415 ui.warn(_("not found!\n")) |
779 | 4416 return 1 |
4417 else: | |
4418 for name, path in ui.configitems("paths"): | |
14331
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4419 if ui.quiet: |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4420 ui.write("%s\n" % name) |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4421 else: |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4422 ui.write("%s = %s\n" % (name, util.hidepassword(path))) |
779 | 4423 |
15830
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4424 @command('^phase', |
15849
513ca86b88ef
phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents:
15837
diff
changeset
|
4425 [('p', 'public', False, _('set changeset phase to public')), |
513ca86b88ef
phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents:
15837
diff
changeset
|
4426 ('d', 'draft', False, _('set changeset phase to draft')), |
513ca86b88ef
phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents:
15837
diff
changeset
|
4427 ('s', 'secret', False, _('set changeset phase to secret')), |
15830
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4428 ('f', 'force', False, _('allow to move boundary backward')), |
15855
09757185ce97
phase: add metavar to -r help text
Martin Geisler <mg@aragost.com>
parents:
15854
diff
changeset
|
4429 ('r', 'rev', [], _('target revision'), _('REV')), |
15830
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4430 ], |
15854
2260e6ed09c3
phase: the REV argument can be repeated
Martin Geisler <mg@aragost.com>
parents:
15853
diff
changeset
|
4431 _('[-p|-d|-s] [-f] [-r] REV...')) |
15830
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4432 def phase(ui, repo, *revs, **opts): |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4433 """set or show the current phase name |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4434 |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4435 With no argument, show the phase name of specified revisions. |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4436 |
15851
05ccad068313
phase: use standard syntax for command line flags
Martin Geisler <mg@aragost.com>
parents:
15850
diff
changeset
|
4437 With one of -p/--public, -d/--draft or -s/--secret, change the |
15850
920433707a01
phase: fix RST markup (use ``...`` for literal text)
Martin Geisler <mg@aragost.com>
parents:
15849
diff
changeset
|
4438 phase value of the specified revisions. |
15830
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4439 |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4440 Unless -f/--force is specified, :hg:`phase` won't move changeset from a |
15850
920433707a01
phase: fix RST markup (use ``...`` for literal text)
Martin Geisler <mg@aragost.com>
parents:
15849
diff
changeset
|
4441 lower phase to an higher phase. Phases are ordered as follows:: |
15832 | 4442 |
4443 public < draft < secret | |
15906
aad565319fa3
phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15877
diff
changeset
|
4444 |
16097
8dc573a9c5e5
phase: when phase cannot be reduced, hint at --force and return 1 (BC)
Patrick Mezard <patrick@mezard.eu>
parents:
16095
diff
changeset
|
4445 Return 0 on success, 1 if no phases were changed or some could not |
8dc573a9c5e5
phase: when phase cannot be reduced, hint at --force and return 1 (BC)
Patrick Mezard <patrick@mezard.eu>
parents:
16095
diff
changeset
|
4446 be changed. |
15830
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4447 """ |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4448 # search for a unique phase argument |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4449 targetphase = None |
15853
fbb68b382040
commands: no need to rename merge and phases on import
Martin Geisler <mg@aragost.com>
parents:
15852
diff
changeset
|
4450 for idx, name in enumerate(phases.phasenames): |
15830
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4451 if opts[name]: |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4452 if targetphase is not None: |
15833
3cf2bb3a9fcc
phase: mark messages for i18n
Matt Mackall <mpm@selenic.com>
parents:
15832
diff
changeset
|
4453 raise util.Abort(_('only one phase can be specified')) |
15830
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4454 targetphase = idx |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4455 |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4456 # look for specified revision |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4457 revs = list(revs) |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4458 revs.extend(opts['rev']) |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4459 if not revs: |
15958
0d2ac0299020
commands: drop exclamation mark in abort message
Idan Kamara <idankk86@gmail.com>
parents:
15957
diff
changeset
|
4460 raise util.Abort(_('no revisions specified')) |
15831
0ecaf1e72609
phase: drop reference to working directory phase
Matt Mackall <mpm@selenic.com>
parents:
15830
diff
changeset
|
4461 |
16024
7c967c4a6144
phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16023
diff
changeset
|
4462 revs = scmutil.revrange(repo, revs) |
7c967c4a6144
phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16023
diff
changeset
|
4463 |
15830
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4464 lock = None |
15906
aad565319fa3
phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15877
diff
changeset
|
4465 ret = 0 |
15830
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4466 if targetphase is None: |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4467 # display |
16024
7c967c4a6144
phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16023
diff
changeset
|
4468 for r in revs: |
7c967c4a6144
phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16023
diff
changeset
|
4469 ctx = repo[r] |
15830
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4470 ui.write('%i: %s\n' % (ctx.rev(), ctx.phasestr())) |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4471 else: |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4472 lock = repo.lock() |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4473 try: |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4474 # set phase |
16659
58edd786e96f
phase: make if abort on nullid for the good reason
Patrick Mezard <patrick@mezard.eu>
parents:
16657
diff
changeset
|
4475 if not revs: |
58edd786e96f
phase: make if abort on nullid for the good reason
Patrick Mezard <patrick@mezard.eu>
parents:
16657
diff
changeset
|
4476 raise util.Abort(_('empty revision set')) |
58edd786e96f
phase: make if abort on nullid for the good reason
Patrick Mezard <patrick@mezard.eu>
parents:
16657
diff
changeset
|
4477 nodes = [repo[r].node() for r in revs] |
16657
b6081c2c4647
phases: introduce phasecache
Patrick Mezard <patrick@mezard.eu>
parents:
16648
diff
changeset
|
4478 olddata = repo._phasecache.getphaserevs(repo)[:] |
15853
fbb68b382040
commands: no need to rename merge and phases on import
Martin Geisler <mg@aragost.com>
parents:
15852
diff
changeset
|
4479 phases.advanceboundary(repo, targetphase, nodes) |
15830
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4480 if opts['force']: |
15853
fbb68b382040
commands: no need to rename merge and phases on import
Martin Geisler <mg@aragost.com>
parents:
15852
diff
changeset
|
4481 phases.retractboundary(repo, targetphase, nodes) |
15830
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4482 finally: |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4483 lock.release() |
16715
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4484 newdata = repo._phasecache.getphaserevs(repo) |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4485 changes = sum(o != newdata[i] for i, o in enumerate(olddata)) |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4486 rejected = [n for n in nodes |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4487 if newdata[repo[n].rev()] < targetphase] |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4488 if rejected: |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4489 ui.warn(_('cannot move %i changesets to a more permissive ' |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4490 'phase, use --force\n') % len(rejected)) |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4491 ret = 1 |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4492 if changes: |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4493 msg = _('phase changed for %i changesets\n') % changes |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4494 if ret: |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4495 ui.status(msg) |
15906
aad565319fa3
phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15877
diff
changeset
|
4496 else: |
16715
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4497 ui.note(msg) |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4498 else: |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4499 ui.warn(_('no phases changed\n')) |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4500 ret = 1 |
15968
bf87b6b95ce5
phase: alway return a value
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15959
diff
changeset
|
4501 return ret |
15830
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4502 |
5224
20817af258d8
pull -u: if "url#rev" was given, update to rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5222
diff
changeset
|
4503 def postincoming(ui, repo, modheads, optupdate, checkout): |
2019
ced2d3620f95
add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1996
diff
changeset
|
4504 if modheads == 0: |
16107
a3dcc59054ca
pull: backout change to return code
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
4505 return |
2019
ced2d3620f95
add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1996
diff
changeset
|
4506 if optupdate: |
16019
eb85d5f89fef
bookmarks: move current bookmark on update -u and bare pull -u (issue3222)
Matt Mackall <mpm@selenic.com>
parents:
16010
diff
changeset
|
4507 movemarkfrom = repo['.'].node() |
14485
610873cf064a
Make pull -u behave like pull && update
Brendan Cully <brendan@kublai.com>
parents:
14466
diff
changeset
|
4508 try: |
16019
eb85d5f89fef
bookmarks: move current bookmark on update -u and bare pull -u (issue3222)
Matt Mackall <mpm@selenic.com>
parents:
16010
diff
changeset
|
4509 ret = hg.update(repo, checkout) |
14485
610873cf064a
Make pull -u behave like pull && update
Brendan Cully <brendan@kublai.com>
parents:
14466
diff
changeset
|
4510 except util.Abort, inst: |
16230
d4d35fd0889d
update: don't translate the abort message twice
Javi Merino <cibervicho@gmail.com>
parents:
16219
diff
changeset
|
4511 ui.warn(_("not updating: %s\n") % str(inst)) |
14485
610873cf064a
Make pull -u behave like pull && update
Brendan Cully <brendan@kublai.com>
parents:
14466
diff
changeset
|
4512 return 0 |
16019
eb85d5f89fef
bookmarks: move current bookmark on update -u and bare pull -u (issue3222)
Matt Mackall <mpm@selenic.com>
parents:
16010
diff
changeset
|
4513 if not ret and not checkout: |
eb85d5f89fef
bookmarks: move current bookmark on update -u and bare pull -u (issue3222)
Matt Mackall <mpm@selenic.com>
parents:
16010
diff
changeset
|
4514 if bookmarks.update(repo, [movemarkfrom], repo['.'].node()): |
eb85d5f89fef
bookmarks: move current bookmark on update -u and bare pull -u (issue3222)
Matt Mackall <mpm@selenic.com>
parents:
16010
diff
changeset
|
4515 ui.status(_("updating bookmark %s\n") % repo._bookmarkcurrent) |
eb85d5f89fef
bookmarks: move current bookmark on update -u and bare pull -u (issue3222)
Matt Mackall <mpm@selenic.com>
parents:
16010
diff
changeset
|
4516 return ret |
2019
ced2d3620f95
add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1996
diff
changeset
|
4517 if modheads > 1: |
13804
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
4518 currentbranchheads = len(repo.branchheads()) |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
4519 if currentbranchheads == modheads: |
13803
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13767
diff
changeset
|
4520 ui.status(_("(run 'hg heads' to see heads, 'hg merge' to merge)\n")) |
13804
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
4521 elif currentbranchheads > 1: |
16683 | 4522 ui.status(_("(run 'hg heads .' to see heads, 'hg merge' to " |
4523 "merge)\n")) | |
2019
ced2d3620f95
add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1996
diff
changeset
|
4524 else: |
13803
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13767
diff
changeset
|
4525 ui.status(_("(run 'hg heads' to see heads)\n")) |
2019
ced2d3620f95
add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1996
diff
changeset
|
4526 else: |
ced2d3620f95
add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1996
diff
changeset
|
4527 ui.status(_("(run 'hg update' to get a working copy)\n")) |
2029
d436b21b20dc
rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2022
diff
changeset
|
4528 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4529 @command('^pull', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4530 [('u', 'update', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4531 _('update to new branch head if changesets were pulled')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4532 ('f', 'force', None, _('run even when remote repository is unrelated')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4533 ('r', 'rev', [], _('a remote changeset intended to be added'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4534 ('B', 'bookmark', [], _("bookmark to pull"), _('BOOKMARK')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4535 ('b', 'branch', [], _('a specific branch you would like to pull'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4536 _('BRANCH')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4537 ] + remoteopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4538 _('[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]')) |
404 | 4539 def pull(ui, repo, source="default", **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4540 """pull changes from the specified source |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4541 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4542 Pull changes from a remote repository to a local one. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4543 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4544 This finds all changes from the repository at the specified path |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4545 or URL and adds them to a local repository (the current one unless |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4546 -R is specified). By default, this does not update the copy of the |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4547 project in the working directory. |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4548 |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
4549 Use :hg:`incoming` if you want to see what would have been added |
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
4550 by a pull at the time you issued this command. If you then decide |
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
4551 to add those changes to the repository, you should use :hg:`pull |
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
4552 -r X` where ``X`` is the last changeset listed by :hg:`incoming`. |
7980
3d8252430e17
commands: make pull help point to the incoming command
Martin Geisler <mg@daimi.au.dk>
parents:
7979
diff
changeset
|
4553 |
7693
e040f9d6b2f3
consolidated url help into urls help topic and added information about path aliases
Bill Barry <after.fallout@gmail.com>
parents:
7691
diff
changeset
|
4554 If SOURCE is omitted, the 'default' path will be used. |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
4555 See :hg:`help urls` for more information. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4556 |
16107
a3dcc59054ca
pull: backout change to return code
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
4557 Returns 0 on success, 1 if an update had unresolved files. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4558 """ |
10379
a78bfaf988e1
add -b/--branch option to clone, bundle, incoming, outgoing, pull, push
Sune Foldager <cryo@cyanite.org>
parents:
10376
diff
changeset
|
4559 source, branches = hg.parseurl(ui.expandpath(source), opts.get('branch')) |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
4560 other = hg.peer(repo, opts, source) |
14076
924c82157d46
url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents:
14073
diff
changeset
|
4561 ui.status(_('pulling from %s\n') % util.hidepassword(source)) |
10365
d757bc0c7865
interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents:
10364
diff
changeset
|
4562 revs, checkout = hg.addbranchrevs(repo, other, branches, opts.get('rev')) |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4563 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4564 if opts.get('bookmark'): |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4565 if not revs: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4566 revs = [] |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4567 rb = other.listkeys('bookmarks') |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4568 for b in opts['bookmark']: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4569 if b not in rb: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4570 raise util.Abort(_('remote bookmark %s not found!') % b) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4571 revs.append(rb[b]) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4572 |
4478
b2b55acbacdd
Add support for url#id syntax
Matt Mackall <mpm@selenic.com>
parents:
4474
diff
changeset
|
4573 if revs: |
5259
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
5248
diff
changeset
|
4574 try: |
4478
b2b55acbacdd
Add support for url#id syntax
Matt Mackall <mpm@selenic.com>
parents:
4474
diff
changeset
|
4575 revs = [other.lookup(rev) for rev in revs] |
7637 | 4576 except error.CapabilityError: |
12128
090dc5eef746
pull: lowercase error message
Martin Geisler <mg@lazybytes.net>
parents:
12083
diff
changeset
|
4577 err = _("other repository doesn't support revision lookup, " |
7637 | 4578 "so a rev cannot be specified.") |
4579 raise util.Abort(err) | |
4478
b2b55acbacdd
Add support for url#id syntax
Matt Mackall <mpm@selenic.com>
parents:
4474
diff
changeset
|
4580 |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
4581 modheads = repo.pull(other, heads=revs, force=opts.get('force')) |
15614
260a6449d83a
bookmarks: mark divergent bookmarks with book@pathalias when source in [paths]
Matt Mackall <mpm@selenic.com>
parents:
15611
diff
changeset
|
4582 bookmarks.updatefromremote(ui, repo, other, source) |
9645
02f40b2ece3f
commands: use rev from remote repo when updating as part of a pull
timeless@mozdev.org
parents:
9644
diff
changeset
|
4583 if checkout: |
02f40b2ece3f
commands: use rev from remote repo when updating as part of a pull
timeless@mozdev.org
parents:
9644
diff
changeset
|
4584 checkout = str(repo.changelog.rev(other.lookup(checkout))) |
12852
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4585 repo._subtoppath = source |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4586 try: |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4587 ret = postincoming(ui, repo, modheads, opts.get('update'), checkout) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4588 |
12852
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4589 finally: |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4590 del repo._subtoppath |
246
96cde50a746f
Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents:
245
diff
changeset
|
4591 |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4592 # update specified bookmarks |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4593 if opts.get('bookmark'): |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4594 for b in opts['bookmark']: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4595 # explicit pull overrides local bookmark if any |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4596 ui.status(_("importing bookmark %s\n") % b) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4597 repo._bookmarks[b] = repo[rb[b]].node() |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4598 bookmarks.write(repo) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4599 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4600 return ret |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4601 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4602 @command('^push', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4603 [('f', 'force', None, _('force push')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4604 ('r', 'rev', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4605 _('a changeset intended to be included in the destination'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4606 _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4607 ('B', 'bookmark', [], _("bookmark to push"), _('BOOKMARK')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4608 ('b', 'branch', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4609 _('a specific branch you would like to push'), _('BRANCH')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4610 ('', 'new-branch', False, _('allow pushing a new branch')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4611 ] + remoteopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4612 _('[-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]')) |
2494
73ac95671788
push, outgoing, bundle: fall back to "default" if "default-push" not defined
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2493
diff
changeset
|
4613 def push(ui, repo, dest=None, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4614 """push changes to the specified destination |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4615 |
11217
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4616 Push changesets from the local repository to the specified |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4617 destination. |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4618 |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4619 This operation is symmetrical to pull: it is identical to a pull |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4620 in the destination repository from the current one. |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4621 |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4622 By default, push will not allow creation of new heads at the |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4623 destination, since multiple heads would make it unclear which head |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4624 to use. In this situation, it is recommended to pull and merge |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4625 before pushing. |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4626 |
11219
39a7f69a0a9a
commands: document --new-branch flag for push
Martin Geisler <mg@aragost.com>
parents:
11218
diff
changeset
|
4627 Use --new-branch if you want to allow push to create a new named |
39a7f69a0a9a
commands: document --new-branch flag for push
Martin Geisler <mg@aragost.com>
parents:
11218
diff
changeset
|
4628 branch that is not present at the destination. This allows you to |
39a7f69a0a9a
commands: document --new-branch flag for push
Martin Geisler <mg@aragost.com>
parents:
11218
diff
changeset
|
4629 only create a new branch without forcing other changes. |
39a7f69a0a9a
commands: document --new-branch flag for push
Martin Geisler <mg@aragost.com>
parents:
11218
diff
changeset
|
4630 |
11217
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4631 Use -f/--force to override the default behavior and push all |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4632 changesets on all branches. |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4633 |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4634 If -r/--rev is used, the specified revision and all its ancestors |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4635 will be pushed to the remote repository. |
7693
e040f9d6b2f3
consolidated url help into urls help topic and added information about path aliases
Bill Barry <after.fallout@gmail.com>
parents:
7691
diff
changeset
|
4636 |
17190
d99d0b559084
bookmarks: document behavior of -B/--bookmark in help
Augie Fackler <raf@durin42.com>
parents:
17188
diff
changeset
|
4637 If -B/--bookmark is used, the specified bookmarked revision, its |
d99d0b559084
bookmarks: document behavior of -B/--bookmark in help
Augie Fackler <raf@durin42.com>
parents:
17188
diff
changeset
|
4638 ancestors, and the bookmark will be pushed to the remote |
d99d0b559084
bookmarks: document behavior of -B/--bookmark in help
Augie Fackler <raf@durin42.com>
parents:
17188
diff
changeset
|
4639 repository. |
d99d0b559084
bookmarks: document behavior of -B/--bookmark in help
Augie Fackler <raf@durin42.com>
parents:
17188
diff
changeset
|
4640 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
4641 Please see :hg:`help urls` for important details about ``ssh://`` |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4642 URLs. If DESTINATION is omitted, a default path will be used. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4643 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4644 Returns 0 if push was successful, 1 if nothing to push. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4645 """ |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4646 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4647 if opts.get('bookmark'): |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4648 for b in opts['bookmark']: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4649 # translate -B options to -r so changesets get pushed |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4650 if b in repo._bookmarks: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4651 opts.setdefault('rev', []).append(b) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4652 else: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4653 # if we try to push a deleted bookmark, translate it to null |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4654 # this lets simultaneous -r, -b options continue working |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4655 opts.setdefault('rev', []).append("null") |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4656 |
10365
d757bc0c7865
interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents:
10364
diff
changeset
|
4657 dest = ui.expandpath(dest or 'default-push', dest or 'default') |
10379
a78bfaf988e1
add -b/--branch option to clone, bundle, incoming, outgoing, pull, push
Sune Foldager <cryo@cyanite.org>
parents:
10376
diff
changeset
|
4658 dest, branches = hg.parseurl(dest, opts.get('branch')) |
14076
924c82157d46
url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents:
14073
diff
changeset
|
4659 ui.status(_('pushing to %s\n') % util.hidepassword(dest)) |
10365
d757bc0c7865
interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents:
10364
diff
changeset
|
4660 revs, checkout = hg.addbranchrevs(repo, repo, branches, opts.get('rev')) |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
4661 other = hg.peer(repo, opts, dest) |
4478
b2b55acbacdd
Add support for url#id syntax
Matt Mackall <mpm@selenic.com>
parents:
4474
diff
changeset
|
4662 if revs: |
17168
e058f4eec69c
push: accept revset argument for --rev
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
17149
diff
changeset
|
4663 revs = [repo.lookup(r) for r in scmutil.revrange(repo, revs)] |
8815
e87b0fc4750b
subrepo: basic push support
Matt Mackall <mpm@selenic.com>
parents:
8812
diff
changeset
|
4664 |
12852
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4665 repo._subtoppath = dest |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4666 try: |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4667 # push subrepos depth-first for coherent ordering |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4668 c = repo[''] |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4669 subs = c.substate # only repos that are committed |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4670 for s in sorted(subs): |
16022
04604d1a9fc3
push: more precise failure check on subrepo push
Matt Mackall <mpm@selenic.com>
parents:
16021
diff
changeset
|
4671 if c.sub(s).push(opts) == 0: |
12852
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4672 return False |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4673 finally: |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4674 del repo._subtoppath |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4675 result = repo.push(other, opts.get('force'), revs=revs, |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4676 newbranch=opts.get('new_branch')) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4677 |
16023
90f8b8dd0326
push: return 1 if no changes found (issue3228)
Matt Mackall <mpm@selenic.com>
parents:
16022
diff
changeset
|
4678 result = not result |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4679 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4680 if opts.get('bookmark'): |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4681 rb = other.listkeys('bookmarks') |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4682 for b in opts['bookmark']: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4683 # explicit push overrides remote bookmark if any |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4684 if b in repo._bookmarks: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4685 ui.status(_("exporting bookmark %s\n") % b) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4686 new = repo[b].hex() |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4687 elif b in rb: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4688 ui.status(_("deleting remote bookmark %s\n") % b) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4689 new = '' # delete |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4690 else: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4691 ui.warn(_('bookmark %s does not exist on the local ' |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4692 'or remote repository!\n') % b) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4693 return 2 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4694 old = rb.get(b, '') |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4695 r = other.pushkey('bookmarks', b, old, new) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4696 if not r: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4697 ui.warn(_('updating bookmark %s failed!\n') % b) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4698 if not result: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4699 result = 2 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4700 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4701 return result |
319 | 4702 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4703 @command('recover', []) |
245 | 4704 def recover(ui, repo): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4705 """roll back an interrupted transaction |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4706 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4707 Recover from an interrupted commit or pull. |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4708 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4709 This command tries to fix the repository status after an |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4710 interrupted operation. It should only be necessary when Mercurial |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4711 suggests it. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4712 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4713 Returns 0 if successful, 1 if nothing to recover or verify fails. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4714 """ |
1516
0b1b029b4de3
Automatically run "verify" whenever we run "recover"
Matt Mackall <mpm@selenic.com>
parents:
1514
diff
changeset
|
4715 if repo.recover(): |
2778 | 4716 return hg.verify(repo) |
2057
fef2d653beaf
Never exit directly from commands.dispatch(), but pass return code to caller.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
2056
diff
changeset
|
4717 return 1 |
245 | 4718 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4719 @command('^remove|rm', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4720 [('A', 'after', None, _('record delete for missing files')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4721 ('f', 'force', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4722 _('remove (and delete) file even if added or modified')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4723 ] + walkopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4724 _('[OPTION]... FILE...')) |
2179
520dd3d28e9b
add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2175
diff
changeset
|
4725 def remove(ui, repo, *pats, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4726 """remove the specified files on the next commit |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4727 |
15114 | 4728 Schedule the indicated files for removal from the current branch. |
4729 | |
4730 This command schedules the files to be removed at the next commit. | |
4731 To undo a remove before that, see :hg:`revert`. To undo added | |
4732 files, see :hg:`forget`. | |
4733 | |
4734 .. container:: verbose | |
4735 | |
4736 -A/--after can be used to remove only files that have already | |
4737 been deleted, -f/--force can be used to force deletion, and -Af | |
4738 can be used to remove files from the next revision without | |
4739 deleting them from the working directory. | |
4740 | |
4741 The following table details the behavior of remove for different | |
4742 file states (columns) and option combinations (rows). The file | |
4743 states are Added [A], Clean [C], Modified [M] and Missing [!] | |
4744 (as reported by :hg:`status`). The actions are Warn, Remove | |
4745 (from branch) and Delete (from disk): | |
15037
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4746 |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4747 ======= == == == == |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4748 A C M ! |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4749 ======= == == == == |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4750 none W RD W R |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4751 -f R RD RD R |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4752 -A W W W R |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4753 -Af R R R R |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4754 ======= == == == == |
2309
b2f37c7026ca
remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2301
diff
changeset
|
4755 |
15114 | 4756 Note that remove never deletes files in Added [A] state from the |
4757 working directory, not even if option --force is specified. | |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4758 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4759 Returns 0 on success, 1 if any warnings encountered. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4760 """ |
6346
8e3b651382f5
improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6336
diff
changeset
|
4761 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4762 ret = 0 |
6346
8e3b651382f5
improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6336
diff
changeset
|
4763 after, force = opts.get('after'), opts.get('force') |
8e3b651382f5
improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6336
diff
changeset
|
4764 if not pats and not after: |
2179
520dd3d28e9b
add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2175
diff
changeset
|
4765 raise util.Abort(_('no files specified')) |
6346
8e3b651382f5
improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6336
diff
changeset
|
4766 |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
4767 m = scmutil.match(repo[None], pats, opts) |
6761
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4768 s = repo.status(match=m, clean=True) |
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4769 modified, added, deleted, clean = s[0], s[1], s[3], s[6] |
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4770 |
8533
6062c6362b2e
remove: warn if unversionned files are specified (issue1454)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
8464
diff
changeset
|
4771 for f in m.files(): |
6062c6362b2e
remove: warn if unversionned files are specified (issue1454)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
8464
diff
changeset
|
4772 if f not in repo.dirstate and not os.path.isdir(m.rel(f)): |
14604
b1a534335548
forget, remove: don't note on nonexistent file twice
Idan Kamara <idankk86@gmail.com>
parents:
14564
diff
changeset
|
4773 if os.path.exists(m.rel(f)): |
b1a534335548
forget, remove: don't note on nonexistent file twice
Idan Kamara <idankk86@gmail.com>
parents:
14564
diff
changeset
|
4774 ui.warn(_('not removing %s: file is untracked\n') % m.rel(f)) |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4775 ret = 1 |
8533
6062c6362b2e
remove: warn if unversionned files are specified (issue1454)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
8464
diff
changeset
|
4776 |
6761
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4777 if force: |
14450
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4778 list = modified + deleted + clean + added |
6761
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4779 elif after: |
14450
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4780 list = deleted |
12129
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4781 for f in modified + added + clean: |
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4782 ui.warn(_('not removing %s: file still exists (use -f' |
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4783 ' to force removal)\n') % m.rel(f)) |
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4784 ret = 1 |
6761
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4785 else: |
14450
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4786 list = deleted + clean |
12129
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4787 for f in modified: |
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4788 ui.warn(_('not removing %s: file is modified (use -f' |
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4789 ' to force removal)\n') % m.rel(f)) |
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4790 ret = 1 |
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4791 for f in added: |
15115
c84b3f42d5ae
remove: suggest forget to undo adds
Matt Mackall <mpm@selenic.com>
parents:
15114
diff
changeset
|
4792 ui.warn(_('not removing %s: file has been marked for add' |
c84b3f42d5ae
remove: suggest forget to undo adds
Matt Mackall <mpm@selenic.com>
parents:
15114
diff
changeset
|
4793 ' (use forget to undo)\n') % m.rel(f)) |
12129
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4794 ret = 1 |
6761
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4795 |
14450
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4796 for f in sorted(list): |
6761
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4797 if ui.verbose or not m.exact(f): |
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4798 ui.status(_('removing %s\n') % m.rel(f)) |
6346
8e3b651382f5
improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6336
diff
changeset
|
4799 |
14450
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4800 wlock = repo.wlock() |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4801 try: |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4802 if not after: |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4803 for f in list: |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4804 if f in added: |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4805 continue # we never unlink added files on remove |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4806 try: |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4807 util.unlinkpath(repo.wjoin(f)) |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4808 except OSError, inst: |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4809 if inst.errno != errno.ENOENT: |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4810 raise |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4811 repo[None].forget(list) |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4812 finally: |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4813 wlock.release() |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4814 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4815 return ret |
245 | 4816 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4817 @command('rename|move|mv', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4818 [('A', 'after', None, _('record a rename that has already occurred')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4819 ('f', 'force', None, _('forcibly copy over an existing managed file')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4820 ] + walkopts + dryrunopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4821 _('[OPTION]... SOURCE... DEST')) |
1253
a45e717c61a8
Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1250
diff
changeset
|
4822 def rename(ui, repo, *pats, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4823 """rename files; equivalent of copy + remove |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4824 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4825 Mark dest as copies of sources; mark sources for deletion. If dest |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4826 is a directory, copies are put in that directory. If dest is a |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4827 file, there can only be one source. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4828 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4829 By default, this command copies the contents of files as they |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
4830 exist in the working directory. If invoked with -A/--after, the |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4831 operation is recorded, but no copying is performed. |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4832 |
7807
bd8f44638847
help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents:
7765
diff
changeset
|
4833 This command takes effect at the next commit. To undo a rename |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
4834 before that, see :hg:`revert`. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4835 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4836 Returns 0 on success, 1 if errors are encountered. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4837 """ |
4914 | 4838 wlock = repo.wlock(False) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4914
diff
changeset
|
4839 try: |
5610
2493a478f395
copy: handle rename internally
Matt Mackall <mpm@selenic.com>
parents:
5589
diff
changeset
|
4840 return cmdutil.copy(ui, repo, pats, opts, rename=True) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4914
diff
changeset
|
4841 finally: |
8109
496ae1ea4698
switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents:
8088
diff
changeset
|
4842 wlock.release() |
1253
a45e717c61a8
Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1250
diff
changeset
|
4843 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4844 @command('resolve', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4845 [('a', 'all', None, _('select all unresolved files')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4846 ('l', 'list', None, _('list state of files needing merge')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4847 ('m', 'mark', None, _('mark files as resolved')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4848 ('u', 'unmark', None, _('mark files as unresolved')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4849 ('n', 'no-status', None, _('hide status prefix'))] |
14852
cac04f2f475b
commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents:
14840
diff
changeset
|
4850 + mergetoolopts + walkopts, |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4851 _('[OPTION]... [FILE]...')) |
6518 | 4852 def resolve(ui, repo, *pats, **opts): |
11836
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4853 """redo merges or set/view the merge status of files |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4854 |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4855 Merges with unresolved conflicts are often the result of |
12083
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
12067
diff
changeset
|
4856 non-interactive merging using the ``internal:merge`` configuration |
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
12067
diff
changeset
|
4857 setting, or a command-line merge tool like ``diff3``. The resolve |
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
12067
diff
changeset
|
4858 command is used to manage the files involved in a merge, after |
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
12067
diff
changeset
|
4859 :hg:`merge` has been run, and before :hg:`commit` is run (i.e. the |
16009
f1208827df7c
resolve: mention merge-tools topic in help
Augie Fackler <durin42@gmail.com>
parents:
15993
diff
changeset
|
4860 working directory must have two parents). See :hg:`help |
f1208827df7c
resolve: mention merge-tools topic in help
Augie Fackler <durin42@gmail.com>
parents:
15993
diff
changeset
|
4861 merge-tools` for information on configuring merge tools. |
11836
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4862 |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4863 The resolve command can be used in the following ways: |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4864 |
12809
e5922564ab01
help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents:
12803
diff
changeset
|
4865 - :hg:`resolve [--tool TOOL] FILE...`: attempt to re-merge the specified |
12750
05bd2658bbb3
merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents:
12727
diff
changeset
|
4866 files, discarding any previous merge attempts. Re-merging is not |
11836
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4867 performed for files already marked as resolved. Use ``--all/-a`` |
15042
5e7f03cfeeb9
commands: fix grammar in resolve help text
Pang Yan Han <pangyanhan@gmail.com>
parents:
14903
diff
changeset
|
4868 to select all unresolved files. ``--tool`` can be used to specify |
12750
05bd2658bbb3
merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents:
12727
diff
changeset
|
4869 the merge tool used for the given files. It overrides the HGMERGE |
15232
5d9a5b919863
resolve: update documentation to mention the .orig backup
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15223
diff
changeset
|
4870 environment variable and your configuration files. Previous file |
5d9a5b919863
resolve: update documentation to mention the .orig backup
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15223
diff
changeset
|
4871 contents are saved with a ``.orig`` suffix. |
11836
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4872 |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4873 - :hg:`resolve -m [FILE]`: mark a file as having been resolved |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4874 (e.g. after having manually fixed-up the files). The default is |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4875 to mark all unresolved files. |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4876 |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4877 - :hg:`resolve -u [FILE]...`: mark a file as unresolved. The |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4878 default is to mark all resolved files. |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4879 |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4880 - :hg:`resolve -l`: list files which had or still have conflicts. |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4881 In the printed list, ``U`` = unresolved and ``R`` = resolved. |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4882 |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4883 Note that Mercurial will not let you commit files with unresolved |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4884 merge conflicts. You must use :hg:`resolve -m ...` before you can |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4885 commit after a conflicting merge. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4886 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4887 Returns 0 on success, 1 if any files fail a resolve attempt. |
6518 | 4888 """ |
4889 | |
9646
5b001f534452
commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents:
9645
diff
changeset
|
4890 all, mark, unmark, show, nostatus = \ |
5b001f534452
commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents:
9645
diff
changeset
|
4891 [opts.get(o) for o in 'all mark unmark list no_status'.split()] |
7527
5a14a8f3b909
resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents:
7449
diff
changeset
|
4892 |
5a14a8f3b909
resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents:
7449
diff
changeset
|
4893 if (show and (mark or unmark)) or (mark and unmark): |
6518 | 4894 raise util.Abort(_("too many options specified")) |
7527
5a14a8f3b909
resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents:
7449
diff
changeset
|
4895 if pats and all: |
5a14a8f3b909
resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents:
7449
diff
changeset
|
4896 raise util.Abort(_("can't specify --all and patterns")) |
5a14a8f3b909
resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents:
7449
diff
changeset
|
4897 if not (all or pats or show or mark or unmark): |
5a14a8f3b909
resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents:
7449
diff
changeset
|
4898 raise util.Abort(_('no files or directories specified; ' |
5a14a8f3b909
resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents:
7449
diff
changeset
|
4899 'use --all to remerge all files')) |
6518 | 4900 |
15856
6bed6cc6d0d0
commands: partial backout of fbb68b382040
Martin Geisler <mg@aragost.com>
parents:
15855
diff
changeset
|
4901 ms = mergemod.mergestate(repo) |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
4902 m = scmutil.match(repo[None], pats, opts) |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4903 ret = 0 |
6518 | 4904 |
4905 for f in ms: | |
6594 | 4906 if m(f): |
7527
5a14a8f3b909
resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents:
7449
diff
changeset
|
4907 if show: |
9646
5b001f534452
commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents:
9645
diff
changeset
|
4908 if nostatus: |
5b001f534452
commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents:
9645
diff
changeset
|
4909 ui.write("%s\n" % f) |
5b001f534452
commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents:
9645
diff
changeset
|
4910 else: |
10817
2096496b40ec
status: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10816
diff
changeset
|
4911 ui.write("%s %s\n" % (ms[f].upper(), f), |
2096496b40ec
status: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10816
diff
changeset
|
4912 label='resolve.' + |
2096496b40ec
status: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10816
diff
changeset
|
4913 {'u': 'unresolved', 'r': 'resolved'}[ms[f]]) |
7527
5a14a8f3b909
resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents:
7449
diff
changeset
|
4914 elif mark: |
6518 | 4915 ms.mark(f, "r") |
7527
5a14a8f3b909
resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents:
7449
diff
changeset
|
4916 elif unmark: |
6518 | 4917 ms.mark(f, "u") |
4918 else: | |
6747
f6c00b17387c
use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents:
6746
diff
changeset
|
4919 wctx = repo[None] |
6518 | 4920 mctx = wctx.parents()[-1] |
7847 | 4921 |
4922 # backup pre-resolve (merge uses .orig for its own purposes) | |
4923 a = repo.wjoin(f) | |
4924 util.copyfile(a, a + ".resolve") | |
4925 | |
12788
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4926 try: |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4927 # resolve file |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4928 ui.setconfig('ui', 'forcemerge', opts.get('tool', '')) |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4929 if ms.resolve(f, wctx, mctx): |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4930 ret = 1 |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4931 finally: |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4932 ui.setconfig('ui', 'forcemerge', '') |
6518 | 4933 |
7847 | 4934 # replace filemerge's .orig file with our resolve file |
4935 util.rename(a + ".resolve", a + ".orig") | |
12369
6f0d9d79111f
merge: delay writing the mergestate during until commit is called
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
12323
diff
changeset
|
4936 |
6f0d9d79111f
merge: delay writing the mergestate during until commit is called
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
12323
diff
changeset
|
4937 ms.commit() |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4938 return ret |
7847 | 4939 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4940 @command('revert', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4941 [('a', 'all', None, _('revert all changes when no arguments given')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4942 ('d', 'date', '', _('tipmost revision matching date'), _('DATE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4943 ('r', 'rev', '', _('revert to the specified revision'), _('REV')), |
15009
caa5283390f8
revert: introduce short option -C for --no-backup
Adrian Buehlmann <adrian@cadifra.com>
parents:
14986
diff
changeset
|
4944 ('C', 'no-backup', None, _('do not save backup copies of files')), |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4945 ] + walkopts + dryrunopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4946 _('[OPTION]... [-r REV] [NAME]...')) |
1472
3c909a747d7f
make revert use standard matcher
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1470
diff
changeset
|
4947 def revert(ui, repo, *pats, **opts): |
14540
944d9088da96
revert: rewrite help summary
Matt Mackall <mpm@selenic.com>
parents:
14532
diff
changeset
|
4948 """restore files to their checkout state |
5574 | 4949 |
12390
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
4950 .. note:: |
17148
dd09bbd48646
revert: use term "uncommitted merge" in help text
Adrian Buehlmann <adrian@cadifra.com>
parents:
17144
diff
changeset
|
4951 |
14541
07ee46a2ece3
revert: simplify usage note
Matt Mackall <mpm@selenic.com>
parents:
14540
diff
changeset
|
4952 To check out earlier revisions, you should use :hg:`update REV`. |
17148
dd09bbd48646
revert: use term "uncommitted merge" in help text
Adrian Buehlmann <adrian@cadifra.com>
parents:
17144
diff
changeset
|
4953 To cancel an uncommitted merge (and lose your changes), use |
dd09bbd48646
revert: use term "uncommitted merge" in help text
Adrian Buehlmann <adrian@cadifra.com>
parents:
17144
diff
changeset
|
4954 :hg:`update --clean .`. |
2204
eb5fa83ffcfa
fix doc comments for revert command. people found them confusing.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2189
diff
changeset
|
4955 |
14544
586f33cc3cb9
revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents:
14543
diff
changeset
|
4956 With no revision specified, revert the specified files or directories |
14903
a934b9249574
revert: restore check for uncommitted merge (issue2915) (BC)
Matt Mackall <mpm@selenic.com>
parents:
14849
diff
changeset
|
4957 to the contents they had in the parent of the working directory. |
14544
586f33cc3cb9
revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents:
14543
diff
changeset
|
4958 This restores the contents of files to an unmodified |
14903
a934b9249574
revert: restore check for uncommitted merge (issue2915) (BC)
Matt Mackall <mpm@selenic.com>
parents:
14849
diff
changeset
|
4959 state and unschedules adds, removes, copies, and renames. If the |
a934b9249574
revert: restore check for uncommitted merge (issue2915) (BC)
Matt Mackall <mpm@selenic.com>
parents:
14849
diff
changeset
|
4960 working directory has two parents, you must explicitly specify a |
a934b9249574
revert: restore check for uncommitted merge (issue2915) (BC)
Matt Mackall <mpm@selenic.com>
parents:
14849
diff
changeset
|
4961 revision. |
1811
6cb548cffdf5
resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1804
diff
changeset
|
4962 |
14544
586f33cc3cb9
revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents:
14543
diff
changeset
|
4963 Using the -r/--rev or -d/--date options, revert the given files or |
14557
f966979f61ce
revert: is reverting file states, not just file contents
Adrian Buehlmann <adrian@cadifra.com>
parents:
14556
diff
changeset
|
4964 directories to their states as of a specific revision. Because |
14546
99a7cd924636
revert: replace mention of 'roll back' with pointer to 'backout'
Matt Mackall <mpm@selenic.com>
parents:
14545
diff
changeset
|
4965 revert does not change the working directory parents, this will |
99a7cd924636
revert: replace mention of 'roll back' with pointer to 'backout'
Matt Mackall <mpm@selenic.com>
parents:
14545
diff
changeset
|
4966 cause these files to appear modified. This can be helpful to "back |
14547
a6cc0f2d0365
revert: actually add pointer to backout
Matt Mackall <mpm@selenic.com>
parents:
14546
diff
changeset
|
4967 out" some or all of an earlier change. See :hg:`backout` for a |
a6cc0f2d0365
revert: actually add pointer to backout
Matt Mackall <mpm@selenic.com>
parents:
14546
diff
changeset
|
4968 related method. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4969 |
5574 | 4970 Modified files are saved with a .orig suffix before reverting. |
4971 To disable these backups, use --no-backup. | |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4972 |
14544
586f33cc3cb9
revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents:
14543
diff
changeset
|
4973 See :hg:`help dates` for a list of formats valid for -d/--date. |
586f33cc3cb9
revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents:
14543
diff
changeset
|
4974 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4975 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4976 """ |
2982
890e285c52a1
revert: require --all to revert all files.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2963
diff
changeset
|
4977 |
11941 | 4978 if opts.get("date"): |
4979 if opts.get("rev"): | |
3814
120be84f33de
Add --date support to update and revert
Matt Mackall <mpm@selenic.com>
parents:
3813
diff
changeset
|
4980 raise util.Abort(_("you can't specify a revision and a date")) |
120be84f33de
Add --date support to update and revert
Matt Mackall <mpm@selenic.com>
parents:
3813
diff
changeset
|
4981 opts["rev"] = cmdutil.finddate(ui, repo, opts["date"]) |
120be84f33de
Add --date support to update and revert
Matt Mackall <mpm@selenic.com>
parents:
3813
diff
changeset
|
4982 |
13022
3fd4e4e81382
revert: improve merge advice and favor its error over all
timeless <timeless@gmail.com>
parents:
12968
diff
changeset
|
4983 parent, p2 = repo.dirstate.parents() |
14903
a934b9249574
revert: restore check for uncommitted merge (issue2915) (BC)
Matt Mackall <mpm@selenic.com>
parents:
14849
diff
changeset
|
4984 if not opts.get('rev') and p2 != nullid: |
a934b9249574
revert: restore check for uncommitted merge (issue2915) (BC)
Matt Mackall <mpm@selenic.com>
parents:
14849
diff
changeset
|
4985 # revert after merge is a trap for new users (issue2915) |
a934b9249574
revert: restore check for uncommitted merge (issue2915) (BC)
Matt Mackall <mpm@selenic.com>
parents:
14849
diff
changeset
|
4986 raise util.Abort(_('uncommitted merge with no revision specified'), |
a934b9249574
revert: restore check for uncommitted merge (issue2915) (BC)
Matt Mackall <mpm@selenic.com>
parents:
14849
diff
changeset
|
4987 hint=_('use "hg update" or see "hg help revert"')) |
a934b9249574
revert: restore check for uncommitted merge (issue2915) (BC)
Matt Mackall <mpm@selenic.com>
parents:
14849
diff
changeset
|
4988 |
14726
e0039716f3ea
revert: mention update in hint of abort when reverting to non-parent
Adrian Buehlmann <adrian@cadifra.com>
parents:
14725
diff
changeset
|
4989 ctx = scmutil.revsingle(repo, opts.get('rev')) |
13022
3fd4e4e81382
revert: improve merge advice and favor its error over all
timeless <timeless@gmail.com>
parents:
12968
diff
changeset
|
4990 |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
4991 if not pats and not opts.get('all'): |
14721
4fcde634f5e0
revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents:
14713
diff
changeset
|
4992 msg = _("no files or directories specified") |
4fcde634f5e0
revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents:
14713
diff
changeset
|
4993 if p2 != nullid: |
4fcde634f5e0
revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents:
14713
diff
changeset
|
4994 hint = _("uncommitted merge, use --all to discard all changes," |
4fcde634f5e0
revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents:
14713
diff
changeset
|
4995 " or 'hg update -C .' to abort the merge") |
14755
6ba51c81ff75
revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents:
14742
diff
changeset
|
4996 raise util.Abort(msg, hint=hint) |
6ba51c81ff75
revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents:
14742
diff
changeset
|
4997 dirty = util.any(repo.status()) |
16304
a740fa28d718
revert: move bulk of revert command from commands to cmdutil
Angel Ezquerra <angel.ezquerra@gmail.com>
parents:
16274
diff
changeset
|
4998 node = ctx.node() |
14755
6ba51c81ff75
revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents:
14742
diff
changeset
|
4999 if node != parent: |
6ba51c81ff75
revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents:
14742
diff
changeset
|
5000 if dirty: |
14726
e0039716f3ea
revert: mention update in hint of abort when reverting to non-parent
Adrian Buehlmann <adrian@cadifra.com>
parents:
14725
diff
changeset
|
5001 hint = _("uncommitted changes, use --all to discard all" |
e0039716f3ea
revert: mention update in hint of abort when reverting to non-parent
Adrian Buehlmann <adrian@cadifra.com>
parents:
14725
diff
changeset
|
5002 " changes, or 'hg update %s' to update") % ctx.rev() |
e0039716f3ea
revert: mention update in hint of abort when reverting to non-parent
Adrian Buehlmann <adrian@cadifra.com>
parents:
14725
diff
changeset
|
5003 else: |
e0039716f3ea
revert: mention update in hint of abort when reverting to non-parent
Adrian Buehlmann <adrian@cadifra.com>
parents:
14725
diff
changeset
|
5004 hint = _("use --all to revert all files," |
e0039716f3ea
revert: mention update in hint of abort when reverting to non-parent
Adrian Buehlmann <adrian@cadifra.com>
parents:
14725
diff
changeset
|
5005 " or 'hg update %s' to update") % ctx.rev() |
14755
6ba51c81ff75
revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents:
14742
diff
changeset
|
5006 elif dirty: |
6ba51c81ff75
revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents:
14742
diff
changeset
|
5007 hint = _("uncommitted changes, use --all to discard all changes") |
6ba51c81ff75
revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents:
14742
diff
changeset
|
5008 else: |
6ba51c81ff75
revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents:
14742
diff
changeset
|
5009 hint = _("use --all to revert all files") |
14721
4fcde634f5e0
revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents:
14713
diff
changeset
|
5010 raise util.Abort(msg, hint=hint) |
2982
890e285c52a1
revert: require --all to revert all files.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2963
diff
changeset
|
5011 |
16304
a740fa28d718
revert: move bulk of revert command from commands to cmdutil
Angel Ezquerra <angel.ezquerra@gmail.com>
parents:
16274
diff
changeset
|
5012 return cmdutil.revert(ui, repo, ctx, (parent, p2), *pats, **opts) |
588 | 5013 |
15183
59e8bc22506e
rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents:
15179
diff
changeset
|
5014 @command('rollback', dryrunopts + |
59e8bc22506e
rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents:
15179
diff
changeset
|
5015 [('f', 'force', False, _('ignore safety measures'))]) |
10882
f0bfe42c7b1f
rollback: add dry-run argument, emit transaction description
Steve Borho <steve@borho.org>
parents:
10835
diff
changeset
|
5016 def rollback(ui, repo, **opts): |
10889
e25c450c351e
commands: improve some command summaries
Matt Mackall <mpm@selenic.com>
parents:
10882
diff
changeset
|
5017 """roll back the last transaction (dangerous) |
5575
8788ff630c26
imported patch rollback-help
Matt Mackall <mpm@selenic.com>
parents:
5574
diff
changeset
|
5018 |
8788ff630c26
imported patch rollback-help
Matt Mackall <mpm@selenic.com>
parents:
5574
diff
changeset
|
5019 This command should be used with care. There is only one level of |
8788ff630c26
imported patch rollback-help
Matt Mackall <mpm@selenic.com>
parents:
5574
diff
changeset
|
5020 rollback, and there is no way to undo a rollback. It will also |
8788ff630c26
imported patch rollback-help
Matt Mackall <mpm@selenic.com>
parents:
5574
diff
changeset
|
5021 restore the dirstate at the time of the last transaction, losing |
8856
f8d00346a62d
rollback: minor clarification (issue828)
Matt Mackall <mpm@selenic.com>
parents:
8855
diff
changeset
|
5022 any dirstate changes since that time. This command does not alter |
f8d00346a62d
rollback: minor clarification (issue828)
Matt Mackall <mpm@selenic.com>
parents:
8855
diff
changeset
|
5023 the working directory. |
2227
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5024 |
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5025 Transactions are used to encapsulate the effects of all commands |
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5026 that create new changesets or propagate existing changesets into a |
17141
b558c9fa39c1
rollback: split off command example paragraph in help
Adrian Buehlmann <adrian@cadifra.com>
parents:
17045
diff
changeset
|
5027 repository. |
b558c9fa39c1
rollback: split off command example paragraph in help
Adrian Buehlmann <adrian@cadifra.com>
parents:
17045
diff
changeset
|
5028 |
17142
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5029 .. container:: verbose |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5030 |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5031 For example, the following commands are transactional, and their |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5032 effects can be rolled back: |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5033 |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5034 - commit |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5035 - import |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5036 - pull |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5037 - push (with this repository as the destination) |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5038 - unbundle |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5039 |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5040 To avoid permanent data loss, rollback will refuse to rollback a |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5041 commit transaction if it isn't checked out. Use --force to |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5042 override this protection. |
15183
59e8bc22506e
rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents:
15179
diff
changeset
|
5043 |
2227
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5044 This command is not intended for use on public repositories. Once |
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5045 changes are visible for pull by other users, rolling a transaction |
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5046 back locally is ineffective (someone else may already have pulled |
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5047 the changes). Furthermore, a race is possible with readers of the |
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5048 repository; for example an in-progress pull from the repository |
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5049 may fail if a rollback is performed. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5050 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5051 Returns 0 on success, 1 if no rollback data is available. |
2227
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5052 """ |
15183
59e8bc22506e
rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents:
15179
diff
changeset
|
5053 return repo.rollback(dryrun=opts.get('dry_run'), |
59e8bc22506e
rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents:
15179
diff
changeset
|
5054 force=opts.get('force')) |
2227
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5055 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5056 @command('root', []) |
468 | 5057 def root(ui, repo): |
8026
683d8ebcf434
expand "dir" to "directory" in help texts
Martin Geisler <mg@lazybytes.net>
parents:
8021
diff
changeset
|
5058 """print the root (top) of the current working directory |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5059 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5060 Print the root directory of the current repository. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5061 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5062 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5063 """ |
468 | 5064 ui.write(repo.root + "\n") |
5065 | |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5066 @command('^serve', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5067 [('A', 'accesslog', '', _('name of access log file to write to'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5068 _('FILE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5069 ('d', 'daemon', None, _('run server in background')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5070 ('', 'daemon-pipefds', '', _('used internally by daemon mode'), _('NUM')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5071 ('E', 'errorlog', '', _('name of error log file to write to'), _('FILE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5072 # use string type, then we can check if something was passed |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5073 ('p', 'port', '', _('port to listen on (default: 8000)'), _('PORT')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5074 ('a', 'address', '', _('address to listen on (default: all interfaces)'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5075 _('ADDR')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5076 ('', 'prefix', '', _('prefix path to serve from (default: server root)'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5077 _('PREFIX')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5078 ('n', 'name', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5079 _('name to show in web pages (default: working directory)'), _('NAME')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5080 ('', 'web-conf', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5081 _('name of the hgweb config file (see "hg help hgweb")'), _('FILE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5082 ('', 'webdir-conf', '', _('name of the hgweb config file (DEPRECATED)'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5083 _('FILE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5084 ('', 'pid-file', '', _('name of file to write process ID to'), _('FILE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5085 ('', 'stdio', None, _('for remote clients')), |
14647
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5086 ('', 'cmdserver', '', _('for remote clients'), _('MODE')), |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5087 ('t', 'templates', '', _('web templates to use'), _('TEMPLATE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5088 ('', 'style', '', _('template style to use'), _('STYLE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5089 ('6', 'ipv6', None, _('use IPv6 in addition to IPv4')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5090 ('', 'certificate', '', _('SSL certificate file'), _('FILE'))], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5091 _('[OPTION]...')) |
245 | 5092 def serve(ui, repo, **opts): |
10889
e25c450c351e
commands: improve some command summaries
Matt Mackall <mpm@selenic.com>
parents:
10882
diff
changeset
|
5093 """start stand-alone webserver |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5094 |
11102
275198bc904a
commands: explain that "hg serve" is mostly for ad-hoc sharing
Martin Geisler <mg@lazybytes.net>
parents:
11089
diff
changeset
|
5095 Start a local HTTP repository browser and pull server. You can use |
13065
de4a18cbfc98
serve: fix doc typo
Adrian Buehlmann <adrian@cadifra.com>
parents:
12965
diff
changeset
|
5096 this for ad-hoc sharing and browsing of repositories. It is |
11102
275198bc904a
commands: explain that "hg serve" is mostly for ad-hoc sharing
Martin Geisler <mg@lazybytes.net>
parents:
11089
diff
changeset
|
5097 recommended to use a real web server to serve a repository for |
275198bc904a
commands: explain that "hg serve" is mostly for ad-hoc sharing
Martin Geisler <mg@lazybytes.net>
parents:
11089
diff
changeset
|
5098 longer periods of time. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5099 |
11103
d29bd98ebff6
commands: explain that "hg serve" does not do authentication
Martin Geisler <mg@lazybytes.net>
parents:
11102
diff
changeset
|
5100 Please note that the server does not implement access control. |
d29bd98ebff6
commands: explain that "hg serve" does not do authentication
Martin Geisler <mg@lazybytes.net>
parents:
11102
diff
changeset
|
5101 This means that, by default, anybody can read from the server and |
d29bd98ebff6
commands: explain that "hg serve" does not do authentication
Martin Geisler <mg@lazybytes.net>
parents:
11102
diff
changeset
|
5102 nobody can write to it by default. Set the ``web.allow_push`` |
d29bd98ebff6
commands: explain that "hg serve" does not do authentication
Martin Geisler <mg@lazybytes.net>
parents:
11102
diff
changeset
|
5103 option to ``*`` to allow everybody to push to the server. You |
d29bd98ebff6
commands: explain that "hg serve" does not do authentication
Martin Geisler <mg@lazybytes.net>
parents:
11102
diff
changeset
|
5104 should use a real web server if you need to authenticate users. |
d29bd98ebff6
commands: explain that "hg serve" does not do authentication
Martin Geisler <mg@lazybytes.net>
parents:
11102
diff
changeset
|
5105 |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5106 By default, the server logs accesses to stdout and errors to |
8277
b9403042968a
write options in "-r/--rev" style in help texts
Martin Geisler <mg@lazybytes.net>
parents:
8225
diff
changeset
|
5107 stderr. Use the -A/--accesslog and -E/--errorlog options to log to |
b9403042968a
write options in "-r/--rev" style in help texts
Martin Geisler <mg@lazybytes.net>
parents:
8225
diff
changeset
|
5108 files. |
10629
d3f27d15c9cb
serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents:
10617
diff
changeset
|
5109 |
d3f27d15c9cb
serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents:
10617
diff
changeset
|
5110 To have the server choose a free port number to listen on, specify |
d3f27d15c9cb
serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents:
10617
diff
changeset
|
5111 a port number of 0; in this case, the server will print the port |
d3f27d15c9cb
serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents:
10617
diff
changeset
|
5112 number it uses. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5113 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5114 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5115 """ |
624
876333a295ff
Add an sshrepository class and hg serve --stdio
Matt Mackall <mpm@selenic.com>
parents:
618
diff
changeset
|
5116 |
14647
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5117 if opts["stdio"] and opts["cmdserver"]: |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5118 raise util.Abort(_("cannot use --stdio with --cmdserver")) |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5119 |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5120 def checkrepo(): |
2127
8a85dbbadddf
Allow 'hg serve --webdir-conf foo' to be run outside a repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
2125
diff
changeset
|
5121 if repo is None: |
16935
f635c476fa3f
serve: lowercase "no repo here" message
Martin Geisler <mg@aragost.com>
parents:
16934
diff
changeset
|
5122 raise error.RepoError(_("there is no Mercurial repository here" |
6217
fe8dbbe9520d
Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
Joel Rosdahl <joel@rosdahl.net>
parents:
6212
diff
changeset
|
5123 " (.hg not found)")) |
14647
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5124 |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5125 if opts["stdio"]: |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5126 checkrepo() |
2396
8d44649df03b
refactor ssh server.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2392
diff
changeset
|
5127 s = sshserver.sshserver(ui, repo) |
8d44649df03b
refactor ssh server.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2392
diff
changeset
|
5128 s.serve_forever() |
2363
fa4c11751367
Give a response to unknown SSH commands
Matt Mackall <mpm@selenic.com>
parents:
2362
diff
changeset
|
5129 |
14647
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5130 if opts["cmdserver"]: |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5131 checkrepo() |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5132 s = commandserver.server(ui, repo, opts["cmdserver"]) |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5133 return s.serve() |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5134 |
10635
27027bee318e
serve: fix port config
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10632
diff
changeset
|
5135 # this way we can check if something was given in the command-line |
27027bee318e
serve: fix port config
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10632
diff
changeset
|
5136 if opts.get('port'): |
12076
49463314c24f
mail/hgweb: support service names for ports (issue2350)
Brodie Rao <brodie@bitheap.org>
parents:
12070
diff
changeset
|
5137 opts['port'] = util.getport(opts.get('port')) |
10635
27027bee318e
serve: fix port config
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10632
diff
changeset
|
5138 |
8190
9b8ac5fb7760
ui: kill most users of parentui name and arg, replace with .copy()
Matt Mackall <mpm@selenic.com>
parents:
8189
diff
changeset
|
5139 baseui = repo and repo.baseui or ui |
5835
bd34f0ac3cb0
adding "prefix" option to "hg serve" (command line and [web] section)
Michele Cella <michele.cella@gmail.com>
parents:
5811
diff
changeset
|
5140 optlist = ("name templates style address port prefix ipv6" |
10644
63948e7d37f7
server: initialize wsgi app in command, then wrap server around it
Dirkjan Ochtman <djc.ochtman@kentyde.com>
parents:
10635
diff
changeset
|
5141 " accesslog errorlog certificate encoding") |
987 | 5142 for o in optlist.split(): |
10630
9947e6b008bb
serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10629
diff
changeset
|
5143 val = opts.get(o, '') |
10631
5247260cee6a
make expression shorter, now the line fits into 80 chars
Thomas Arendsen Hein <thomas@intevation.de>
parents:
10630
diff
changeset
|
5144 if val in (None, ''): # should check against default options instead |
10630
9947e6b008bb
serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10629
diff
changeset
|
5145 continue |
9947e6b008bb
serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10629
diff
changeset
|
5146 baseui.setconfig("web", o, val) |
9947e6b008bb
serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10629
diff
changeset
|
5147 if repo and repo.ui != baseui: |
9947e6b008bb
serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10629
diff
changeset
|
5148 repo.ui.setconfig("web", o, val) |
987 | 5149 |
11003
aca9a7cf2c9a
serve: webdir_conf -> webconf
Matt Mackall <mpm@selenic.com>
parents:
10993
diff
changeset
|
5150 o = opts.get('web_conf') or opts.get('webdir_conf') |
11004
7bb10d3dbcd6
hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents:
11003
diff
changeset
|
5151 if not o: |
7bb10d3dbcd6
hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents:
11003
diff
changeset
|
5152 if not repo: |
16935
f635c476fa3f
serve: lowercase "no repo here" message
Martin Geisler <mg@aragost.com>
parents:
16934
diff
changeset
|
5153 raise error.RepoError(_("there is no Mercurial repository" |
11004
7bb10d3dbcd6
hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents:
11003
diff
changeset
|
5154 " here (.hg not found)")) |
7bb10d3dbcd6
hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents:
11003
diff
changeset
|
5155 o = repo.root |
7bb10d3dbcd6
hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents:
11003
diff
changeset
|
5156 |
7bb10d3dbcd6
hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents:
11003
diff
changeset
|
5157 app = hgweb.hgweb(o, baseui=ui) |
2127
8a85dbbadddf
Allow 'hg serve --webdir-conf foo' to be run outside a repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
2125
diff
changeset
|
5158 |
8778
c5f36402daad
use new style classes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
8761
diff
changeset
|
5159 class service(object): |
4380
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5160 def init(self): |
14237
4d684d8210a1
rename util.set_signal_handler to setsignalhandler
Adrian Buehlmann <adrian@cadifra.com>
parents:
14220
diff
changeset
|
5161 util.setsignalhandler() |
11004
7bb10d3dbcd6
hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents:
11003
diff
changeset
|
5162 self.httpd = hgweb.server.create_server(ui, app) |
4380
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5163 |
10629
d3f27d15c9cb
serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents:
10617
diff
changeset
|
5164 if opts['port'] and not ui.verbose: |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10270
diff
changeset
|
5165 return |
4380
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5166 |
5970
f25070ecf334
hgweb: fixes to make hg serve prefix handling more robust
Michele Cella <michele.cella@gmail.com>
parents:
5953
diff
changeset
|
5167 if self.httpd.prefix: |
f25070ecf334
hgweb: fixes to make hg serve prefix handling more robust
Michele Cella <michele.cella@gmail.com>
parents:
5953
diff
changeset
|
5168 prefix = self.httpd.prefix.strip('/') + '/' |
f25070ecf334
hgweb: fixes to make hg serve prefix handling more robust
Michele Cella <michele.cella@gmail.com>
parents:
5953
diff
changeset
|
5169 else: |
f25070ecf334
hgweb: fixes to make hg serve prefix handling more robust
Michele Cella <michele.cella@gmail.com>
parents:
5953
diff
changeset
|
5170 prefix = '' |
f25070ecf334
hgweb: fixes to make hg serve prefix handling more robust
Michele Cella <michele.cella@gmail.com>
parents:
5953
diff
changeset
|
5171 |
6262
de7256c82fad
hgweb: clarify which address and port can/cannot be bound at startup (bug 769)
Stephen Deasey <sdeasey@gmail.com>
parents:
6253
diff
changeset
|
5172 port = ':%d' % self.httpd.port |
de7256c82fad
hgweb: clarify which address and port can/cannot be bound at startup (bug 769)
Stephen Deasey <sdeasey@gmail.com>
parents:
6253
diff
changeset
|
5173 if port == ':80': |
de7256c82fad
hgweb: clarify which address and port can/cannot be bound at startup (bug 769)
Stephen Deasey <sdeasey@gmail.com>
parents:
6253
diff
changeset
|
5174 port = '' |
de7256c82fad
hgweb: clarify which address and port can/cannot be bound at startup (bug 769)
Stephen Deasey <sdeasey@gmail.com>
parents:
6253
diff
changeset
|
5175 |
6419
7c36aee46bf5
hg serve: add clearer message when starting the server with --verbose
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
6405
diff
changeset
|
5176 bindaddr = self.httpd.addr |
7c36aee46bf5
hg serve: add clearer message when starting the server with --verbose
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
6405
diff
changeset
|
5177 if bindaddr == '0.0.0.0': |
7c36aee46bf5
hg serve: add clearer message when starting the server with --verbose
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
6405
diff
changeset
|
5178 bindaddr = '*' |
7c36aee46bf5
hg serve: add clearer message when starting the server with --verbose
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
6405
diff
changeset
|
5179 elif ':' in bindaddr: # IPv6 |
7c36aee46bf5
hg serve: add clearer message when starting the server with --verbose
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
6405
diff
changeset
|
5180 bindaddr = '[%s]' % bindaddr |
7c36aee46bf5
hg serve: add clearer message when starting the server with --verbose
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
6405
diff
changeset
|
5181 |
7c36aee46bf5
hg serve: add clearer message when starting the server with --verbose
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
6405
diff
changeset
|
5182 fqaddr = self.httpd.fqaddr |
7c36aee46bf5
hg serve: add clearer message when starting the server with --verbose
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
6405
diff
changeset
|
5183 if ':' in fqaddr: |
7c36aee46bf5
hg serve: add clearer message when starting the server with --verbose
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
6405
diff
changeset
|
5184 fqaddr = '[%s]' % fqaddr |
10629
d3f27d15c9cb
serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents:
10617
diff
changeset
|
5185 if opts['port']: |
10630
9947e6b008bb
serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10629
diff
changeset
|
5186 write = ui.status |
10629
d3f27d15c9cb
serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents:
10617
diff
changeset
|
5187 else: |
d3f27d15c9cb
serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents:
10617
diff
changeset
|
5188 write = ui.write |
d3f27d15c9cb
serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents:
10617
diff
changeset
|
5189 write(_('listening at http://%s%s/%s (bound to %s:%d)\n') % |
d3f27d15c9cb
serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents:
10617
diff
changeset
|
5190 (fqaddr, port, prefix, bindaddr, self.httpd.port)) |
4380
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5191 |
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5192 def run(self): |
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5193 self.httpd.serve_forever() |
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5194 |
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5195 service = service() |
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5196 |
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5197 cmdutil.service(opts, initfn=service.init, runfn=service.run) |
500
ebc4714a7632
[PATCH] Clean up destination directory if a clone fails.
mpm@selenic.com
parents:
499
diff
changeset
|
5198 |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5199 @command('showconfig|debugconfig', |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5200 [('u', 'untrusted', None, _('show untrusted configuration options'))], |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5201 _('[-u] [NAME]...')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5202 def showconfig(ui, repo, *values, **opts): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5203 """show combined config settings from all hgrc files |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5204 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5205 With no arguments, print names and values of all config items. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5206 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5207 With one argument of the form section.name, print just the value |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5208 of that config item. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5209 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5210 With multiple arguments, print names and values of all config |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5211 items with matching section names. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5212 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5213 With --debug, the source (filename and line number) is printed |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5214 for each config item. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5215 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5216 Returns 0 on success. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5217 """ |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5218 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5219 for f in scmutil.rcpath(): |
14708
8083f4d00bd1
i18n: remove translation of debug messages
David Soria Parra <dsp@php.net>
parents:
14673
diff
changeset
|
5220 ui.debug('read config from: %s\n' % f) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5221 untrusted = bool(opts.get('untrusted')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5222 if values: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5223 sections = [v for v in values if '.' not in v] |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5224 items = [v for v in values if '.' in v] |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5225 if len(items) > 1 or items and sections: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5226 raise util.Abort(_('only one config item permitted')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5227 for section, name, value in ui.walkconfig(untrusted=untrusted): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5228 value = str(value).replace('\n', '\\n') |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5229 sectname = section + '.' + name |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5230 if values: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5231 for v in values: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5232 if v == section: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5233 ui.debug('%s: ' % |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5234 ui.configsource(section, name, untrusted)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5235 ui.write('%s=%s\n' % (sectname, value)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5236 elif v == sectname: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5237 ui.debug('%s: ' % |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5238 ui.configsource(section, name, untrusted)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5239 ui.write(value, '\n') |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5240 else: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5241 ui.debug('%s: ' % |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5242 ui.configsource(section, name, untrusted)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5243 ui.write('%s=%s\n' % (sectname, value)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5244 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5245 @command('^status|st', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5246 [('A', 'all', None, _('show status of all files')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5247 ('m', 'modified', None, _('show only modified files')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5248 ('a', 'added', None, _('show only added files')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5249 ('r', 'removed', None, _('show only removed files')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5250 ('d', 'deleted', None, _('show only deleted (but tracked) files')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5251 ('c', 'clean', None, _('show only files without changes')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5252 ('u', 'unknown', None, _('show only unknown (not tracked) files')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5253 ('i', 'ignored', None, _('show only ignored files')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5254 ('n', 'no-status', None, _('hide status prefix')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5255 ('C', 'copies', None, _('show source of copied files')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5256 ('0', 'print0', None, _('end filenames with NUL, for use with xargs')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5257 ('', 'rev', [], _('show difference from revision'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5258 ('', 'change', '', _('list the changed files of a revision'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5259 ] + walkopts + subrepoopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5260 _('[OPTION]... [FILE]...')) |
731
91ca3afab8e8
Add name matching to status command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
729
diff
changeset
|
5261 def status(ui, repo, *pats, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5262 """show changed files in the working directory |
213 | 5263 |
6448
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
5264 Show status of files in the repository. If names are given, only |
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
5265 files that match are shown. Files that are clean or ignored or |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
5266 the source of a copy/move operation, are not listed unless |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
5267 -c/--clean, -i/--ignored, -C/--copies or -A/--all are given. |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
5268 Unless options described with "show only ..." are given, the |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
5269 options -mardu are used. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5270 |
6201
305d4450036a
Extend/correct acc40572da5b regarding -qA and ignored files.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6200
diff
changeset
|
5271 Option -q/--quiet hides untracked (unknown and ignored) files |
8009
76e4c08a48ad
commands: fix typo on flag description
Wagner Bruna <wbruna@yahoo.com>
parents:
8008
diff
changeset
|
5272 unless explicitly requested with -u/--unknown or -i/--ignored. |
6200
acc40572da5b
'hg status -q' output skips non-tracked files.
Zoran Bosnjak <zoran.bosnjak@via.si>
parents:
6192
diff
changeset
|
5273 |
12390
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
5274 .. note:: |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
5275 status may appear to disagree with diff if permissions have |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
5276 changed or a merge has occurred. The standard diff format does |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
5277 not report permission changes and diff only reports changes |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
5278 relative to one merge parent. |
3822
28134d82db9b
Add notes about diff/merge asymmetry to export, diff, and log
Matt Mackall <mpm@selenic.com>
parents:
3815
diff
changeset
|
5279 |
3467
2b3b703b3a2b
Add --rev option to status
Brendan Cully <brendan@kublai.com>
parents:
3465
diff
changeset
|
5280 If one revision is given, it is used as the base revision. |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
5281 If two revisions are given, the differences between them are |
10014
54cd28258ea7
status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents:
9983
diff
changeset
|
5282 shown. The --change option can also be used as a shortcut to list |
54cd28258ea7
status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents:
9983
diff
changeset
|
5283 the changed files of a revision from its first parent. |
3467
2b3b703b3a2b
Add --rev option to status
Brendan Cully <brendan@kublai.com>
parents:
3465
diff
changeset
|
5284 |
9157
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5285 The codes used to show the status of files are:: |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5286 |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5287 M = modified |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5288 A = added |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5289 R = removed |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5290 C = clean |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5291 ! = missing (deleted by non-hg command, but still tracked) |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5292 ? = not tracked |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5293 I = ignored |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5294 = origin of the previous file listed as A (added) |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5295 |
15119
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5296 .. container:: verbose |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5297 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5298 Examples: |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5299 |
15633
dc5d1394ecd1
status: add missing ":" to help text
Martin Geisler <mg@lazybytes.net>
parents:
15615
diff
changeset
|
5300 - show changes in the working directory relative to a |
dc5d1394ecd1
status: add missing ":" to help text
Martin Geisler <mg@lazybytes.net>
parents:
15615
diff
changeset
|
5301 changeset:: |
15119
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5302 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5303 hg status --rev 9353 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5304 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5305 - show all changes including copies in an existing changeset:: |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5306 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5307 hg status --copies --change 9353 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5308 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5309 - get a NUL separated list of added files, suitable for xargs:: |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5310 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5311 hg status -an0 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5312 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5313 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5314 """ |
312 | 5315 |
10014
54cd28258ea7
status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents:
9983
diff
changeset
|
5316 revs = opts.get('rev') |
54cd28258ea7
status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents:
9983
diff
changeset
|
5317 change = opts.get('change') |
54cd28258ea7
status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents:
9983
diff
changeset
|
5318 |
54cd28258ea7
status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents:
9983
diff
changeset
|
5319 if revs and change: |
54cd28258ea7
status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents:
9983
diff
changeset
|
5320 msg = _('cannot specify --rev and --change at the same time') |
54cd28258ea7
status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents:
9983
diff
changeset
|
5321 raise util.Abort(msg) |
54cd28258ea7
status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents:
9983
diff
changeset
|
5322 elif change: |
15578
db0e277bdd37
status: support revsets with --change
Patrick Mezard <pmezard@gmail.com>
parents:
15528
diff
changeset
|
5323 node2 = scmutil.revsingle(repo, change, None).node() |
13878
a8d13ee0ce68
misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents:
13855
diff
changeset
|
5324 node1 = repo[node2].p1().node() |
10014
54cd28258ea7
status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents:
9983
diff
changeset
|
5325 else: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
5326 node1, node2 = scmutil.revpair(repo, revs) |
10014
54cd28258ea7
status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents:
9983
diff
changeset
|
5327 |
1625
e1bcf7fa983f
correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1622
diff
changeset
|
5328 cwd = (pats and repo.getcwd()) or '' |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
5329 end = opts.get('print0') and '\0' or '\n' |
6276
c93ca83a3354
status: find copies and renames beyond the working directory
Matt Mackall <mpm@selenic.com>
parents:
6262
diff
changeset
|
5330 copy = {} |
6605
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5331 states = 'modified added removed deleted unknown ignored clean'.split() |
7684
ee3364d3d859
status: make options optional (issue1481)
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7656
diff
changeset
|
5332 show = [k for k in states if opts.get(k)] |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
5333 if opts.get('all'): |
6605
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5334 show += ui.quiet and (states[:4] + ['clean']) or states |
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5335 if not show: |
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5336 show = ui.quiet and states[:4] or states[:5] |
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5337 |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
5338 stat = repo.status(node1, node2, scmutil.match(repo[node2], pats, opts), |
12166
441a74b8def1
status: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents:
12132
diff
changeset
|
5339 'ignored' in show, 'clean' in show, 'unknown' in show, |
441a74b8def1
status: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents:
12132
diff
changeset
|
5340 opts.get('subrepos')) |
6605
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5341 changestates = zip(states, 'MAR!?IC', stat) |
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5342 |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
5343 if (opts.get('all') or opts.get('copies')) and not opts.get('no_status'): |
15775
91eb4512edd0
copies: rewrite copy detection for non-merge users
Matt Mackall <mpm@selenic.com>
parents:
15774
diff
changeset
|
5344 copy = copies.pathcopies(repo[node1], repo[node2]) |
6276
c93ca83a3354
status: find copies and renames beyond the working directory
Matt Mackall <mpm@selenic.com>
parents:
6262
diff
changeset
|
5345 |
16136
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5346 fm = ui.formatter('status', opts) |
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5347 format = '%s %s' + end |
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5348 if opts.get('no_status'): |
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5349 format = '%.0s%s' + end |
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5350 |
6605
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5351 for state, char, files in changestates: |
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5352 if state in show: |
16136
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5353 label = 'status.' + state |
6605
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5354 for f in files: |
16136
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5355 fm.startitem() |
16142
7ee1d0dd7ca3
status: fix format field thinko
Matt Mackall <mpm@selenic.com>
parents:
16136
diff
changeset
|
5356 fm.write("status path", format, char, |
16136
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5357 repo.pathto(f, cwd), label=label) |
6605
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5358 if f in copy: |
16136
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5359 fm.write("copy", ' %s' + end, repo.pathto(copy[f], cwd), |
10817
2096496b40ec
status: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10816
diff
changeset
|
5360 label='status.copied') |
16136
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5361 fm.end() |
213 | 5362 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5363 @command('^summary|sum', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5364 [('', 'remote', None, _('check for push and pull'))], '[--remote]') |
9620 | 5365 def summary(ui, repo, **opts): |
9603 | 5366 """summarize working directory state |
5367 | |
5368 This generates a brief summary of the working directory state, | |
5369 including parents, branch, commit status, and available updates. | |
9620 | 5370 |
5371 With the --remote option, this will check the default paths for | |
5372 incoming and outgoing changes. This can be time-consuming. | |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5373 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5374 Returns 0 on success. |
9603 | 5375 """ |
5376 | |
5377 ctx = repo[None] | |
5378 parents = ctx.parents() | |
5379 pnode = parents[0].node() | |
14906
7c3c8f37e84f
summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents:
14874
diff
changeset
|
5380 marks = [] |
9603 | 5381 |
5382 for p in parents: | |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5383 # label with log.changeset (instead of log.parent) since this |
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5384 # shows a working directory parent *changeset*: |
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5385 ui.write(_('parent: %d:%s ') % (p.rev(), str(p)), |
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5386 label='log.changeset') |
10833
d7b601f1e02c
commands: retrieve tags from context object
Martin Geisler <mg@lazybytes.net>
parents:
10832
diff
changeset
|
5387 ui.write(' '.join(p.tags()), label='log.tag') |
13454
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5388 if p.bookmarks(): |
14906
7c3c8f37e84f
summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents:
14874
diff
changeset
|
5389 marks.extend(p.bookmarks()) |
9618
d75a309a24b1
summary: add empty repository and no revision checked out hints
Matt Mackall <mpm@selenic.com>
parents:
9617
diff
changeset
|
5390 if p.rev() == -1: |
d75a309a24b1
summary: add empty repository and no revision checked out hints
Matt Mackall <mpm@selenic.com>
parents:
9617
diff
changeset
|
5391 if not len(repo): |
10834
4ab459a6c25c
commands: small refactoring in summary
Martin Geisler <mg@lazybytes.net>
parents:
10833
diff
changeset
|
5392 ui.write(_(' (empty repository)')) |
9618
d75a309a24b1
summary: add empty repository and no revision checked out hints
Matt Mackall <mpm@selenic.com>
parents:
9617
diff
changeset
|
5393 else: |
10834
4ab459a6c25c
commands: small refactoring in summary
Martin Geisler <mg@lazybytes.net>
parents:
10833
diff
changeset
|
5394 ui.write(_(' (no revision checked out)')) |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5395 ui.write('\n') |
9618
d75a309a24b1
summary: add empty repository and no revision checked out hints
Matt Mackall <mpm@selenic.com>
parents:
9617
diff
changeset
|
5396 if p.description(): |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5397 ui.status(' ' + p.description().splitlines()[0].strip() + '\n', |
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5398 label='log.summary') |
9603 | 5399 |
5400 branch = ctx.branch() | |
5401 bheads = repo.branchheads(branch) | |
9873
541218fbad2a
summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents:
9857
diff
changeset
|
5402 m = _('branch: %s\n') % branch |
541218fbad2a
summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents:
9857
diff
changeset
|
5403 if branch != 'default': |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5404 ui.write(m, label='log.branch') |
9873
541218fbad2a
summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents:
9857
diff
changeset
|
5405 else: |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5406 ui.status(m, label='log.branch') |
9603 | 5407 |
14906
7c3c8f37e84f
summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents:
14874
diff
changeset
|
5408 if marks: |
7c3c8f37e84f
summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents:
14874
diff
changeset
|
5409 current = repo._bookmarkcurrent |
14907
84af56cc673b
summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents:
14906
diff
changeset
|
5410 ui.write(_('bookmarks:'), label='log.bookmark') |
14906
7c3c8f37e84f
summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents:
14874
diff
changeset
|
5411 if current is not None: |
7c3c8f37e84f
summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents:
14874
diff
changeset
|
5412 try: |
7c3c8f37e84f
summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents:
14874
diff
changeset
|
5413 marks.remove(current) |
14907
84af56cc673b
summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents:
14906
diff
changeset
|
5414 ui.write(' *' + current, label='bookmarks.current') |
14906
7c3c8f37e84f
summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents:
14874
diff
changeset
|
5415 except ValueError: |
7c3c8f37e84f
summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents:
14874
diff
changeset
|
5416 # current bookmark not in parent ctx marks |
7c3c8f37e84f
summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents:
14874
diff
changeset
|
5417 pass |
14907
84af56cc673b
summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents:
14906
diff
changeset
|
5418 for m in marks: |
84af56cc673b
summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents:
14906
diff
changeset
|
5419 ui.write(' ' + m, label='log.bookmark') |
84af56cc673b
summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents:
14906
diff
changeset
|
5420 ui.write('\n', label='log.bookmark') |
14906
7c3c8f37e84f
summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents:
14874
diff
changeset
|
5421 |
10390
f163775e36e0
summary: various fixes, add a test
Matt Mackall <mpm@selenic.com>
parents:
10389
diff
changeset
|
5422 st = list(repo.status(unknown=True))[:6] |
11088
c4347e48b0d0
summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
5423 |
11331
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5424 c = repo.dirstate.copies() |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5425 copied, renamed = [], [] |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5426 for d, s in c.iteritems(): |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5427 if s in st[2]: |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5428 st[2].remove(s) |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5429 renamed.append(d) |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5430 else: |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5431 copied.append(d) |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5432 if d in st[1]: |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5433 st[1].remove(d) |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5434 st.insert(3, renamed) |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5435 st.insert(4, copied) |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5436 |
15856
6bed6cc6d0d0
commands: partial backout of fbb68b382040
Martin Geisler <mg@aragost.com>
parents:
15855
diff
changeset
|
5437 ms = mergemod.mergestate(repo) |
10390
f163775e36e0
summary: various fixes, add a test
Matt Mackall <mpm@selenic.com>
parents:
10389
diff
changeset
|
5438 st.append([f for f in ms if ms[f] == 'u']) |
11088
c4347e48b0d0
summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
5439 |
c4347e48b0d0
summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
5440 subs = [s for s in ctx.substate if ctx.sub(s).dirty()] |
c4347e48b0d0
summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
5441 st.append(subs) |
c4347e48b0d0
summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
5442 |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5443 labels = [ui.label(_('%d modified'), 'status.modified'), |
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5444 ui.label(_('%d added'), 'status.added'), |
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5445 ui.label(_('%d removed'), 'status.removed'), |
11331
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5446 ui.label(_('%d renamed'), 'status.copied'), |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5447 ui.label(_('%d copied'), 'status.copied'), |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5448 ui.label(_('%d deleted'), 'status.deleted'), |
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5449 ui.label(_('%d unknown'), 'status.unknown'), |
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5450 ui.label(_('%d ignored'), 'status.ignored'), |
11088
c4347e48b0d0
summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
5451 ui.label(_('%d unresolved'), 'resolve.unresolved'), |
c4347e48b0d0
summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
5452 ui.label(_('%d subrepos'), 'status.modified')] |
9603 | 5453 t = [] |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10270
diff
changeset
|
5454 for s, l in zip(st, labels): |
9607
8e0e0d854b60
commands: do not split a translated string
Martin Geisler <mg@lazybytes.net>
parents:
9603
diff
changeset
|
5455 if s: |
8e0e0d854b60
commands: do not split a translated string
Martin Geisler <mg@lazybytes.net>
parents:
9603
diff
changeset
|
5456 t.append(l % len(s)) |
9603 | 5457 |
5458 t = ', '.join(t) | |
10269
acf001ee5ef8
summary: L10N messages hide clean-ness of workdir from 'hg summary'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
10263
diff
changeset
|
5459 cleanworkdir = False |
9603 | 5460 |
5461 if len(parents) > 1: | |
11310
ac873ecfc3c2
Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents:
11302
diff
changeset
|
5462 t += _(' (merge)') |
9603 | 5463 elif branch != parents[0].branch(): |
11310
ac873ecfc3c2
Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents:
11302
diff
changeset
|
5464 t += _(' (new branch)') |
16720
e825a89de5d7
context: add changectx.closesbranch() method
Brodie Rao <brodie@sf.io>
parents:
16719
diff
changeset
|
5465 elif (parents[0].closesbranch() and |
11165
e8915e19205a
summary: show if commit will be from a closed head
Gilles Moris <gilles.moris@free.fr>
parents:
11164
diff
changeset
|
5466 pnode in repo.branchheads(branch, closed=True)): |
11310
ac873ecfc3c2
Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents:
11302
diff
changeset
|
5467 t += _(' (head closed)') |
11331
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5468 elif not (st[0] or st[1] or st[2] or st[3] or st[4] or st[9]): |
11310
ac873ecfc3c2
Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents:
11302
diff
changeset
|
5469 t += _(' (clean)') |
10269
acf001ee5ef8
summary: L10N messages hide clean-ness of workdir from 'hg summary'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
10263
diff
changeset
|
5470 cleanworkdir = True |
9603 | 5471 elif pnode not in bheads: |
11310
ac873ecfc3c2
Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents:
11302
diff
changeset
|
5472 t += _(' (new branch head)') |
9603 | 5473 |
10269
acf001ee5ef8
summary: L10N messages hide clean-ness of workdir from 'hg summary'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
10263
diff
changeset
|
5474 if cleanworkdir: |
11310
ac873ecfc3c2
Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents:
11302
diff
changeset
|
5475 ui.status(_('commit: %s\n') % t.strip()) |
9605 | 5476 else: |
11310
ac873ecfc3c2
Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents:
11302
diff
changeset
|
5477 ui.write(_('commit: %s\n') % t.strip()) |
9603 | 5478 |
5479 # all ancestors of branch heads - all ancestors of parent = new csets | |
5480 new = [0] * len(repo) | |
5481 cl = repo.changelog | |
10390
f163775e36e0
summary: various fixes, add a test
Matt Mackall <mpm@selenic.com>
parents:
10389
diff
changeset
|
5482 for a in [cl.rev(n) for n in bheads]: |
f163775e36e0
summary: various fixes, add a test
Matt Mackall <mpm@selenic.com>
parents:
10389
diff
changeset
|
5483 new[a] = 1 |
16866
91f3ac205816
revlog: ancestors(*revs) becomes ancestors(revs) (API)
Bryan O'Sullivan <bryano@fb.com>
parents:
16864
diff
changeset
|
5484 for a in cl.ancestors([cl.rev(n) for n in bheads]): |
9603 | 5485 new[a] = 1 |
10390
f163775e36e0
summary: various fixes, add a test
Matt Mackall <mpm@selenic.com>
parents:
10389
diff
changeset
|
5486 for a in [p.rev() for p in parents]: |
f163775e36e0
summary: various fixes, add a test
Matt Mackall <mpm@selenic.com>
parents:
10389
diff
changeset
|
5487 if a >= 0: |
f163775e36e0
summary: various fixes, add a test
Matt Mackall <mpm@selenic.com>
parents:
10389
diff
changeset
|
5488 new[a] = 0 |
16866
91f3ac205816
revlog: ancestors(*revs) becomes ancestors(revs) (API)
Bryan O'Sullivan <bryano@fb.com>
parents:
16864
diff
changeset
|
5489 for a in cl.ancestors([p.rev() for p in parents]): |
9603 | 5490 new[a] = 0 |
5491 new = sum(new) | |
5492 | |
5493 if new == 0: | |
9605 | 5494 ui.status(_('update: (current)\n')) |
9603 | 5495 elif pnode not in bheads: |
5496 ui.write(_('update: %d new changesets (update)\n') % new) | |
5497 else: | |
5498 ui.write(_('update: %d new changesets, %d branch heads (merge)\n') % | |
5499 (new, len(bheads))) | |
5500 | |
9620 | 5501 if opts.get('remote'): |
5502 t = [] | |
10389
6dc25b01e170
fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents:
10384
diff
changeset
|
5503 source, branches = hg.parseurl(ui.expandpath('default')) |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
5504 other = hg.peer(repo, {}, source) |
16683 | 5505 revs, checkout = hg.addbranchrevs(repo, other, branches, |
5506 opts.get('rev')) | |
14076
924c82157d46
url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents:
14073
diff
changeset
|
5507 ui.debug('comparing with %s\n' % util.hidepassword(source)) |
9620 | 5508 repo.ui.pushbuffer() |
14214
c5db85676c38
summary: run discovery only once for in/out against same repo
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14213
diff
changeset
|
5509 commoninc = discovery.findcommonincoming(repo, other) |
c5db85676c38
summary: run discovery only once for in/out against same repo
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14213
diff
changeset
|
5510 _common, incoming, _rheads = commoninc |
9620 | 5511 repo.ui.popbuffer() |
5512 if incoming: | |
5513 t.append(_('1 or more incoming')) | |
5514 | |
10389
6dc25b01e170
fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents:
10384
diff
changeset
|
5515 dest, branches = hg.parseurl(ui.expandpath('default-push', 'default')) |
6dc25b01e170
fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents:
10384
diff
changeset
|
5516 revs, checkout = hg.addbranchrevs(repo, repo, branches, None) |
14214
c5db85676c38
summary: run discovery only once for in/out against same repo
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14213
diff
changeset
|
5517 if source != dest: |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
5518 other = hg.peer(repo, {}, dest) |
14214
c5db85676c38
summary: run discovery only once for in/out against same repo
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14213
diff
changeset
|
5519 commoninc = None |
c5db85676c38
summary: run discovery only once for in/out against same repo
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14213
diff
changeset
|
5520 ui.debug('comparing with %s\n' % util.hidepassword(dest)) |
9620 | 5521 repo.ui.pushbuffer() |
15837
cd956049fc14
discovery: introduce outgoing object for result of findcommonoutgoing
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15836
diff
changeset
|
5522 outgoing = discovery.findcommonoutgoing(repo, other, |
cd956049fc14
discovery: introduce outgoing object for result of findcommonoutgoing
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15836
diff
changeset
|
5523 commoninc=commoninc) |
9620 | 5524 repo.ui.popbuffer() |
15837
cd956049fc14
discovery: introduce outgoing object for result of findcommonoutgoing
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15836
diff
changeset
|
5525 o = outgoing.missing |
9620 | 5526 if o: |
5527 t.append(_('%d outgoing') % len(o)) | |
13454
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5528 if 'bookmarks' in other.listkeys('namespaces'): |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5529 lmarks = repo.listkeys('bookmarks') |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5530 rmarks = other.listkeys('bookmarks') |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5531 diff = set(rmarks) - set(lmarks) |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5532 if len(diff) > 0: |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5533 t.append(_('%d incoming bookmarks') % len(diff)) |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5534 diff = set(lmarks) - set(rmarks) |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5535 if len(diff) > 0: |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5536 t.append(_('%d outgoing bookmarks') % len(diff)) |
9620 | 5537 |
5538 if t: | |
5539 ui.write(_('remote: %s\n') % (', '.join(t))) | |
5540 else: | |
5541 ui.status(_('remote: (synced)\n')) | |
5542 | |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5543 @command('tag', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5544 [('f', 'force', None, _('force tag')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5545 ('l', 'local', None, _('make the tag local')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5546 ('r', 'rev', '', _('revision to tag'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5547 ('', 'remove', None, _('remove a tag')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5548 # -l/--local is already there, commitopts cannot be used |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5549 ('e', 'edit', None, _('edit commit message')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5550 ('m', 'message', '', _('use <text> as commit message'), _('TEXT')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5551 ] + commitopts2, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5552 _('[-f] [-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME...')) |
6321
55ba3bc5b8fd
tag: allow multiple tags to be added or removed
John Coomes <john.coomes@sun.com>
parents:
6304
diff
changeset
|
5553 def tag(ui, repo, name1, *names, **opts): |
55ba3bc5b8fd
tag: allow multiple tags to be added or removed
John Coomes <john.coomes@sun.com>
parents:
6304
diff
changeset
|
5554 """add one or more tags for the current or given revision |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5555 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5556 Name a particular revision using <name>. |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5557 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5558 Tags are used to name particular revisions of the repository and are |
6220
1939e29151ca
Fixed typo in tag help, found by John Coomes
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6217
diff
changeset
|
5559 very useful to compare different revisions, to go back to significant |
13135
1c1ca9d393f4
tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents:
13134
diff
changeset
|
5560 earlier versions or to mark branch points as releases, etc. Changing |
1c1ca9d393f4
tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents:
13134
diff
changeset
|
5561 an existing tag is normally disallowed; use -f/--force to override. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5562 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
5563 If no revision is given, the parent of the working directory is |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
5564 used, or tip if no revision is checked out. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5565 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5566 To facilitate version control, distribution, and merging of tags, |
13135
1c1ca9d393f4
tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents:
13134
diff
changeset
|
5567 they are stored as a file named ".hgtags" which is managed similarly |
1c1ca9d393f4
tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents:
13134
diff
changeset
|
5568 to other project files and can be hand-edited if necessary. This |
1c1ca9d393f4
tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents:
13134
diff
changeset
|
5569 also means that tagging creates a new commit. The file |
1c1ca9d393f4
tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents:
13134
diff
changeset
|
5570 ".hg/localtags" is used for local tags (not shared among |
1c1ca9d393f4
tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents:
13134
diff
changeset
|
5571 repositories). |
1c1ca9d393f4
tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents:
13134
diff
changeset
|
5572 |
1c1ca9d393f4
tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents:
13134
diff
changeset
|
5573 Tag commits are usually made at the head of a branch. If the parent |
1c1ca9d393f4
tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents:
13134
diff
changeset
|
5574 of the working directory is not a branch head, :hg:`tag` aborts; use |
1c1ca9d393f4
tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents:
13134
diff
changeset
|
5575 -f/--force to force the tag commit to be based on a non-head |
1c1ca9d393f4
tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents:
13134
diff
changeset
|
5576 changeset. |
6163
1f733c2f0165
Document log date ranges and mention 'hg help dates' for all commands (issue998)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6161
diff
changeset
|
5577 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
5578 See :hg:`help dates` for a list of formats valid for -d/--date. |
11063
eb23c876c111
tag: warn users about tag/branch possible name conflicts
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11061
diff
changeset
|
5579 |
eb23c876c111
tag: warn users about tag/branch possible name conflicts
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11061
diff
changeset
|
5580 Since tag names have priority over branch names during revision |
eb23c876c111
tag: warn users about tag/branch possible name conflicts
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11061
diff
changeset
|
5581 lookup, using an existing branch name as a tag name is discouraged. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5582 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5583 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5584 """ |
15877
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5585 wlock = lock = None |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5586 try: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5587 wlock = repo.wlock() |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5588 lock = repo.lock() |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5589 rev_ = "." |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5590 names = [t.strip() for t in (name1,) + names] |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5591 if len(names) != len(set(names)): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5592 raise util.Abort(_('tag names must be unique')) |
6321
55ba3bc5b8fd
tag: allow multiple tags to be added or removed
John Coomes <john.coomes@sun.com>
parents:
6304
diff
changeset
|
5593 for n in names: |
15877
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5594 if n in ['tip', '.', 'null']: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5595 raise util.Abort(_("the name '%s' is reserved") % n) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5596 if not n: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5597 raise util.Abort(_('tag names cannot consist entirely of ' |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5598 'whitespace')) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5599 if opts.get('rev') and opts.get('remove'): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5600 raise util.Abort(_("--rev and --remove are incompatible")) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5601 if opts.get('rev'): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5602 rev_ = opts['rev'] |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5603 message = opts.get('message') |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5604 if opts.get('remove'): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5605 expectedtype = opts.get('local') and 'local' or 'global' |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5606 for n in names: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5607 if not repo.tagtype(n): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5608 raise util.Abort(_("tag '%s' does not exist") % n) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5609 if repo.tagtype(n) != expectedtype: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5610 if expectedtype == 'global': |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5611 raise util.Abort(_("tag '%s' is not a global tag") % n) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5612 else: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5613 raise util.Abort(_("tag '%s' is not a local tag") % n) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5614 rev_ = nullid |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5615 if not message: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5616 # we don't translate commit messages |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5617 message = 'Removed tag %s' % ', '.join(names) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5618 elif not opts.get('force'): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5619 for n in names: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5620 if n in repo.tags(): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5621 raise util.Abort(_("tag '%s' already exists " |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5622 "(use -f to force)") % n) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5623 if not opts.get('local'): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5624 p1, p2 = repo.dirstate.parents() |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5625 if p2 != nullid: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5626 raise util.Abort(_('uncommitted merge')) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5627 bheads = repo.branchheads() |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5628 if not opts.get('force') and bheads and p1 not in bheads: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5629 raise util.Abort(_('not at a branch head (use -f to force)')) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5630 r = scmutil.revsingle(repo, rev_).node() |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5631 |
4213 | 5632 if not message: |
9183
d0225fa2f6c4
do not translate commit messages
Martin Geisler <mg@lazybytes.net>
parents:
9128
diff
changeset
|
5633 # we don't translate commit messages |
15877
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5634 message = ('Added tag %s for changeset %s' % |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5635 (', '.join(names), short(r))) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5636 |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5637 date = opts.get('date') |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5638 if date: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5639 date = util.parsedate(date) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5640 |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5641 if opts.get('edit'): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5642 message = ui.edit(message, ui.username()) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5643 |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5644 repo.tag(names, r, message, opts.get('local'), opts.get('user'), date) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5645 finally: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5646 release(lock, wlock) |
401
af4848f83e68
From: Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
mpm@selenic.com
parents:
396
diff
changeset
|
5647 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5648 @command('tags', [], '') |
248 | 5649 def tags(ui, repo): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5650 """list repository tags |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5651 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
5652 This lists both regular and local tags. When the -v/--verbose |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
5653 switch is used, a third column "local" is printed for local tags. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5654 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5655 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5656 """ |
477
520540fd6b64
Handle errors in .hgtags or hgrc [tags] section more gracefully.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
470
diff
changeset
|
5657 |
2966
fb493241d7f6
Only show long hashes with --debug, not --verbose
Matt Mackall <mpm@selenic.com>
parents:
2963
diff
changeset
|
5658 hexfunc = ui.debugflag and hex or short |
5658
ae3089cefaab
Add --verbose support to tags command.
Osku Salerma <osku@iki.fi>
parents:
5657
diff
changeset
|
5659 tagtype = "" |
ae3089cefaab
Add --verbose support to tags command.
Osku Salerma <osku@iki.fi>
parents:
5657
diff
changeset
|
5660 |
8210
344751cd8cb8
replace various uses of list.reverse()
Matt Mackall <mpm@selenic.com>
parents:
8209
diff
changeset
|
5661 for t, n in reversed(repo.tagslist()): |
5658
ae3089cefaab
Add --verbose support to tags command.
Osku Salerma <osku@iki.fi>
parents:
5657
diff
changeset
|
5662 if ui.quiet: |
15047
ef43610a4cce
ui: use labels when outputting tags
Marc Simpson <marc@0branch.com>
parents:
15046
diff
changeset
|
5663 ui.write("%s\n" % t, label='tags.normal') |
5658
ae3089cefaab
Add --verbose support to tags command.
Osku Salerma <osku@iki.fi>
parents:
5657
diff
changeset
|
5664 continue |
ae3089cefaab
Add --verbose support to tags command.
Osku Salerma <osku@iki.fi>
parents:
5657
diff
changeset
|
5665 |
13893
1aea86673dee
tags: no need to check for valid nodes
Idan Kamara <idankk86@gmail.com>
parents:
13891
diff
changeset
|
5666 hn = hexfunc(n) |
1aea86673dee
tags: no need to check for valid nodes
Idan Kamara <idankk86@gmail.com>
parents:
13891
diff
changeset
|
5667 r = "%5d:%s" % (repo.changelog.rev(n), hn) |
15047
ef43610a4cce
ui: use labels when outputting tags
Marc Simpson <marc@0branch.com>
parents:
15046
diff
changeset
|
5668 rev = ui.label(r, 'log.changeset') |
13893
1aea86673dee
tags: no need to check for valid nodes
Idan Kamara <idankk86@gmail.com>
parents:
13891
diff
changeset
|
5669 spaces = " " * (30 - encoding.colwidth(t)) |
1aea86673dee
tags: no need to check for valid nodes
Idan Kamara <idankk86@gmail.com>
parents:
13891
diff
changeset
|
5670 |
15047
ef43610a4cce
ui: use labels when outputting tags
Marc Simpson <marc@0branch.com>
parents:
15046
diff
changeset
|
5671 tag = ui.label(t, 'tags.normal') |
13893
1aea86673dee
tags: no need to check for valid nodes
Idan Kamara <idankk86@gmail.com>
parents:
13891
diff
changeset
|
5672 if ui.verbose: |
1aea86673dee
tags: no need to check for valid nodes
Idan Kamara <idankk86@gmail.com>
parents:
13891
diff
changeset
|
5673 if repo.tagtype(t) == 'local': |
1aea86673dee
tags: no need to check for valid nodes
Idan Kamara <idankk86@gmail.com>
parents:
13891
diff
changeset
|
5674 tagtype = " local" |
15047
ef43610a4cce
ui: use labels when outputting tags
Marc Simpson <marc@0branch.com>
parents:
15046
diff
changeset
|
5675 tag = ui.label(t, 'tags.local') |
13893
1aea86673dee
tags: no need to check for valid nodes
Idan Kamara <idankk86@gmail.com>
parents:
13891
diff
changeset
|
5676 else: |
1aea86673dee
tags: no need to check for valid nodes
Idan Kamara <idankk86@gmail.com>
parents:
13891
diff
changeset
|
5677 tagtype = "" |
15047
ef43610a4cce
ui: use labels when outputting tags
Marc Simpson <marc@0branch.com>
parents:
15046
diff
changeset
|
5678 ui.write("%s%s %s%s\n" % (tag, spaces, rev, tagtype)) |
248 | 5679 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5680 @command('tip', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5681 [('p', 'patch', None, _('show patch')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5682 ('g', 'git', None, _('use git extended diff format')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5683 ] + templateopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5684 _('[-p] [-g]')) |
1731
251729df9cc6
add -p option to tip. for issue 64.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1728
diff
changeset
|
5685 def tip(ui, repo, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5686 """show the tip revision |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5687 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
5688 The tip revision (usually just called the tip) is the changeset |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
5689 most recently added to the repository (and therefore the most |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
5690 recently changed head). |
6364
b22b39059722
Make tip help more helpful
Patrick Mezard <pmezard@gmail.com>
parents:
6353
diff
changeset
|
5691 |
6367
51984a2413f2
Remove unexpected "Alternately" word from tip help.
Patrick Mezard <pmezard@gmail.com>
parents:
6364
diff
changeset
|
5692 If you have just made a commit, that commit will be the tip. If |
51984a2413f2
Remove unexpected "Alternately" word from tip help.
Patrick Mezard <pmezard@gmail.com>
parents:
6364
diff
changeset
|
5693 you have just pulled changes from another repository, the tip of |
51984a2413f2
Remove unexpected "Alternately" word from tip help.
Patrick Mezard <pmezard@gmail.com>
parents:
6364
diff
changeset
|
5694 that repository becomes the current tip. The "tip" tag is special |
51984a2413f2
Remove unexpected "Alternately" word from tip help.
Patrick Mezard <pmezard@gmail.com>
parents:
6364
diff
changeset
|
5695 and cannot be renamed or assigned to a different changeset. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5696 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5697 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5698 """ |
10152
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
5699 displayer = cmdutil.show_changeset(ui, repo, opts) |
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
5700 displayer.show(repo[len(repo) - 1]) |
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
5701 displayer.close() |
245 | 5702 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5703 @command('unbundle', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5704 [('u', 'update', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5705 _('update to new branch head if changesets were unbundled'))], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5706 _('[-u] FILE...')) |
4699
a6b62584d0b2
unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
4697
diff
changeset
|
5707 def unbundle(ui, repo, fname1, *fnames, **opts): |
a6b62584d0b2
unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
4697
diff
changeset
|
5708 """apply one or more changegroup files |
a6b62584d0b2
unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
4697
diff
changeset
|
5709 |
a6b62584d0b2
unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
4697
diff
changeset
|
5710 Apply one or more compressed changegroup files generated by the |
a6b62584d0b2
unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
4697
diff
changeset
|
5711 bundle command. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5712 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5713 Returns 0 on success, 1 if an update has unresolved files. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5714 """ |
4699
a6b62584d0b2
unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
4697
diff
changeset
|
5715 fnames = (fname1,) + fnames |
6180
d98ef03893e6
commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents:
6178
diff
changeset
|
5716 |
8109
496ae1ea4698
switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents:
8088
diff
changeset
|
5717 lock = repo.lock() |
13663
d16c99f16f00
bundle: update current bookmark to most recent revision on current branch
David Soria Parra <dsp@php.net>
parents:
13646
diff
changeset
|
5718 wc = repo['.'] |
6180
d98ef03893e6
commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents:
6178
diff
changeset
|
5719 try: |
d98ef03893e6
commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents:
6178
diff
changeset
|
5720 for fname in fnames: |
7271
8046f0a070a6
use our urlopener (proxy handling, etc) instead of urllib
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7270
diff
changeset
|
5721 f = url.open(ui, fname) |
6180
d98ef03893e6
commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents:
6178
diff
changeset
|
5722 gen = changegroup.readbundle(f, fname) |
15585
a348739da8f0
addchangegroup: remove the lock argument on the addchangegroup methods
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15580
diff
changeset
|
5723 modheads = repo.addchangegroup(gen, 'unbundle', 'bundle:' + fname) |
6180
d98ef03893e6
commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents:
6178
diff
changeset
|
5724 finally: |
8109
496ae1ea4698
switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents:
8088
diff
changeset
|
5725 lock.release() |
16690
de2267517841
unbundle: move bookmark update outside the lock
Mads Kiilerich <mads@kiilerich.com>
parents:
16689
diff
changeset
|
5726 bookmarks.updatecurrentbookmark(repo, wc.node(), wc.branch()) |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
5727 return postincoming(ui, repo, modheads, opts.get('update'), None) |
1218
cde6818e082a
Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents:
1215
diff
changeset
|
5728 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5729 @command('^update|up|checkout|co', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5730 [('C', 'clean', None, _('discard uncommitted changes (no backup)')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5731 ('c', 'check', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5732 _('update across branches if no uncommitted changes')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5733 ('d', 'date', '', _('tipmost revision matching date'), _('DATE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5734 ('r', 'rev', '', _('revision'), _('REV'))], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5735 _('[-c] [-C] [-d DATE] [[-r] REV]')) |
8855 | 5736 def update(ui, repo, node=None, rev=None, clean=False, date=None, check=False): |
10889
e25c450c351e
commands: improve some command summaries
Matt Mackall <mpm@selenic.com>
parents:
10882
diff
changeset
|
5737 """update working directory (or switch revisions) |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5738 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
5739 Update the repository's working directory to the specified |
12688
8c034a825cfe
help: improve description of update --check
Kevin Bullock <kbullock@ringworld.org>
parents:
12618
diff
changeset
|
5740 changeset. If no changeset is specified, update to the tip of the |
15957
12a1c9e92d66
update: note ways to avoid moving bookmark
Kevin Bullock <kbullock@ringworld.org>
parents:
15950
diff
changeset
|
5741 current named branch and move the current bookmark (see :hg:`help |
12a1c9e92d66
update: note ways to avoid moving bookmark
Kevin Bullock <kbullock@ringworld.org>
parents:
15950
diff
changeset
|
5742 bookmarks`). |
12688
8c034a825cfe
help: improve description of update --check
Kevin Bullock <kbullock@ringworld.org>
parents:
12618
diff
changeset
|
5743 |
17143
c9e6c6ae4ea1
update: move help text about parent revision higher up
Adrian Buehlmann <adrian@cadifra.com>
parents:
17142
diff
changeset
|
5744 Update sets the working directory's parent revison to the specified |
c9e6c6ae4ea1
update: move help text about parent revision higher up
Adrian Buehlmann <adrian@cadifra.com>
parents:
17142
diff
changeset
|
5745 changeset (see :hg:`help parents`). |
c9e6c6ae4ea1
update: move help text about parent revision higher up
Adrian Buehlmann <adrian@cadifra.com>
parents:
17142
diff
changeset
|
5746 |
16877
6e578e77cbe6
update: fix help regarding update to ancestor
Kevin Bullock <kbullock@ringworld.org>
parents:
16869
diff
changeset
|
5747 If the changeset is not a descendant or ancestor of the working |
6e578e77cbe6
update: fix help regarding update to ancestor
Kevin Bullock <kbullock@ringworld.org>
parents:
16869
diff
changeset
|
5748 directory's parent, the update is aborted. With the -c/--check |
6e578e77cbe6
update: fix help regarding update to ancestor
Kevin Bullock <kbullock@ringworld.org>
parents:
16869
diff
changeset
|
5749 option, the working directory is checked for uncommitted changes; if |
6e578e77cbe6
update: fix help regarding update to ancestor
Kevin Bullock <kbullock@ringworld.org>
parents:
16869
diff
changeset
|
5750 none are found, the working directory is updated to the specified |
9718
fe1b19bfe75b
help: describe new cross-branch behavior in update help text, plus cleanups
Stuart W Marks <smarks@smarks.org>
parents:
9714
diff
changeset
|
5751 changeset. |
fe1b19bfe75b
help: describe new cross-branch behavior in update help text, plus cleanups
Stuart W Marks <smarks@smarks.org>
parents:
9714
diff
changeset
|
5752 |
fe1b19bfe75b
help: describe new cross-branch behavior in update help text, plus cleanups
Stuart W Marks <smarks@smarks.org>
parents:
9714
diff
changeset
|
5753 The following rules apply when the working directory contains |
fe1b19bfe75b
help: describe new cross-branch behavior in update help text, plus cleanups
Stuart W Marks <smarks@smarks.org>
parents:
9714
diff
changeset
|
5754 uncommitted changes: |
fe1b19bfe75b
help: describe new cross-branch behavior in update help text, plus cleanups
Stuart W Marks <smarks@smarks.org>
parents:
9714
diff
changeset
|
5755 |
9831
9ebad1b93456
help: improve wording of update help text
Stuart W Marks <smarks@smarks.org>
parents:
9806
diff
changeset
|
5756 1. If neither -c/--check nor -C/--clean is specified, and if |
9ebad1b93456
help: improve wording of update help text
Stuart W Marks <smarks@smarks.org>
parents:
9806
diff
changeset
|
5757 the requested changeset is an ancestor or descendant of |
9ebad1b93456
help: improve wording of update help text
Stuart W Marks <smarks@smarks.org>
parents:
9806
diff
changeset
|
5758 the working directory's parent, the uncommitted changes |
9ebad1b93456
help: improve wording of update help text
Stuart W Marks <smarks@smarks.org>
parents:
9806
diff
changeset
|
5759 are merged into the requested changeset and the merged |
9ebad1b93456
help: improve wording of update help text
Stuart W Marks <smarks@smarks.org>
parents:
9806
diff
changeset
|
5760 result is left uncommitted. If the requested changeset is |
9ebad1b93456
help: improve wording of update help text
Stuart W Marks <smarks@smarks.org>
parents:
9806
diff
changeset
|
5761 not an ancestor or descendant (that is, it is on another |
9ebad1b93456
help: improve wording of update help text
Stuart W Marks <smarks@smarks.org>
parents:
9806
diff
changeset
|
5762 branch), the update is aborted and the uncommitted changes |
9740
2ebe679fec21
commands: use enumerated lists in help texts
Martin Geisler <mg@lazybytes.net>
parents:
9734
diff
changeset
|
5763 are preserved. |
9718
fe1b19bfe75b
help: describe new cross-branch behavior in update help text, plus cleanups
Stuart W Marks <smarks@smarks.org>
parents:
9714
diff
changeset
|
5764 |
fe1b19bfe75b
help: describe new cross-branch behavior in update help text, plus cleanups
Stuart W Marks <smarks@smarks.org>
parents:
9714
diff
changeset
|
5765 2. With the -c/--check option, the update is aborted and the |
9740
2ebe679fec21
commands: use enumerated lists in help texts
Martin Geisler <mg@lazybytes.net>
parents:
9734
diff
changeset
|
5766 uncommitted changes are preserved. |
9718
fe1b19bfe75b
help: describe new cross-branch behavior in update help text, plus cleanups
Stuart W Marks <smarks@smarks.org>
parents:
9714
diff
changeset
|
5767 |
fe1b19bfe75b
help: describe new cross-branch behavior in update help text, plus cleanups
Stuart W Marks <smarks@smarks.org>
parents:
9714
diff
changeset
|
5768 3. With the -C/--clean option, uncommitted changes are discarded and |
9740
2ebe679fec21
commands: use enumerated lists in help texts
Martin Geisler <mg@lazybytes.net>
parents:
9734
diff
changeset
|
5769 the working directory is updated to the requested changeset. |
9718
fe1b19bfe75b
help: describe new cross-branch behavior in update help text, plus cleanups
Stuart W Marks <smarks@smarks.org>
parents:
9714
diff
changeset
|
5770 |
17144
71e36b3d2cc4
update: mention how update can be used to cancel an uncommitted merge
Adrian Buehlmann <adrian@cadifra.com>
parents:
17143
diff
changeset
|
5771 To cancel an uncommitted merge (and lose your changes), use |
71e36b3d2cc4
update: mention how update can be used to cancel an uncommitted merge
Adrian Buehlmann <adrian@cadifra.com>
parents:
17143
diff
changeset
|
5772 :hg:`update --clean .`. |
71e36b3d2cc4
update: mention how update can be used to cancel an uncommitted merge
Adrian Buehlmann <adrian@cadifra.com>
parents:
17143
diff
changeset
|
5773 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
5774 Use null as the changeset to remove the working directory (like |
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
5775 :hg:`clone -U`). |
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
5776 |
14729
94eea58da2a3
update: do not use the term 'update' when mentioning reverting one file
Adrian Buehlmann <adrian@cadifra.com>
parents:
14726
diff
changeset
|
5777 If you want to revert just one file to an older revision, use |
94eea58da2a3
update: do not use the term 'update' when mentioning reverting one file
Adrian Buehlmann <adrian@cadifra.com>
parents:
14726
diff
changeset
|
5778 :hg:`revert [-r REV] NAME`. |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
5779 |
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
5780 See :hg:`help dates` for a list of formats valid for -d/--date. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5781 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5782 Returns 0 on success, 1 if there are unresolved files. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5783 """ |
4450
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
5784 if rev and node: |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
5785 raise util.Abort(_("please specify just one revision")) |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
5786 |
13568
0b79cf616e65
commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents:
13477
diff
changeset
|
5787 if rev is None or rev == '': |
4450
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
5788 rev = node |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
5789 |
15935
6c97eb445341
bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents:
15912
diff
changeset
|
5790 # with no argument, we also move the current bookmark, if any |
6c97eb445341
bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents:
15912
diff
changeset
|
5791 movemarkfrom = None |
16189
41bef17e6ad8
update: don't move the active bookmark if a rev is specified with -r
Idan Kamara <idankk86@gmail.com>
parents:
16175
diff
changeset
|
5792 if rev is None or node == '': |
15935
6c97eb445341
bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents:
15912
diff
changeset
|
5793 movemarkfrom = repo['.'].node() |
6c97eb445341
bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents:
15912
diff
changeset
|
5794 |
13415
25b5694b9337
update: preserve possible bookmark name to set current bookmark correctly
David Soria Parra <dsp@php.net>
parents:
13407
diff
changeset
|
5795 # if we defined a bookmark, we have to remember the original bookmark name |
25b5694b9337
update: preserve possible bookmark name to set current bookmark correctly
David Soria Parra <dsp@php.net>
parents:
13407
diff
changeset
|
5796 brev = rev |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
5797 rev = scmutil.revsingle(repo, rev, rev).rev() |
12726
61c0df2b089a
update: use revsingle to enable use of revsets as update targets (issue1993)
Augie Fackler <durin42@gmail.com>
parents:
12705
diff
changeset
|
5798 |
9450
e78967d3dd6f
commands: forbid 'hg update --check --clean'
Stuart W Marks <smarks@smarks.org>
parents:
9429
diff
changeset
|
5799 if check and clean: |
9451
3e673c988c85
commands: expand -c and -C in update error message
Martin Geisler <mg@lazybytes.net>
parents:
9450
diff
changeset
|
5800 raise util.Abort(_("cannot specify both -c/--check and -C/--clean")) |
9450
e78967d3dd6f
commands: forbid 'hg update --check --clean'
Stuart W Marks <smarks@smarks.org>
parents:
9429
diff
changeset
|
5801 |
16092
914bc95e227b
update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
5802 if date: |
914bc95e227b
update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
5803 if rev is not None: |
914bc95e227b
update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
5804 raise util.Abort(_("you can't specify a revision and a date")) |
914bc95e227b
update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
5805 rev = cmdutil.finddate(ui, repo, date) |
914bc95e227b
update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
5806 |
9450
e78967d3dd6f
commands: forbid 'hg update --check --clean'
Stuart W Marks <smarks@smarks.org>
parents:
9429
diff
changeset
|
5807 if check: |
8855 | 5808 c = repo[None] |
16491
bfe89d65d651
update: make --check abort with dirty subrepos
Patrick Mezard <patrick@mezard.eu>
parents:
16490
diff
changeset
|
5809 if c.dirty(merge=False, branch=False): |
8855 | 5810 raise util.Abort(_("uncommitted local changes")) |
16490
c8ee34917045
update: fix "not rev" vs "rev is None"
Patrick Mezard <patrick@mezard.eu>
parents:
16473
diff
changeset
|
5811 if rev is None: |
16092
914bc95e227b
update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
5812 rev = repo[repo[None].branch()].rev() |
16095
3eab42088be4
update: just merge unknown file collisions
Matt Mackall <mpm@selenic.com>
parents:
16092
diff
changeset
|
5813 mergemod._checkunknown(repo, repo[None], repo[rev]) |
16092
914bc95e227b
update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
5814 |
914bc95e227b
update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
5815 if clean: |
13367
cef73cd9c268
bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents:
13366
diff
changeset
|
5816 ret = hg.clean(repo, rev) |
2808
30f59f4a327e
Introduce update helper functions: update, merge, clean, and revert
Matt Mackall <mpm@selenic.com>
parents:
2806
diff
changeset
|
5817 else: |
13367
cef73cd9c268
bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents:
13366
diff
changeset
|
5818 ret = hg.update(repo, rev) |
cef73cd9c268
bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents:
13366
diff
changeset
|
5819 |
15935
6c97eb445341
bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents:
15912
diff
changeset
|
5820 if not ret and movemarkfrom: |
16010
c7811ca6fb94
update: note updated bookmark
Kevin Bullock <kbullock@ringworld.org>
parents:
16009
diff
changeset
|
5821 if bookmarks.update(repo, [movemarkfrom], repo['.'].node()): |
c7811ca6fb94
update: note updated bookmark
Kevin Bullock <kbullock@ringworld.org>
parents:
16009
diff
changeset
|
5822 ui.status(_("updating bookmark %s\n") % repo._bookmarkcurrent) |
15935
6c97eb445341
bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents:
15912
diff
changeset
|
5823 elif brev in repo._bookmarks: |
13415
25b5694b9337
update: preserve possible bookmark name to set current bookmark correctly
David Soria Parra <dsp@php.net>
parents:
13407
diff
changeset
|
5824 bookmarks.setcurrent(repo, brev) |
16191
7c75924a6926
update: delete bookmarks.current when explicitly updating to a rev (issue3276)
Idan Kamara <idankk86@gmail.com>
parents:
16189
diff
changeset
|
5825 elif brev: |
7c75924a6926
update: delete bookmarks.current when explicitly updating to a rev (issue3276)
Idan Kamara <idankk86@gmail.com>
parents:
16189
diff
changeset
|
5826 bookmarks.unsetcurrent(repo) |
13367
cef73cd9c268
bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents:
13366
diff
changeset
|
5827 |
cef73cd9c268
bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents:
13366
diff
changeset
|
5828 return ret |
254 | 5829 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5830 @command('verify', []) |
247 | 5831 def verify(ui, repo): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5832 """verify the integrity of the repository |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5833 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5834 Verify the integrity of the current repository. |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5835 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5836 This will perform an extensive check of the repository's |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5837 integrity, validating the hashes and checksums of each entry in |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5838 the changelog, manifest, and tracked files, as well as the |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5839 integrity of their crosslinks and indices. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5840 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5841 Returns 0 on success, 1 if errors are encountered. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5842 """ |
2778 | 5843 return hg.verify(repo) |
247 | 5844 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5845 @command('version', []) |
3651
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5846 def version_(ui): |
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5847 """output version and copyright information""" |
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5848 ui.write(_("Mercurial Distributed SCM (version %s)\n") |
7632 | 5849 % util.version()) |
3651
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5850 ui.status(_( |
12829
01145ee78c53
version: replace email address with url to reduce private mail
Matt Mackall <mpm@selenic.com>
parents:
12821
diff
changeset
|
5851 "(see http://mercurial.selenic.com for more information)\n" |
15834
65f7e986a0d0
commands: bump copyright year
Martin Geisler <mg@aragost.com>
parents:
15833
diff
changeset
|
5852 "\nCopyright (C) 2005-2012 Matt Mackall and others\n" |
3651
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5853 "This is free software; see the source for copying conditions. " |
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5854 "There is NO\nwarranty; " |
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5855 "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" |
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5856 )) |
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5857 |
12131
c061f9882ff7
debugdata: try to access filelogs through repo, if possible
Sune Foldager <cryo@cyanite.org>
parents:
12130
diff
changeset
|
5858 norepo = ("clone init version help debugcommands debugcomplete" |
13723
e615765fdcc7
wireproto: add known([id]) function
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13720
diff
changeset
|
5859 " debugdate debuginstall debugfsinfo debugpushkey debugwireargs" |
13741
b51bf961b3cb
wireproto: add getbundle() function
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13727
diff
changeset
|
5860 " debugknown debuggetbundle debugbundle") |
12131
c061f9882ff7
debugdata: try to access filelogs through repo, if possible
Sune Foldager <cryo@cyanite.org>
parents:
12130
diff
changeset
|
5861 optionalrepo = ("identify paths serve showconfig debugancestor debugdag" |
14323
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
5862 " debugdata debugindex debugindexdot debugrevlog") |