Mercurial > hg
annotate mercurial/commands.py @ 19290:f21f4a1b6c24
log: move log file walk to its own function
This moves the logic that determines which changesets to process during a
'hg log foo.txt' command. Putting it in its own function allows extensions
to modify how the file log is traversed. For instance, the current
implementation uses filelog revs heavily. Other implementations may not have
filelog revs available.
The function throws an exception if the traversal is not possible via the
filelog, so the parent function can do things the slow way if necessary
(by walking the entire commit history).
Aside from the exception throwing, no logic is changed.
author | Durham Goode <durham@fb.com> |
---|---|
date | Thu, 30 May 2013 19:25:55 -0700 |
parents | 043abd6a91d1 |
children | 59cdd3a7e281 |
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 |
18746
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
18711
diff
changeset
|
10 from i18n import _ |
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 |
18746
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
18711
diff
changeset
|
12 import hg, scmutil, util, revlog, copies, error, bookmarks |
17887
0e2846b2482c
url: use open and not url.open for local files (issue3624)
Siddharth Agarwal <sid0@fb.com>
parents:
17875
diff
changeset
|
13 import patch, help, 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')), |
18267
5bb610f87d1d
clfilter: enforce hidden changeset globally
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18255
diff
changeset
|
52 ('', 'hidden', False, _('consider hidden changesets')), |
14297
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 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
55 dryrunopts = [('n', 'dry-run', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
56 _('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
|
57 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
58 remoteopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
59 ('e', 'ssh', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
60 _('specify ssh command to use'), _('CMD')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
61 ('', 'remotecmd', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
62 _('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
|
63 ('', 'insecure', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
64 _('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
|
65 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
66 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
67 walkopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
68 ('I', 'include', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
69 _('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
|
70 ('X', 'exclude', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
71 _('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
|
72 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
73 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
74 commitopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
75 ('m', 'message', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
76 _('use text as commit message'), _('TEXT')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
77 ('l', 'logfile', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
78 _('read commit message from file'), _('FILE')), |
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 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
81 commitopts2 = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
82 ('d', 'date', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
83 _('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
|
84 ('u', 'user', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
85 _('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
|
86 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
87 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
88 templateopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
89 ('', 'style', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
90 _('display using template map file'), _('STYLE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
91 ('', 'template', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
92 _('display with template'), _('TEMPLATE')), |
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 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
95 logopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
96 ('p', 'patch', None, _('show patch')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
97 ('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
|
98 ('l', 'limit', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
99 _('limit number of changes displayed'), _('NUM')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
100 ('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
|
101 ('', '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
|
102 ('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
|
103 ] + templateopts |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
104 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
105 diffopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
106 ('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
|
107 ('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
|
108 ('', '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
|
109 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
110 |
15528
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
111 diffwsopts = [ |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
112 ('w', 'ignore-all-space', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
113 _('ignore white space when comparing lines')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
114 ('b', 'ignore-space-change', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
115 _('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
|
116 ('B', 'ignore-blank-lines', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
117 _('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
|
118 ] |
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
119 |
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
120 diffopts2 = [ |
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
121 ('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
|
122 ('', '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
|
123 ] + diffwsopts + [ |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
124 ('U', 'unified', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
125 _('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
|
126 ('', '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
|
127 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
128 |
14852
cac04f2f475b
commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents:
14840
diff
changeset
|
129 mergetoolopts = [ |
cac04f2f475b
commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents:
14840
diff
changeset
|
130 ('t', 'tool', '', _('specify merge tool')), |
cac04f2f475b
commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents:
14840
diff
changeset
|
131 ] |
cac04f2f475b
commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents:
14840
diff
changeset
|
132 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
133 similarityopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
134 ('s', 'similarity', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
135 _('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
|
136 ] |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
137 |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
138 subrepoopts = [ |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
139 ('S', 'subrepos', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
140 _('recurse into subrepositories')) |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
141 ] |
2731
ad4155e757da
Kill ui.setconfig_remoteopts
Matt Mackall <mpm@selenic.com>
parents:
2718
diff
changeset
|
142 |
255 | 143 # Commands start here, listed alphabetically |
209 | 144 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
145 @command('^add', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
146 walkopts + subrepoopts + dryrunopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
147 _('[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
|
148 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
|
149 """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
|
150 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
151 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
|
152 repository. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
153 |
3829
531c116b2028
Add doc notes about revert and hg status vs diff
Matt Mackall <mpm@selenic.com>
parents:
3822
diff
changeset
|
154 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
|
155 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
|
156 |
7807
bd8f44638847
help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents:
7765
diff
changeset
|
157 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
|
158 |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
159 .. container:: verbose |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
160 |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
161 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
|
162 automatically by :hg:`add`:: |
10446
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
163 |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
164 $ ls |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
165 foo.c |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
166 $ hg status |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
167 ? foo.c |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
168 $ hg add |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
169 adding foo.c |
a565a2445eb5
commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents:
10445
diff
changeset
|
170 $ hg status |
10448
6e5a47398fc5
commands: correct example in add help text
Martin Geisler <mg@lazybytes.net>
parents:
10446
diff
changeset
|
171 A foo.c |
11507
35e2d453cf0d
commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11488
diff
changeset
|
172 |
35e2d453cf0d
commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11488
diff
changeset
|
173 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
|
174 """ |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
175 |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
176 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
|
177 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
|
178 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
|
179 return rejected and 1 or 0 |
213 | 180 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
181 @command('addremove', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
182 similarityopts + walkopts + dryrunopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
183 _('[OPTION]... [FILE]...')) |
766
b444a7e053f1
Get addremove to use new walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
764
diff
changeset
|
184 def addremove(ui, repo, *pats, **opts): |
3181
3637d5d17cbc
Documentation fixes for addremove.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3172
diff
changeset
|
185 """add all new files, delete all missing files |
2181
690da72b0b16
deprecate addremove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2179
diff
changeset
|
186 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
187 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
|
188 repository. |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
189 |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
190 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
|
191 ``.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
|
192 commit. |
2958
ff3ea21a981a
addremove: add -s/--similarity option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2956
diff
changeset
|
193 |
17266
4e35dea77e31
addremove: mention --similarity defaults to 100 (issue3430)
Patrick Mezard <patrick@mezard.eu>
parents:
17264
diff
changeset
|
194 Use the -s/--similarity option to detect renamed files. This |
9249
16f4cfc69e4f
commands: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
195 option takes a percentage between 0 (disabled) and 100 (files must |
17266
4e35dea77e31
addremove: mention --similarity defaults to 100 (issue3430)
Patrick Mezard <patrick@mezard.eu>
parents:
17264
diff
changeset
|
196 be identical) as its parameter. With a parameter greater than 0, |
4e35dea77e31
addremove: mention --similarity defaults to 100 (issue3430)
Patrick Mezard <patrick@mezard.eu>
parents:
17264
diff
changeset
|
197 this compares every removed file with every added file and records |
4e35dea77e31
addremove: mention --similarity defaults to 100 (issue3430)
Patrick Mezard <patrick@mezard.eu>
parents:
17264
diff
changeset
|
198 those similar enough as renames. Detecting renamed files this way |
11518
8d827f4a23f1
commands: mention "hg status -C" in addremove help
Arnab Bose <hirak99@gmail.com>
parents:
11515
diff
changeset
|
199 can be expensive. After using this option, :hg:`status -C` can be |
17266
4e35dea77e31
addremove: mention --similarity defaults to 100 (issue3430)
Patrick Mezard <patrick@mezard.eu>
parents:
17264
diff
changeset
|
200 used to check which files were identified as moved or renamed. If |
4e35dea77e31
addremove: mention --similarity defaults to 100 (issue3430)
Patrick Mezard <patrick@mezard.eu>
parents:
17264
diff
changeset
|
201 not specified, -s/--similarity defaults to 100 and only renames of |
4e35dea77e31
addremove: mention --similarity defaults to 100 (issue3430)
Patrick Mezard <patrick@mezard.eu>
parents:
17264
diff
changeset
|
202 identical files are detected. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
203 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
204 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
|
205 """ |
4966
8d982aef0be1
addremove: print meaningful error message if --similar not numeric
Bryan O'Sullivan <bos@serpentine.com>
parents:
4950
diff
changeset
|
206 try: |
11551
4484a7b661f2
commands: addremove does similarity 100 by default
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
11525
diff
changeset
|
207 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
|
208 except ValueError: |
8d982aef0be1
addremove: print meaningful error message if --similar not numeric
Bryan O'Sullivan <bos@serpentine.com>
parents:
4950
diff
changeset
|
209 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
|
210 if sim < 0 or sim > 100: |
ff3ea21a981a
addremove: add -s/--similarity option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2956
diff
changeset
|
211 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
|
212 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
|
213 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
214 @command('^annotate|blame', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
215 [('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
|
216 ('', 'follow', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
217 _('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
|
218 ('', '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
|
219 ('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
|
220 ('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
|
221 ('f', 'file', None, _('list the filename')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
222 ('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
|
223 ('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
|
224 ('c', 'changeset', None, _('list the changeset')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
225 ('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
|
226 ] + diffwsopts + walkopts, |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
227 _('[-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
|
228 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
|
229 """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
|
230 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
231 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
|
232 each line |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
233 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
234 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
|
235 by whom. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
236 |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
237 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
|
238 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
|
239 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
|
240 nor desirable. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
241 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
242 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
243 """ |
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
|
244 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
|
245 # --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
|
246 # 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
|
247 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
|
248 |
6134
7b937b26adf7
Make annotae/grep print short dates with -q/--quiet.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6133
diff
changeset
|
249 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
|
250 getdate = util.cachefunc(lambda x: datefunc(x[0].date())) |
1522 | 251 |
744 | 252 if not pats: |
8761
0289f384e1e5
Generally replace "file name" with "filename" in help and comments.
timeless <timeless@gmail.com>
parents:
8760
diff
changeset
|
253 raise util.Abort(_('at least one filename or pattern is required')) |
744 | 254 |
15631
e5fd140a4e69
annotate: show full changeset hash when invoked with --debug and -c
Ion Savin <comp_@gmx.net>
parents:
15623
diff
changeset
|
255 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
|
256 |
14358
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
257 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
|
258 ('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
|
259 ('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
|
260 ('date', ' ', getdate), |
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
261 ('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
|
262 ('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
|
263 ] |
2192001e4bb4
Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4849
diff
changeset
|
264 |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10270
diff
changeset
|
265 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
|
266 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
|
267 opts['number'] = True |
209 | 268 |
4857
2192001e4bb4
Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4849
diff
changeset
|
269 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
|
270 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
|
271 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
|
272 |
14358
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
273 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
|
274 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
|
275 |
13697
eaee75036725
annotate: catch nonexistent files using match.bad callback (issue1590)
Matt Mackall <mpm@selenic.com>
parents:
13694
diff
changeset
|
276 def bad(x, y): |
eaee75036725
annotate: catch nonexistent files using match.bad callback (issue1590)
Matt Mackall <mpm@selenic.com>
parents:
13694
diff
changeset
|
277 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
|
278 |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
279 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
|
280 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
|
281 m.bad = bad |
10369
98a0421b9e52
commands: annotate follows by default, separate -f/--file option
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10365
diff
changeset
|
282 follow = not opts.get('no_follow') |
15528
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
283 diffopts = patch.diffopts(ui, opts, section='annotate') |
6764 | 284 for abs in ctx.walk(m): |
285 fctx = ctx[abs] | |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
286 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
|
287 ui.write(_("%s: binary file\n") % ((pats and m.rel(abs)) or abs)) |
1016 | 288 continue |
289 | |
15528
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
290 lines = fctx.annotate(follow=follow, linenumber=linenumber, |
a84698badf0b
annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents:
15513
diff
changeset
|
291 diffopts=diffopts) |
209 | 292 pieces = [] |
293 | |
14358
bf93e78f2638
annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14331
diff
changeset
|
294 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
|
295 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
|
296 if l: |
11611
4f5a6df2af92
i18n: use encoding.colwidth() for correct column width
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
11518
diff
changeset
|
297 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
|
298 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
|
299 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
|
300 for x, w in sized]) |
209 | 301 |
771 | 302 if pieces: |
303 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
|
304 ui.write("%s: %s" % ("".join(p), l[1])) |
209 | 305 |
15829
2c480532f36e
annotate: append newline after non newline-terminated file listings
Ion Savin <ion.savin@tora.com>
parents:
15780
diff
changeset
|
306 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
|
307 ui.write('\n') |
2c480532f36e
annotate: append newline after non newline-terminated file listings
Ion Savin <ion.savin@tora.com>
parents:
15780
diff
changeset
|
308 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
309 @command('archive', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
310 [('', '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
|
311 ('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
|
312 _('PREFIX')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
313 ('r', 'rev', '', _('revision to distribute'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
314 ('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
|
315 ] + subrepoopts + walkopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
316 _('[OPTION]... DEST')) |
2112
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
317 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
|
318 '''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
|
319 |
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
320 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
|
321 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
|
322 |
10650
9ea7238ad935
archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents:
10649
diff
changeset
|
323 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
|
324 extension (or override using -t/--type). |
9ea7238ad935
archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents:
10649
diff
changeset
|
325 |
15109
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
326 .. container:: verbose |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
327 |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
328 Examples: |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
329 |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
330 - create a zip file containing the 1.0 release:: |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
331 |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
332 hg archive -r 1.0 project-1.0.zip |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
333 |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
334 - create a tarball excluding .hg files:: |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
335 |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
336 hg archive project.tar.gz -X ".hg*" |
f7993be2c32f
archive: add help examples
Matt Mackall <mpm@selenic.com>
parents:
15105
diff
changeset
|
337 |
10650
9ea7238ad935
archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents:
10649
diff
changeset
|
338 Valid types are: |
9892
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
339 |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
340 :``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
|
341 :``tar``: tar archive, uncompressed |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
342 :``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
|
343 :``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
|
344 :``uzip``: zip archive, uncompressed |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
345 :``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
|
346 |
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
347 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
|
348 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
|
349 |
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
350 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
|
351 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
|
352 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
|
353 removed. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
354 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
355 Returns 0 on success. |
2112
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
356 ''' |
2b03c6733efa
add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2092
diff
changeset
|
357 |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
358 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
|
359 if not ctx: |
7528
eadcc075967e
archive: fix bogus error message with no working directory
Matt Mackall <mpm@selenic.com>
parents:
7527
diff
changeset
|
360 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
|
361 node = ctx.node() |
14290
86e70956da4f
cmdutil: make_filename -> makefilename
Matt Mackall <mpm@selenic.com>
parents:
14289
diff
changeset
|
362 dest = cmdutil.makefilename(repo, dest, node) |
15381
c519cd8f0169
backout dbdb777502dc (issue3077) (issue3071)
Matt Mackall <mpm@selenic.com>
parents:
15373
diff
changeset
|
363 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
|
364 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
|
365 |
11557
57bdc2239535
archival: move commands.archive.guess_type to archival.guesskind
Martin Geisler <mg@lazybytes.net>
parents:
11551
diff
changeset
|
366 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
|
367 prefix = opts.get('prefix') |
10650
9ea7238ad935
archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents:
10649
diff
changeset
|
368 |
2476
0f7e4a39d9af
archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2473
diff
changeset
|
369 if dest == '-': |
0f7e4a39d9af
archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2473
diff
changeset
|
370 if kind == 'files': |
0f7e4a39d9af
archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2473
diff
changeset
|
371 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
|
372 dest = cmdutil.makefileobj(repo, dest) |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10270
diff
changeset
|
373 if not prefix: |
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10270
diff
changeset
|
374 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
|
375 |
14290
86e70956da4f
cmdutil: make_filename -> makefilename
Matt Mackall <mpm@selenic.com>
parents:
14289
diff
changeset
|
376 prefix = cmdutil.makefilename(repo, prefix, node) |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
377 matchfn = scmutil.match(ctx, [], opts) |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
378 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
|
379 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
|
380 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
381 @command('backout', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
382 [('', '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
|
383 ('', 'parent', '', |
1209de02034e
backout: deprecate/hide support for backing out merges
Matt Mackall <mpm@selenic.com>
parents:
15210
diff
changeset
|
384 _('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
|
385 ('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
|
386 ] + mergetoolopts + walkopts + commitopts + commitopts2, |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
387 _('[OPTION]... [-r] REV')) |
4450
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
388 def backout(ui, repo, node=None, rev=None, **opts): |
2158
ec96c4518236
add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2153
diff
changeset
|
389 '''reverse effect of earlier changeset |
ec96c4518236
add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2153
diff
changeset
|
390 |
13340
02aa06a021a0
backout: make help more explicit about what backout does
Jonathan Nieder <jrnieder@gmail.com>
parents:
13328
diff
changeset
|
391 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
|
392 current working directory. |
02aa06a021a0
backout: make help more explicit about what backout does
Jonathan Nieder <jrnieder@gmail.com>
parents:
13328
diff
changeset
|
393 |
13473
bbdd858e3229
backout: clarify which changesets are new in help text
Jonathan Nieder <jrnieder@gmail.com>
parents:
13472
diff
changeset
|
394 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
|
395 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
|
396 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
|
397 |
15210
9d8115c5fbda
backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents:
15209
diff
changeset
|
398 .. note:: |
9d8115c5fbda
backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents:
15209
diff
changeset
|
399 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
|
400 incorrect merge. |
9d8115c5fbda
backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents:
15209
diff
changeset
|
401 |
15209
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
402 .. container:: verbose |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
403 |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
404 By default, the pending changeset will have one parent, |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
405 maintaining a linear history. With --merge, the pending |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
406 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
|
407 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
|
408 |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
409 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
|
410 to specifying --merge followed by :hg:`update --clean .` to |
10f85a735601
backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents:
15203
diff
changeset
|
411 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
|
412 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
|
413 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
414 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
|
415 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
416 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
|
417 ''' |
4450
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
418 if rev and node: |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
419 raise util.Abort(_("please specify just one revision")) |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
420 |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
421 if not rev: |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
422 rev = node |
2158
ec96c4518236
add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2153
diff
changeset
|
423 |
4726
f6e961c0155b
Fix and test 'hg backout' without or with too many revisions.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4718
diff
changeset
|
424 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
|
425 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
|
426 |
6139
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6134
diff
changeset
|
427 date = opts.get('date') |
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6134
diff
changeset
|
428 if date: |
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6134
diff
changeset
|
429 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
|
430 |
14289
d68ddccf276b
cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents:
14286
diff
changeset
|
431 cmdutil.bailifchanged(repo) |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
432 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
|
433 |
2158
ec96c4518236
add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2153
diff
changeset
|
434 op1, op2 = repo.dirstate.parents() |
5568
de620356064f
backout: disallow across branches (issue655)
Matt Mackall <mpm@selenic.com>
parents:
5542
diff
changeset
|
435 a = repo.changelog.ancestor(op1, node) |
de620356064f
backout: disallow across branches (issue655)
Matt Mackall <mpm@selenic.com>
parents:
5542
diff
changeset
|
436 if a != node: |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
437 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
|
438 |
2614
8ba1c31f6864
backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2613
diff
changeset
|
439 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
|
440 if p1 == nullid: |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
441 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
|
442 if p2 != nullid: |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
443 if not opts.get('parent'): |
15211
1209de02034e
backout: deprecate/hide support for backing out merges
Matt Mackall <mpm@selenic.com>
parents:
15210
diff
changeset
|
444 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
|
445 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
|
446 if p not in (p1, p2): |
3679
2956948b81f3
fix warnings generated by pygettext.py.
Marcos Chaves <marcos.nospam@gmail.com>
parents:
3673
diff
changeset
|
447 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
|
448 (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
|
449 parent = p |
8ba1c31f6864
backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2613
diff
changeset
|
450 else: |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
451 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
|
452 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
|
453 parent = p1 |
5568
de620356064f
backout: disallow across branches (issue655)
Matt Mackall <mpm@selenic.com>
parents:
5542
diff
changeset
|
454 |
6423
fb374b1b3911
backout: reverse changeset belongs on current branch
Matt Mackall <mpm@selenic.com>
parents:
6385
diff
changeset
|
455 # 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
|
456 wlock = repo.wlock() |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
457 try: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
458 branch = repo.dirstate.branch() |
18689
12721a20ed30
backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents:
18688
diff
changeset
|
459 bheads = repo.branchheads(branch) |
16470
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
460 hg.clean(repo, node, show_stats=False) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
461 repo.dirstate.setbranch(branch) |
18685
fafdff7e9c43
backout: use cmdutil.revert directly instead of commands.revert
Kevin Bullock <kbullock@ringworld.org>
parents:
18658
diff
changeset
|
462 rctx = scmutil.revsingle(repo, hex(parent)) |
fafdff7e9c43
backout: use cmdutil.revert directly instead of commands.revert
Kevin Bullock <kbullock@ringworld.org>
parents:
18658
diff
changeset
|
463 cmdutil.revert(ui, repo, rctx, repo.dirstate.parents()) |
16470
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
464 if not opts.get('merge') and op1 != node: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
465 try: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
466 ui.setconfig('ui', 'forcemerge', opts.get('tool', '')) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
467 return hg.update(repo, op1) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
468 finally: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
469 ui.setconfig('ui', 'forcemerge', '') |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
470 |
18689
12721a20ed30
backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents:
18688
diff
changeset
|
471 e = cmdutil.commiteditor |
18687
1d183b33f007
backout: remove unnecessary dict copy
Kevin Bullock <kbullock@ringworld.org>
parents:
18686
diff
changeset
|
472 if not opts['message'] and not opts['logfile']: |
16470
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
473 # we don't translate commit messages |
18687
1d183b33f007
backout: remove unnecessary dict copy
Kevin Bullock <kbullock@ringworld.org>
parents:
18686
diff
changeset
|
474 opts['message'] = "Backed out changeset %s" % short(node) |
18689
12721a20ed30
backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents:
18688
diff
changeset
|
475 e = cmdutil.commitforceeditor |
12721a20ed30
backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents:
18688
diff
changeset
|
476 |
12721a20ed30
backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents:
18688
diff
changeset
|
477 def commitfunc(ui, repo, message, match, opts): |
12721a20ed30
backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents:
18688
diff
changeset
|
478 return repo.commit(message, opts.get('user'), opts.get('date'), |
12721a20ed30
backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents:
18688
diff
changeset
|
479 match, editor=e) |
12721a20ed30
backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents:
18688
diff
changeset
|
480 newnode = cmdutil.commit(ui, repo, commitfunc, [], opts) |
12721a20ed30
backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents:
18688
diff
changeset
|
481 cmdutil.commitstatus(repo, newnode, branch, bheads) |
18687
1d183b33f007
backout: remove unnecessary dict copy
Kevin Bullock <kbullock@ringworld.org>
parents:
18686
diff
changeset
|
482 |
16470
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
483 def nice(node): |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
484 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
|
485 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
|
486 (nice(repo.changelog.tip()), nice(node))) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
487 if opts.get('merge') and op1 != node: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
488 hg.clean(repo, op1, show_stats=False) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
489 ui.status(_('merging with changeset %s\n') |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
490 % nice(repo.changelog.tip())) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
491 try: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
492 ui.setconfig('ui', 'forcemerge', opts.get('tool', '')) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
493 return hg.merge(repo, hex(repo.changelog.tip())) |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
494 finally: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
495 ui.setconfig('ui', 'forcemerge', '') |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
496 finally: |
b2e1da5db6df
commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents:
16458
diff
changeset
|
497 wlock.release() |
12727
52971985be14
backout: provide linear backout as a default (without --merge option)
Gilles Moris <gilles.moris@free.fr>
parents:
12726
diff
changeset
|
498 return 0 |
2158
ec96c4518236
add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2153
diff
changeset
|
499 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
500 @command('bisect', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
501 [('r', 'reset', False, _('reset bisect state')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
502 ('g', 'good', False, _('mark changeset good')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
503 ('b', 'bad', False, _('mark changeset bad')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
504 ('s', 'skip', False, _('skip testing changeset')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
505 ('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
|
506 ('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
|
507 ('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
|
508 _("[-gbsr] [-U] [-c CMD] [REV]")) |
7227
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
509 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
|
510 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
|
511 noupdate=None): |
5775
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
512 """subdivision search of changesets |
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
513 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
514 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
|
515 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
|
516 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
|
517 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
|
518 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
|
519 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
|
520 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
|
521 or announce that it has found the bad revision. |
7184
380fda3eed13
clean up trailing spaces
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7037
diff
changeset
|
522 |
6928
1a4c66d741a2
bisect: expand help text to explain REV argument and --noupdate
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6858
diff
changeset
|
523 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
|
524 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
|
525 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
526 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
|
527 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
|
528 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
|
529 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
|
530 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
|
531 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
|
532 is bad. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
533 |
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
|
534 .. 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
|
535 |
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 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
|
537 |
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 - 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
|
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 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
|
541 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
|
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 - 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
|
544 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 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
|
547 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
|
548 |
17424
e7cfe3587ea4
fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents:
17393
diff
changeset
|
549 - mark the current revision, or a known revision, to be skipped (e.g. if |
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
|
550 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
|
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 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
|
553 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
|
554 |
17969
6c67deb3d373
bisect: add example for limiting bisection to specified directories
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
17956
diff
changeset
|
555 - skip all revisions that do not touch directories ``foo`` or ``bar`` |
6c67deb3d373
bisect: add example for limiting bisection to specified directories
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
17956
diff
changeset
|
556 |
6c67deb3d373
bisect: add example for limiting bisection to specified directories
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
17956
diff
changeset
|
557 hg bisect --skip '!( file("path:foo") & file("path:bar") )' |
6c67deb3d373
bisect: add example for limiting bisection to specified directories
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
17956
diff
changeset
|
558 |
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
|
559 - 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
|
560 |
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 --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
|
562 |
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 - 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
|
564 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
|
565 |
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 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
|
567 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
|
568 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
|
569 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
|
570 |
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
|
571 - 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
|
572 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
|
573 |
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 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
|
575 |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
576 - 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
|
577 if running with -U/--noupdate):: |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
578 |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
579 hg log -r "bisect(current)" |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
580 |
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
|
581 - 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
|
582 |
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
|
583 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
|
584 |
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
|
585 - 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
|
586 |
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
|
587 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
|
588 |
15147
395ca8cd2669
revset.bisect: add 'ignored' set to the bisect keyword
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
15145
diff
changeset
|
589 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
|
590 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
591 Returns 0 on success. |
5775
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
592 """ |
13601
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
593 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
|
594 # 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
|
595 # 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
|
596 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
|
597 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
|
598 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
|
599 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
|
600 if num == 1: |
14157 | 601 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
|
602 return None |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
603 |
7227
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
604 def print_result(nodes, good): |
5775
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
605 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
|
606 if len(nodes) == 1: |
8f256bf98219
Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents:
6842
diff
changeset
|
607 # 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
|
608 if good: |
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
609 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
|
610 else: |
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
611 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
|
612 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
|
613 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
|
614 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
|
615 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
|
616 ' 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
|
617 '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
|
618 % extendnode) |
6858
8f256bf98219
Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents:
6842
diff
changeset
|
619 else: |
8f256bf98219
Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents:
6842
diff
changeset
|
620 # multiple possible revisions |
8088
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
621 if good: |
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
622 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
|
623 "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
|
624 else: |
bdeb380a10de
commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents:
8042
diff
changeset
|
625 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
|
626 "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
|
627 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
|
628 displayer.show(repo[n]) |
10152
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
629 displayer.close() |
7227
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
630 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
631 def check_state(state, interactive=True): |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
632 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
|
633 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
|
634 return |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
635 if not state['good']: |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
636 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
|
637 else: |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
638 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
|
639 return True |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
640 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
641 # backward compatibility |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
642 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
|
643 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
|
644 cmd, rev, extra = rev, extra, None |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
645 if cmd == "good": |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
646 good = True |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
647 elif cmd == "bad": |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
648 bad = True |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
649 else: |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
650 reset = True |
13601
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
651 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
|
652 raise util.Abort(_('incompatible arguments')) |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
653 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
654 if reset: |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
655 p = repo.join("bisect.state") |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
656 if os.path.exists(p): |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
657 os.unlink(p) |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
658 return |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
659 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
660 state = hbisect.load_state(repo) |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
661 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
662 if command: |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
663 changesets = 1 |
7590
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
664 try: |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
665 node = state['current'][0] |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
666 except LookupError: |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
667 if noupdate: |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
668 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
|
669 'start a new bisect to fix')) |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
670 node, p2 = repo.dirstate.parents() |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
671 if p2 != nullid: |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
672 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
|
673 try: |
7590
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
674 while changesets: |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
675 # update state |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
676 state['current'] = [node] |
16593
e462313ef1bd
bisect: save current state before running a command
Bryan O'Sullivan <bryano@fb.com>
parents:
16591
diff
changeset
|
677 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
|
678 status = util.system(command, |
1388cc711ea7
bisect: set HG_NODE when runing a command
Bryan O'Sullivan <bryano@fb.com>
parents:
16647
diff
changeset
|
679 environ={'HG_NODE': hex(node)}, |
1388cc711ea7
bisect: set HG_NODE when runing a command
Bryan O'Sullivan <bryano@fb.com>
parents:
16647
diff
changeset
|
680 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
|
681 if status == 125: |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
682 transition = "skip" |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
683 elif status == 0: |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
684 transition = "good" |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
685 # 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
|
686 elif status == 127: |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
687 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
|
688 elif status < 0: |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
689 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
|
690 else: |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
691 transition = "bad" |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
692 ctx = scmutil.revsingle(repo, rev, node) |
12925
6eab8f0df2ca
commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents:
12918
diff
changeset
|
693 rev = None # clear for future iterations |
8805
2726a6df11e9
bisect: improve --command output
Patrick Mezard <pmezard@gmail.com>
parents:
8802
diff
changeset
|
694 state[transition].append(ctx.node()) |
16936
ee7dd2307031
bisect: lowercase status message
Martin Geisler <mg@aragost.com>
parents:
16935
diff
changeset
|
695 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
|
696 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
|
697 # bisect |
e5703ec08e64
bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7570
diff
changeset
|
698 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
|
699 # update to next check |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
700 node = nodes[0] |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
701 if not noupdate: |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
702 cmdutil.bailifchanged(repo) |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
703 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
|
704 finally: |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
705 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
|
706 hbisect.save_state(repo, state) |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
707 print_result(nodes, good) |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
708 return |
7227
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
709 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
710 # update state |
12177
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
711 |
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
712 if rev: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
713 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
|
714 else: |
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
715 nodes = [repo.lookup('.')] |
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
716 |
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 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
|
718 if good: |
12177
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
719 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
|
720 elif bad: |
12177
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
721 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
|
722 elif skip: |
12177
80399b5b5f13
bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
12173
diff
changeset
|
723 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
|
724 hbisect.save_state(repo, state) |
7227
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
725 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
726 if not check_state(state): |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
727 return |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
728 |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
729 # actually bisect |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
730 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
|
731 if extend: |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
732 if not changesets: |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
733 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
|
734 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
|
735 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
|
736 % (extendnode.rev(), extendnode))) |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
737 state['current'] = [extendnode.node()] |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
738 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
|
739 if noupdate: |
0388e3e36693
bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13591
diff
changeset
|
740 return |
14289
d68ddccf276b
cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents:
14286
diff
changeset
|
741 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
|
742 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
|
743 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
|
744 |
7227
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
745 if changesets == 0: |
e1afb50ec2aa
bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7213
diff
changeset
|
746 print_result(nodes, good) |
6858
8f256bf98219
Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents:
6842
diff
changeset
|
747 else: |
8f256bf98219
Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents:
6842
diff
changeset
|
748 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
|
749 node = nodes[0] |
5775
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
750 # compute the approximate number of remaining tests |
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
751 tests, size = 0, 2 |
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
752 while size <= changesets: |
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
753 tests, size = tests + 1, size * 2 |
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
754 rev = repo.changelog.rev(node) |
9012
ada93c6bf554
bisect: fix format specifiers for integers
Cédric Duval <cedricduval@free.fr>
parents:
8995
diff
changeset
|
755 ui.write(_("Testing changeset %d:%s " |
ada93c6bf554
bisect: fix format specifiers for integers
Cédric Duval <cedricduval@free.fr>
parents:
8995
diff
changeset
|
756 "(%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
|
757 % (rev, short(node), changesets, tests)) |
16647
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
758 state['current'] = [node] |
14913fcb30c6
bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents:
16642
diff
changeset
|
759 hbisect.save_state(repo, state) |
5775
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
760 if not noupdate: |
14289
d68ddccf276b
cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents:
14286
diff
changeset
|
761 cmdutil.bailifchanged(repo) |
5775
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
762 return hg.clean(repo, node) |
2dd202a6e15b
bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents:
5764
diff
changeset
|
763 |
18075
2c1fc483efa4
commands: 'hg bookmark NAME' should work even with ui.strict=True
Kevin Bullock <kbullock@ringworld.org>
parents:
18068
diff
changeset
|
764 @command('bookmarks|bookmark', |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
765 [('f', 'force', False, _('force')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
766 ('r', 'rev', '', _('revision'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
767 ('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
|
768 ('m', 'rename', '', _('rename a given bookmark'), _('NAME')), |
15959
db33555eafea
bookmarks: correct correction of -i
Matt Mackall <mpm@selenic.com>
parents:
15958
diff
changeset
|
769 ('i', 'inactive', False, _('mark a bookmark inactive'))], |
19147
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
770 _('hg bookmarks [OPTIONS]... [NAME]...')) |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
771 def bookmark(ui, repo, *names, **opts): |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
772 '''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
|
773 |
15620
73faa2664909
bookmarks: clarify help for use of merge and update
Kevin Bullock <kbullock@ringworld.org>
parents:
15619
diff
changeset
|
774 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
|
775 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
|
776 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
|
777 :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
|
778 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
779 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
|
780 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
|
781 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
|
782 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
|
783 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
784 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
|
785 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
|
786 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
|
787 the bookmarks extension must be enabled. |
15939
f57f891eb88e
bookmarks: clarify help for -i/--inactive
Kevin Bullock <kbullock@ringworld.org>
parents:
15935
diff
changeset
|
788 |
18474
e031e10cdc06
help: document '@' bookmark in 'help bookmarks' and 'help clone'
Kevin Bullock <kbullock@ringworld.org>
parents:
18471
diff
changeset
|
789 If you set a bookmark called '@', new clones of the repository will |
e031e10cdc06
help: document '@' bookmark in 'help bookmarks' and 'help clone'
Kevin Bullock <kbullock@ringworld.org>
parents:
18471
diff
changeset
|
790 have that revision checked out (and the bookmark made active) by |
e031e10cdc06
help: document '@' bookmark in 'help bookmarks' and 'help clone'
Kevin Bullock <kbullock@ringworld.org>
parents:
18471
diff
changeset
|
791 default. |
e031e10cdc06
help: document '@' bookmark in 'help bookmarks' and 'help clone'
Kevin Bullock <kbullock@ringworld.org>
parents:
18471
diff
changeset
|
792 |
15939
f57f891eb88e
bookmarks: clarify help for -i/--inactive
Kevin Bullock <kbullock@ringworld.org>
parents:
15935
diff
changeset
|
793 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
|
794 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
|
795 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
|
796 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
|
797 ''' |
19147
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
798 force = opts.get('force') |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
799 rev = opts.get('rev') |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
800 delete = opts.get('delete') |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
801 rename = opts.get('rename') |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
802 inactive = opts.get('inactive') |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
803 |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
804 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
|
805 marks = repo._bookmarks |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
806 cur = repo.changectx('.').node() |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
807 |
17789
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
808 def checkformat(mark): |
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
809 mark = mark.strip() |
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
810 if not mark: |
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
811 raise util.Abort(_("bookmark names cannot consist entirely of " |
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
812 "whitespace")) |
17821
361ab1e2086f
scmutil: add bad character checking to checknewlabel
Kevin Bullock <kbullock@ringworld.org>
parents:
17818
diff
changeset
|
813 scmutil.checknewlabel(repo, mark, 'bookmark') |
17789
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
814 return mark |
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
815 |
18773
56dd55da2f7d
bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents:
18746
diff
changeset
|
816 def checkconflict(repo, mark, force=False, target=None): |
17789
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
817 if mark in marks and not force: |
18773
56dd55da2f7d
bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents:
18746
diff
changeset
|
818 if target: |
18781
99b78269a2ec
bookmarks: allow (re-)activating a bookmark on the current changeset
Kevin Bullock <kbullock@ringworld.org>
parents:
18773
diff
changeset
|
819 if marks[mark] == target and target == cur: |
99b78269a2ec
bookmarks: allow (re-)activating a bookmark on the current changeset
Kevin Bullock <kbullock@ringworld.org>
parents:
18773
diff
changeset
|
820 # re-activating a bookmark |
99b78269a2ec
bookmarks: allow (re-)activating a bookmark on the current changeset
Kevin Bullock <kbullock@ringworld.org>
parents:
18773
diff
changeset
|
821 return |
18773
56dd55da2f7d
bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents:
18746
diff
changeset
|
822 anc = repo.changelog.ancestors([repo[target].rev()]) |
56dd55da2f7d
bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents:
18746
diff
changeset
|
823 bmctx = repo[marks[mark]] |
19109
26c51e87e807
bookmarks: resolve divergent bookmarks when fowarding bookmark to descendant
Sean Farley <sean.michael.farley@gmail.com>
parents:
19026
diff
changeset
|
824 divs = [repo[b].node() for b in marks |
26c51e87e807
bookmarks: resolve divergent bookmarks when fowarding bookmark to descendant
Sean Farley <sean.michael.farley@gmail.com>
parents:
19026
diff
changeset
|
825 if b.split('@', 1)[0] == mark.split('@', 1)[0]] |
19111
6439d78e14fb
bookmarks: resolve divergent bookmark when moving across a branch
Sean Farley <sean.michael.farley@gmail.com>
parents:
19109
diff
changeset
|
826 |
6439d78e14fb
bookmarks: resolve divergent bookmark when moving across a branch
Sean Farley <sean.michael.farley@gmail.com>
parents:
19109
diff
changeset
|
827 # allow resolving a single divergent bookmark even if moving |
6439d78e14fb
bookmarks: resolve divergent bookmark when moving across a branch
Sean Farley <sean.michael.farley@gmail.com>
parents:
19109
diff
changeset
|
828 # the bookmark across branches when a revision is specified |
6439d78e14fb
bookmarks: resolve divergent bookmark when moving across a branch
Sean Farley <sean.michael.farley@gmail.com>
parents:
19109
diff
changeset
|
829 # that contains a divergent bookmark |
6439d78e14fb
bookmarks: resolve divergent bookmark when moving across a branch
Sean Farley <sean.michael.farley@gmail.com>
parents:
19109
diff
changeset
|
830 if bmctx.rev() not in anc and target in divs: |
6439d78e14fb
bookmarks: resolve divergent bookmark when moving across a branch
Sean Farley <sean.michael.farley@gmail.com>
parents:
19109
diff
changeset
|
831 bookmarks.deletedivergent(repo, [target], mark) |
6439d78e14fb
bookmarks: resolve divergent bookmark when moving across a branch
Sean Farley <sean.michael.farley@gmail.com>
parents:
19109
diff
changeset
|
832 return |
6439d78e14fb
bookmarks: resolve divergent bookmark when moving across a branch
Sean Farley <sean.michael.farley@gmail.com>
parents:
19109
diff
changeset
|
833 |
19109
26c51e87e807
bookmarks: resolve divergent bookmarks when fowarding bookmark to descendant
Sean Farley <sean.michael.farley@gmail.com>
parents:
19026
diff
changeset
|
834 deletefrom = [b for b in divs |
26c51e87e807
bookmarks: resolve divergent bookmarks when fowarding bookmark to descendant
Sean Farley <sean.michael.farley@gmail.com>
parents:
19026
diff
changeset
|
835 if repo[b].rev() in anc or b == target] |
26c51e87e807
bookmarks: resolve divergent bookmarks when fowarding bookmark to descendant
Sean Farley <sean.michael.farley@gmail.com>
parents:
19026
diff
changeset
|
836 bookmarks.deletedivergent(repo, deletefrom, mark) |
18773
56dd55da2f7d
bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents:
18746
diff
changeset
|
837 if bmctx.rev() in anc: |
56dd55da2f7d
bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents:
18746
diff
changeset
|
838 ui.status(_("moving bookmark '%s' forward from %s\n") % |
56dd55da2f7d
bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents:
18746
diff
changeset
|
839 (mark, short(bmctx.node()))) |
56dd55da2f7d
bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents:
18746
diff
changeset
|
840 return |
17789
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
841 raise util.Abort(_("bookmark '%s' already exists " |
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
842 "(use -f to force)") % mark) |
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
843 if ((mark in repo.branchmap() or mark == repo.dirstate.branch()) |
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
844 and not force): |
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
845 raise util.Abort( |
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
846 _("a bookmark cannot have the name of an existing branch")) |
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
847 |
17790
0291e122fb05
bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents:
17789
diff
changeset
|
848 if delete and rename: |
0291e122fb05
bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents:
17789
diff
changeset
|
849 raise util.Abort(_("--delete and --rename are incompatible")) |
0291e122fb05
bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents:
17789
diff
changeset
|
850 if delete and rev: |
0291e122fb05
bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents:
17789
diff
changeset
|
851 raise util.Abort(_("--rev is incompatible with --delete")) |
0291e122fb05
bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents:
17789
diff
changeset
|
852 if rename and rev: |
0291e122fb05
bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents:
17789
diff
changeset
|
853 raise util.Abort(_("--rev is incompatible with --rename")) |
19147
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
854 if not names and (delete or rev): |
17791
1e30c1bbd8c0
bookmarks: simplify code
Kevin Bullock <kbullock@ringworld.org>
parents:
17790
diff
changeset
|
855 raise util.Abort(_("bookmark name required")) |
17790
0291e122fb05
bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents:
17789
diff
changeset
|
856 |
15490
875bb46e35ea
bookmark: same order for options and code
Kevin Bullock <kbullock@ringworld.org>
parents:
15474
diff
changeset
|
857 if delete: |
19147
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
858 for mark in names: |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
859 if mark not in marks: |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
860 raise util.Abort(_("bookmark '%s' does not exist") % mark) |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
861 if mark == repo._bookmarkcurrent: |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
862 bookmarks.setcurrent(repo, None) |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
863 del marks[mark] |
17922
7f5dab94e48c
bookmarks: introduce a bmstore to manage bookmark persistence
Augie Fackler <raf@durin42.com>
parents:
17912
diff
changeset
|
864 marks.write() |
17791
1e30c1bbd8c0
bookmarks: simplify code
Kevin Bullock <kbullock@ringworld.org>
parents:
17790
diff
changeset
|
865 |
1e30c1bbd8c0
bookmarks: simplify code
Kevin Bullock <kbullock@ringworld.org>
parents:
17790
diff
changeset
|
866 elif rename: |
19147
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
867 if not names: |
17789
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
868 raise util.Abort(_("new bookmark name required")) |
19147
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
869 elif len(names) > 1: |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
870 raise util.Abort(_("only one new bookmark name allowed")) |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
871 mark = checkformat(names[0]) |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
872 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
|
873 raise util.Abort(_("bookmark '%s' does not exist") % rename) |
17789
4cfd02c2df9a
bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents:
17788
diff
changeset
|
874 checkconflict(repo, mark, force) |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
875 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
|
876 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
|
877 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
|
878 del marks[rename] |
17922
7f5dab94e48c
bookmarks: introduce a bmstore to manage bookmark persistence
Augie Fackler <raf@durin42.com>
parents:
17912
diff
changeset
|
879 marks.write() |
17791
1e30c1bbd8c0
bookmarks: simplify code
Kevin Bullock <kbullock@ringworld.org>
parents:
17790
diff
changeset
|
880 |
19147
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
881 elif names: |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
882 newact = None |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
883 for mark in names: |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
884 mark = checkformat(mark) |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
885 if newact is None: |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
886 newact = mark |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
887 if inactive and mark == repo._bookmarkcurrent: |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
888 bookmarks.setcurrent(repo, None) |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
889 return |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
890 tgt = cur |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
891 if rev: |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
892 tgt = scmutil.revsingle(repo, rev).node() |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
893 checkconflict(repo, mark, force, tgt) |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
894 marks[mark] = tgt |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
895 if not inactive and cur == marks[newact] and not rev: |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
896 bookmarks.setcurrent(repo, newact) |
5b1835485442
bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents:
19112
diff
changeset
|
897 elif cur != tgt and newact == repo._bookmarkcurrent: |
18782
22f87dc77604
bookmarks: moving the active bookmark deactivates it
Kevin Bullock <kbullock@ringworld.org>
parents:
18781
diff
changeset
|
898 bookmarks.setcurrent(repo, None) |
17922
7f5dab94e48c
bookmarks: introduce a bmstore to manage bookmark persistence
Augie Fackler <raf@durin42.com>
parents:
17912
diff
changeset
|
899 marks.write() |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
900 |
17822
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
901 # Same message whether trying to deactivate the current bookmark (-i |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
902 # with no NAME) or listing bookmarks |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
903 elif len(marks) == 0: |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
904 ui.status(_("no bookmarks set\n")) |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
905 |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
906 elif inactive: |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
907 if not repo._bookmarkcurrent: |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
908 ui.status(_("no active bookmark\n")) |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
909 else: |
17822
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
910 bookmarks.setcurrent(repo, None) |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
911 |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
912 else: # show bookmarks |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
913 for bmark, n in sorted(marks.iteritems()): |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
914 current = repo._bookmarkcurrent |
18479
0efd5686f80c
bookmarks: show active bookmark even if not at working dir
Kevin Bullock <kbullock@ringworld.org>
parents:
18476
diff
changeset
|
915 if bmark == current: |
17822
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
916 prefix, label = '*', 'bookmarks.current' |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
917 else: |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
918 prefix, label = ' ', '' |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
919 |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
920 if ui.quiet: |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
921 ui.write("%s\n" % bmark, label=label) |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
922 else: |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
923 ui.write(" %s %-25s %d:%s\n" % ( |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
924 prefix, bmark, repo.changelog.rev(n), hexfn(n)), |
c284085d17a8
bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents:
17821
diff
changeset
|
925 label=label) |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
926 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
927 @command('branch', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
928 [('f', 'force', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
929 _('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
|
930 ('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
|
931 _('[-fC] [NAME]')) |
4202
b2873c587b1a
branch: require --force to shadow existing branches
Brendan Cully <brendan@kublai.com>
parents:
4200
diff
changeset
|
932 def branch(ui, repo, label=None, **opts): |
3502
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
933 """set or show the current branch name |
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
934 |
15610
09b200396384
branch: move note about permanence to the top, add 'global'
Matt Mackall <mpm@selenic.com>
parents:
15511
diff
changeset
|
935 .. note:: |
09b200396384
branch: move note about permanence to the top, add 'global'
Matt Mackall <mpm@selenic.com>
parents:
15511
diff
changeset
|
936 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
|
937 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
|
938 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
|
939 |
4601
e69da61e467e
Notify the user that hg branch does not create a branch until commit
Brendan Cully <brendan@kublai.com>
parents:
4593
diff
changeset
|
940 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
|
941 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
|
942 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
|
943 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
|
944 branch. |
4202
b2873c587b1a
branch: require --force to shadow existing branches
Brendan Cully <brendan@kublai.com>
parents:
4200
diff
changeset
|
945 |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
946 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
|
947 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
|
948 |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
949 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
|
950 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
|
951 change. |
7006
92d44ec32430
branch: added more support for named branches
Sune Foldager <cryo@cyanite.org>
parents:
7003
diff
changeset
|
952 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
953 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
|
954 :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
|
955 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
956 Returns 0 on success. |
3502
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
957 """ |
19180
12dbdd348bb0
branch: strip whitespace before testing known branch name
Yuya Nishihara <yuya@tcha.org>
parents:
19112
diff
changeset
|
958 if label: |
12dbdd348bb0
branch: strip whitespace before testing known branch name
Yuya Nishihara <yuya@tcha.org>
parents:
19112
diff
changeset
|
959 label = label.strip() |
12dbdd348bb0
branch: strip whitespace before testing known branch name
Yuya Nishihara <yuya@tcha.org>
parents:
19112
diff
changeset
|
960 |
16471
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
961 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
|
962 ui.write("%s\n" % repo.dirstate.branch()) |
16471
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
963 return |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
964 |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
965 wlock = repo.wlock() |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
966 try: |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
967 if opts.get('clean'): |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
968 label = repo[None].p1().branch() |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
969 repo.dirstate.setbranch(label) |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
970 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
|
971 elif label: |
16719
e7bf09acd410
localrepo: add branchtip() method for faster single-branch lookups
Brodie Rao <brodie@sf.io>
parents:
16715
diff
changeset
|
972 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
|
973 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
|
974 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
|
975 ' exists'), |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
976 # i18n: "it" refers to an existing branch |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
977 hint=_("use 'hg update' to switch to it")) |
17990
8216eb592dcd
branch: add missing repo argument to checknewlabel
Tim Henigan <tim.henigan@gmail.com>
parents:
17986
diff
changeset
|
978 scmutil.checknewlabel(repo, label, 'branch') |
16471
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
979 repo.dirstate.setbranch(label) |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
980 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
|
981 ui.status(_('(branches are permanent and global, ' |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
982 'did you want a bookmark?)\n')) |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
983 finally: |
85c7602e283a
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents:
16470
diff
changeset
|
984 wlock.release() |
3502
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
985 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
986 @command('branches', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
987 [('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
|
988 ('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
|
989 _('[-ac]')) |
8991
7e0b31dfc66f
branches: add --closed flag for consistency with heads
Matt Mackall <mpm@selenic.com>
parents:
8958
diff
changeset
|
990 def branches(ui, repo, active=False, closed=False): |
3502
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
991 """list repository named branches |
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
992 |
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
|
993 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
|
994 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
|
995 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
|
996 |
7e0b31dfc66f
branches: add --closed flag for consistency with heads
Matt Mackall <mpm@selenic.com>
parents:
8958
diff
changeset
|
997 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
|
998 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
|
999 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
1000 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
|
1001 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1002 Returns 0. |
3502
8dc14d630b29
add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents:
3472
diff
changeset
|
1003 """ |
8991
7e0b31dfc66f
branches: add --closed flag for consistency with heads
Matt Mackall <mpm@selenic.com>
parents:
8958
diff
changeset
|
1004 |
6631
a2b13cac0922
Active branches fix (issue1104)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
6625
diff
changeset
|
1005 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
|
1006 |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1007 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
|
1008 branches = [] |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1009 for tag, heads in repo.branchmap().iteritems(): |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1010 for h in reversed(heads): |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1011 ctx = repo[h] |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1012 isopen = not ctx.closesbranch() |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1013 if isopen: |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1014 tip = ctx |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1015 break |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1016 else: |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1017 tip = repo[heads[-1]] |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1018 isactive = tag in activebranches and isopen |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1019 branches.append((tip, isactive, isopen)) |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1020 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
|
1021 reverse=True) |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1022 |
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1023 for ctx, isactive, isopen in branches: |
6631
a2b13cac0922
Active branches fix (issue1104)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
6625
diff
changeset
|
1024 if (not active) or isactive: |
16612
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
1025 if isactive: |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
1026 label = 'branches.active' |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
1027 notice = '' |
16721
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1028 elif not isopen: |
16612
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
1029 if not closed: |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
1030 continue |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
1031 label = 'branches.closed' |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
1032 notice = _(' (closed)') |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
1033 else: |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
1034 label = 'branches.inactive' |
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
1035 notice = _(' (inactive)') |
16721
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1036 if ctx.branch() == repo.dirstate.branch(): |
16612
726dd0fc7cfe
branches: quiet option observes other parameters
Travis Herrick <tthetoad@gmail.com>
parents:
16603
diff
changeset
|
1037 label = 'branches.current' |
16721
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1038 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
|
1039 rev = ui.label('%s:%s' % (rev, hexfunc(ctx.node())), |
17788
9912baaae7df
color: add additional changeset.phase label to log.changeset and log.parent
Sean Farley <sean.michael.farley@gmail.com>
parents:
17773
diff
changeset
|
1040 'log.changeset changeset.%s' % ctx.phasestr()) |
16721
3e6d59ae4dc2
branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents:
16720
diff
changeset
|
1041 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
|
1042 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
|
1043 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
|
1044 else: |
13047
6c375e07d673
branch: operate on branch names in local string space where possible
Matt Mackall <mpm@selenic.com>
parents:
13022
diff
changeset
|
1045 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
|
1046 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1047 @command('bundle', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1048 [('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
|
1049 ('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
|
1050 _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1051 ('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
|
1052 _('BRANCH')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1053 ('', 'base', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1054 _('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
|
1055 _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1056 ('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
|
1057 ('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
|
1058 ] + remoteopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1059 _('[-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
|
1060 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
|
1061 """create a changegroup file |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1062 |
3511
aa8f086cb141
Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3510
diff
changeset
|
1063 Generate a compressed changegroup file collecting changesets not |
7807
bd8f44638847
help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents:
7765
diff
changeset
|
1064 known to be in another repository. |
3511
aa8f086cb141
Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3510
diff
changeset
|
1065 |
10376 | 1066 If you omit the destination repository, then hg assumes the |
1067 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
|
1068 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
|
1069 -a/--all (or --base null). |
d403cf4eb32d
help: describe bundle compression methods (issue1523)
Henrik Stuart <hg@hstuart.dk>
parents:
8902
diff
changeset
|
1070 |
8958
8358cf63f612
commands: improve bundle compression methods description
Stefano Mioli <jstevie@gmail.com>
parents:
8955
diff
changeset
|
1071 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
|
1072 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
|
1073 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
|
1074 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
1075 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
|
1076 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
|
1077 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
|
1078 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
|
1079 |
aa8f086cb141
Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3510
diff
changeset
|
1080 Applying bundles preserves all changeset contents including |
aa8f086cb141
Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3510
diff
changeset
|
1081 permissions, copy/rename information, and revision history. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1082 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1083 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
|
1084 """ |
12925
6eab8f0df2ca
commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents:
12918
diff
changeset
|
1085 revs = None |
6eab8f0df2ca
commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents:
12918
diff
changeset
|
1086 if 'rev' in opts: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
1087 revs = scmutil.revrange(repo, opts['rev']) |
12925
6eab8f0df2ca
commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents:
12918
diff
changeset
|
1088 |
16427
d54d4de56aa7
commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents:
16389
diff
changeset
|
1089 bundletype = opts.get('type', 'bzip2').lower() |
d54d4de56aa7
commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents:
16389
diff
changeset
|
1090 btypes = {'none': 'HG10UN', 'bzip2': 'HG10BZ', 'gzip': 'HG10GZ'} |
d54d4de56aa7
commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents:
16389
diff
changeset
|
1091 bundletype = btypes.get(bundletype) |
d54d4de56aa7
commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents:
16389
diff
changeset
|
1092 if bundletype not in changegroup.bundletypes: |
d54d4de56aa7
commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents:
16389
diff
changeset
|
1093 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
|
1094 |
6171
73b1de288801
Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents:
6163
diff
changeset
|
1095 if opts.get('all'): |
73b1de288801
Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents:
6163
diff
changeset
|
1096 base = ['null'] |
73b1de288801
Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents:
6163
diff
changeset
|
1097 else: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
1098 base = scmutil.revrange(repo, opts.get('base')) |
19201
309c439cdbaa
bundle-ng: add bundlecaps argument to getbundle() command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19184
diff
changeset
|
1099 # TODO: get desired bundlecaps from command line. |
309c439cdbaa
bundle-ng: add bundlecaps argument to getbundle() command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19184
diff
changeset
|
1100 bundlecaps = None |
3284
d89e98840b08
add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3278
diff
changeset
|
1101 if base: |
d89e98840b08
add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3278
diff
changeset
|
1102 if dest: |
8669
6f0f69da003e
commands: typo in bundle abort message
Martin Geisler <mg@lazybytes.net>
parents:
8664
diff
changeset
|
1103 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
|
1104 "a destination")) |
14073
72c84f24b420
discovery: drop findoutgoing and simplify findcommonincoming's api
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14064
diff
changeset
|
1105 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
|
1106 heads = revs and map(repo.lookup, revs) or revs |
19201
309c439cdbaa
bundle-ng: add bundlecaps argument to getbundle() command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19184
diff
changeset
|
1107 cg = repo.getbundle('bundle', heads=heads, common=common, |
309c439cdbaa
bundle-ng: add bundlecaps argument to getbundle() command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19184
diff
changeset
|
1108 bundlecaps=bundlecaps) |
15993
0b05e0bfdc1c
scmutil: unify some 'no changes found' messages
Matt Mackall <mpm@selenic.com>
parents:
15991
diff
changeset
|
1109 outgoing = None |
3284
d89e98840b08
add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3278
diff
changeset
|
1110 else: |
10365
d757bc0c7865
interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents:
10364
diff
changeset
|
1111 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
|
1112 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
|
1113 other = hg.peer(repo, opts, dest) |
18701
61c8327ced50
bundle: treat branches created newly on the local correctly (issue3828)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
18657
diff
changeset
|
1114 revs, checkout = hg.addbranchrevs(repo, repo, branches, revs) |
14213
30273f0c776b
discovery: resurrect findoutgoing as findcommonoutgoing for extension hooks
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14198
diff
changeset
|
1115 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
|
1116 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
|
1117 onlyheads=heads, |
16736
025b3b763ba9
bundle: make bundles more portable (isue3441)
Sune Foldager <cryo@cyanite.org>
parents:
16637
diff
changeset
|
1118 force=opts.get('force'), |
025b3b763ba9
bundle: make bundles more portable (isue3441)
Sune Foldager <cryo@cyanite.org>
parents:
16637
diff
changeset
|
1119 portable=True) |
19201
309c439cdbaa
bundle-ng: add bundlecaps argument to getbundle() command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19184
diff
changeset
|
1120 cg = repo.getlocalbundle('bundle', outgoing, bundlecaps) |
14073
72c84f24b420
discovery: drop findoutgoing and simplify findcommonincoming's api
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14064
diff
changeset
|
1121 if not cg: |
17248
6ffb35b2284c
discovery: add extinct changesets to outgoing.excluded
Patrick Mezard <patrick@mezard.eu>
parents:
17218
diff
changeset
|
1122 scmutil.nochangesfound(ui, repo, outgoing and outgoing.excluded) |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1123 return 1 |
10616
65b178f30eae
bundle: fix bundle generation for empty changegroup
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10596
diff
changeset
|
1124 |
6570
626cb86a6523
add compression type type parameter to bundle command
Benoit Allard <benoit@aeteurope.nl>
parents:
6518
diff
changeset
|
1125 changegroup.writebundle(cg, fname, bundletype) |
1218
cde6818e082a
Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents:
1215
diff
changeset
|
1126 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1127 @command('cat', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1128 [('o', 'output', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1129 _('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
|
1130 ('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
|
1131 ('', '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
|
1132 ] + walkopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1133 _('[OPTION]... FILE...')) |
1254
e6560042b7b8
Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1253
diff
changeset
|
1134 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
|
1135 """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
|
1136 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
1137 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
|
1138 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
|
1139 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
|
1140 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1141 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
|
1142 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
|
1143 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
|
1144 |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
1145 :``%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
|
1146 :``%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
|
1147 :``%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
|
1148 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1149 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1150 """ |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
1151 ctx = scmutil.revsingle(repo, opts.get('rev')) |
4697
5b2d986de0f8
cat: return an error on failure
Matt Mackall <mpm@selenic.com>
parents:
4692
diff
changeset
|
1152 err = 1 |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
1153 m = scmutil.match(ctx, (file1,) + pats, opts) |
6764 | 1154 for abs in ctx.walk(m): |
14291
1a791993ce59
cmdutil: make_file to makefileobj
Matt Mackall <mpm@selenic.com>
parents:
14290
diff
changeset
|
1155 fp = cmdutil.makefileobj(repo, opts.get('output'), ctx.node(), |
1a791993ce59
cmdutil: make_file to makefileobj
Matt Mackall <mpm@selenic.com>
parents:
14290
diff
changeset
|
1156 pathname=abs) |
6764 | 1157 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
|
1158 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
|
1159 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
|
1160 fp.write(data) |
13400
14f3795a5ed7
explicitly close files
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
13396
diff
changeset
|
1161 fp.close() |
4697
5b2d986de0f8
cat: return an error on failure
Matt Mackall <mpm@selenic.com>
parents:
4692
diff
changeset
|
1162 err = 0 |
5b2d986de0f8
cat: return an error on failure
Matt Mackall <mpm@selenic.com>
parents:
4692
diff
changeset
|
1163 return err |
248 | 1164 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1165 @command('^clone', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1166 [('U', 'noupdate', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1167 _('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
|
1168 ('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
|
1169 ('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
|
1170 ('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
|
1171 ('', '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
|
1172 ('', '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
|
1173 ] + remoteopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1174 _('[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
|
1175 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
|
1176 """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
|
1177 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1178 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
|
1179 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1180 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
|
1181 basename of the source. |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1182 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1183 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
|
1184 ``.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
|
1185 |
15177
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1186 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
|
1187 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
|
1188 ``.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
|
1189 |
15174
9f1a08c00931
clone: improve help on -r/-b and tags
Matt Mackall <mpm@selenic.com>
parents:
15147
diff
changeset
|
1190 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
|
1191 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
|
1192 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
|
1193 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
|
1194 --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
|
1195 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
|
1196 containing the tag. |
9714
2f1ab7f77ddc
clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents:
9698
diff
changeset
|
1197 |
18474
e031e10cdc06
help: document '@' bookmark in 'help bookmarks' and 'help clone'
Kevin Bullock <kbullock@ringworld.org>
parents:
18471
diff
changeset
|
1198 If the source repository has a bookmark called '@' set, that |
e031e10cdc06
help: document '@' bookmark in 'help bookmarks' and 'help clone'
Kevin Bullock <kbullock@ringworld.org>
parents:
18471
diff
changeset
|
1199 revision will be checked out in the new repository by default. |
e031e10cdc06
help: document '@' bookmark in 'help bookmarks' and 'help clone'
Kevin Bullock <kbullock@ringworld.org>
parents:
18471
diff
changeset
|
1200 |
15178
04e5449e25dc
clone: add a note about -u/-U
Matt Mackall <mpm@selenic.com>
parents:
15177
diff
changeset
|
1201 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
|
1202 -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
|
1203 |
15177
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1204 .. container:: verbose |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1205 |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1206 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
|
1207 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
|
1208 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
|
1209 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
|
1210 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
|
1211 --pull option to avoid hardlinking. |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1212 |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1213 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
|
1214 directory using full hardlinks with :: |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1215 |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1216 $ cp -al REPO REPOCLONE |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1217 |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1218 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
|
1219 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
|
1220 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
|
1221 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
|
1222 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
|
1223 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
|
1224 |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1225 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
|
1226 revision from this list: |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1227 |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1228 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
|
1229 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
|
1230 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
|
1231 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
|
1232 latest head of that branch) |
1c57d8b38d5a
clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents:
15175
diff
changeset
|
1233 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
|
1234 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
|
1235 f) the tipmost head specified with the url#branch source syntax |
18476
1fb9890c55bd
help: update verbose 'clone' help to include '@' bookmark
Kevin Bullock <kbullock@ringworld.org>
parents:
18474
diff
changeset
|
1236 g) the revision marked with the '@' bookmark, if present |
1fb9890c55bd
help: update verbose 'clone' help to include '@' bookmark
Kevin Bullock <kbullock@ringworld.org>
parents:
18474
diff
changeset
|
1237 h) the tipmost head of the default branch |
1fb9890c55bd
help: update verbose 'clone' help to include '@' bookmark
Kevin Bullock <kbullock@ringworld.org>
parents:
18474
diff
changeset
|
1238 i) tip |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1239 |
15179 | 1240 Examples: |
1241 | |
1242 - clone a remote repository to a new directory named hg/:: | |
1243 | |
1244 hg clone http://selenic.com/hg | |
1245 | |
1246 - create a lightweight local clone:: | |
1247 | |
1248 hg clone project/ project-feature/ | |
1249 | |
1250 - clone from an absolute path on an ssh server (note double-slash):: | |
1251 | |
1252 hg clone ssh://user@server//home/projects/alpha/ | |
1253 | |
1254 - do a high-speed clone over a LAN while checking out a | |
1255 specified version:: | |
1256 | |
1257 hg clone --uncompressed http://server/repo -u 1.5 | |
1258 | |
1259 - create a repository without changesets after a particular revision:: | |
1260 | |
1261 hg clone -r 04e544 experimental/ good/ | |
1262 | |
1263 - clone (and track) a particular named branch:: | |
1264 | |
1265 hg clone http://selenic.com/hg#stable | |
1266 | |
15175
282db9102c43
clone: move url crossref to bottom
Matt Mackall <mpm@selenic.com>
parents:
15174
diff
changeset
|
1267 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
|
1268 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1269 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1270 """ |
9714
2f1ab7f77ddc
clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents:
9698
diff
changeset
|
1271 if opts.get('noupdate') and opts.get('updaterev'): |
2f1ab7f77ddc
clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents:
9698
diff
changeset
|
1272 raise util.Abort(_("cannot specify both --noupdate and --updaterev")) |
2f1ab7f77ddc
clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents:
9698
diff
changeset
|
1273 |
14553
d976542986d2
hg: add opts argument to clone for internal remoteui
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14551
diff
changeset
|
1274 r = hg.clone(ui, opts, source, dest, |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1275 pull=opts.get('pull'), |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1276 stream=opts.get('uncompressed'), |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1277 rev=opts.get('rev'), |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1278 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
|
1279 branch=opts.get('branch')) |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1280 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1281 return r is None |
515 | 1282 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1283 @command('^commit|ci', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1284 [('A', 'addremove', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1285 _('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
|
1286 ('', 'close-branch', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1287 _('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
|
1288 ('', '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
|
1289 ] + walkopts + commitopts + commitopts2 + subrepoopts, |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1290 _('[OPTION]... [FILE]...')) |
813
80fd2958235a
Adapt commit to use file matching code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
812
diff
changeset
|
1291 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
|
1292 """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
|
1293 |
7983
7b813bdbd5d0
Change double spaces to single spaces in help texts.
Martin Geisler <mg@daimi.au.dk>
parents:
7982
diff
changeset
|
1294 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
|
1295 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
|
1296 :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
|
1297 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
1298 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
|
1299 will be committed. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1300 |
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
|
1301 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
|
1302 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
|
1303 |
11877
8f40125a0ed8
commit: explicitly document the existence of "last-message.txt"
Greg Ward <greg-hg@gerg.ca>
parents:
11836
diff
changeset
|
1304 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
|
1305 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
|
1306 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
|
1307 ``.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
|
1308 |
16458
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1309 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
|
1310 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
|
1311 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
|
1312 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
|
1313 ``.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
|
1314 on how to restore it). |
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 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
|
1317 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
|
1318 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
|
1319 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1320 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
|
1321 or changesets that have children. |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1322 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
1323 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
|
1324 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1325 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
|
1326 """ |
15321
e174353e8cda
subrepos: abort commit by default if a subrepo is dirty (BC)
Martin Geisler <mg@lazybytes.net>
parents:
15307
diff
changeset
|
1327 if opts.get('subrepos'): |
19232
b592fd33233a
amend: complain more comprehensibly about subrepos
Matt Mackall <mpm@selenic.com>
parents:
19217
diff
changeset
|
1328 if opts.get('amend'): |
b592fd33233a
amend: complain more comprehensibly about subrepos
Matt Mackall <mpm@selenic.com>
parents:
19217
diff
changeset
|
1329 raise util.Abort(_('cannot amend with --subrepos')) |
17504 | 1330 # Let --subrepos on the command line override config setting. |
15321
e174353e8cda
subrepos: abort commit by default if a subrepo is dirty (BC)
Martin Geisler <mg@lazybytes.net>
parents:
15307
diff
changeset
|
1331 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
|
1332 |
19253
e078ea9b4ce4
graft: refuse to commit an interrupted graft (issue3667)
Simon King <simon@simonking.org.uk>
parents:
19232
diff
changeset
|
1333 if repo.vfs.exists('graftstate'): |
e078ea9b4ce4
graft: refuse to commit an interrupted graft (issue3667)
Simon King <simon@simonking.org.uk>
parents:
19232
diff
changeset
|
1334 raise util.Abort(_('cannot commit an interrupted graft operation'), |
e078ea9b4ce4
graft: refuse to commit an interrupted graft (issue3667)
Simon King <simon@simonking.org.uk>
parents:
19232
diff
changeset
|
1335 hint=_('use "hg graft -c" to continue graft')) |
e078ea9b4ce4
graft: refuse to commit an interrupted graft (issue3667)
Simon King <simon@simonking.org.uk>
parents:
19232
diff
changeset
|
1336 |
7655
cce37dab7ad6
branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
7643
diff
changeset
|
1337 extra = {} |
cce37dab7ad6
branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
7643
diff
changeset
|
1338 if opts.get('close_branch'): |
cce37dab7ad6
branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
7643
diff
changeset
|
1339 extra['close'] = 1 |
6336
4b0c9c674707
warn about new heads on commit (issue842)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6321
diff
changeset
|
1340 |
11173
5b48d819d5f9
commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents:
11169
diff
changeset
|
1341 branch = repo[None].branch() |
5b48d819d5f9
commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents:
11169
diff
changeset
|
1342 bheads = repo.branchheads(branch) |
5b48d819d5f9
commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents:
11169
diff
changeset
|
1343 |
16458
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1344 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
|
1345 if ui.configbool('ui', 'commitsubrepos'): |
19232
b592fd33233a
amend: complain more comprehensibly about subrepos
Matt Mackall <mpm@selenic.com>
parents:
19217
diff
changeset
|
1346 raise util.Abort(_('cannot amend with ui.commitsubrepos enabled')) |
16458
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1347 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1348 old = repo['.'] |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1349 if old.phase() == phases.public: |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1350 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
|
1351 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
|
1352 raise util.Abort(_('cannot amend while merging')) |
18163
c5bd753c5bc6
amend: allow amend of non-head when obsolete is enabled
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
18143
diff
changeset
|
1353 if (not obsolete._enabled) and old.children(): |
16458
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1354 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
|
1355 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1356 e = cmdutil.commiteditor |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1357 if opts.get('force_editor'): |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1358 e = cmdutil.commitforceeditor |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1359 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1360 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
|
1361 editor = e |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1362 # 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
|
1363 # 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
|
1364 if not message: |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1365 message = old.description() |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1366 editor = cmdutil.commitforceeditor |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1367 return repo.commit(message, |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1368 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
|
1369 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
|
1370 match, |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1371 editor=editor, |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1372 extra=extra) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1373 |
17264
ec7b9bec19c9
strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents:
17260
diff
changeset
|
1374 current = repo._bookmarkcurrent |
ec7b9bec19c9
strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents:
17260
diff
changeset
|
1375 marks = old.bookmarks() |
16458
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1376 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
|
1377 if node == old.node(): |
13899
a7cd0eee396b
commit: note when files are missing
Martin Geisler <mg@aragost.com>
parents:
13893
diff
changeset
|
1378 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
|
1379 return 1 |
17264
ec7b9bec19c9
strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents:
17260
diff
changeset
|
1380 elif marks: |
ec7b9bec19c9
strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents:
17260
diff
changeset
|
1381 ui.debug('moving bookmarks %r from %s to %s\n' % |
ec7b9bec19c9
strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents:
17260
diff
changeset
|
1382 (marks, old.hex(), hex(node))) |
17922
7f5dab94e48c
bookmarks: introduce a bmstore to manage bookmark persistence
Augie Fackler <raf@durin42.com>
parents:
17912
diff
changeset
|
1383 newmarks = repo._bookmarks |
17264
ec7b9bec19c9
strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents:
17260
diff
changeset
|
1384 for bm in marks: |
17922
7f5dab94e48c
bookmarks: introduce a bmstore to manage bookmark persistence
Augie Fackler <raf@durin42.com>
parents:
17912
diff
changeset
|
1385 newmarks[bm] = node |
17264
ec7b9bec19c9
strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents:
17260
diff
changeset
|
1386 if bm == current: |
ec7b9bec19c9
strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents:
17260
diff
changeset
|
1387 bookmarks.setcurrent(repo, bm) |
17922
7f5dab94e48c
bookmarks: introduce a bmstore to manage bookmark persistence
Augie Fackler <raf@durin42.com>
parents:
17912
diff
changeset
|
1388 newmarks.write() |
16458
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1389 else: |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1390 e = cmdutil.commiteditor |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1391 if opts.get('force_editor'): |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1392 e = cmdutil.commitforceeditor |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1393 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1394 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
|
1395 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
|
1396 match, editor=e, extra=extra) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1397 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1398 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
|
1399 |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1400 if not node: |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1401 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
|
1402 if stat[3]: |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1403 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
|
1404 "'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
|
1405 else: |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1406 ui.status(_("nothing changed\n")) |
55982f62651f
commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents:
16427
diff
changeset
|
1407 return 1 |
11173
5b48d819d5f9
commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents:
11169
diff
changeset
|
1408 |
18688
79107fad06aa
commit: factor out status printing into a helper function
Kevin Bullock <kbullock@ringworld.org>
parents:
18687
diff
changeset
|
1409 cmdutil.commitstatus(repo, node, branch, bheads, opts) |
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
|
1410 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1411 @command('copy|cp', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1412 [('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
|
1413 ('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
|
1414 ] + walkopts + dryrunopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1415 _('[OPTION]... [SOURCE]... DEST')) |
1253
a45e717c61a8
Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1250
diff
changeset
|
1416 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
|
1417 """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
|
1418 |
6448
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
1419 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
|
1420 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
|
1421 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
|
1422 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
1423 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
|
1424 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
|
1425 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
|
1426 |
7807
bd8f44638847
help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents:
7765
diff
changeset
|
1427 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
|
1428 before that, see :hg:`revert`. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1429 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
1430 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
|
1431 """ |
4914 | 1432 wlock = repo.wlock(False) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4914
diff
changeset
|
1433 try: |
5610
2493a478f395
copy: handle rename internally
Matt Mackall <mpm@selenic.com>
parents:
5589
diff
changeset
|
1434 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
|
1435 finally: |
8109
496ae1ea4698
switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents:
8088
diff
changeset
|
1436 wlock.release() |
363 | 1437 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1438 @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
|
1439 def debugancestor(ui, repo, *args): |
1262 | 1440 """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
|
1441 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
|
1442 index, rev1, rev2 = args |
13970
d13913355390
move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents:
13965
diff
changeset
|
1443 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
|
1444 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
|
1445 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
|
1446 if not repo: |
12067
a4fbbe0fbc38
Lowercase error messages
Martin Geisler <mg@lazybytes.net>
parents:
11881
diff
changeset
|
1447 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
|
1448 "(.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
|
1449 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
|
1450 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
|
1451 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
|
1452 else: |
81afdd016867
debugancestor: make the index argument optional, defaulting to 00changelog.i
Bryan O'Sullivan <bos@serpentine.com>
parents:
6171
diff
changeset
|
1453 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
|
1454 a = r.ancestor(lookup(rev1), lookup(rev2)) |
1262 | 1455 ui.write("%d:%s\n" % (r.rev(a), hex(a))) |
1456 | |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1457 @command('debugbuilddag', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1458 [('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
|
1459 ('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
|
1460 ('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
|
1461 _('[OPTION]... [TEXT]')) |
14283
035489c9ea53
debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents:
14279
diff
changeset
|
1462 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
|
1463 mergeable_file=False, |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1464 overwritten_file=False, |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1465 new_file=False): |
14283
035489c9ea53
debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents:
14279
diff
changeset
|
1466 """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
|
1467 |
035489c9ea53
debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents:
14279
diff
changeset
|
1468 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
|
1469 command line. |
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 Elements: |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1472 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1473 - "+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
|
1474 - "." 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
|
1475 - "$" 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
|
1476 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
|
1477 - "<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
|
1478 - "*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
|
1479 - "*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
|
1480 - "/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
|
1481 - ":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
|
1482 - "@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
|
1483 - "#...\\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
|
1484 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1485 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
|
1486 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1487 A backref is either |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1488 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1489 - 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
|
1490 node, or |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1491 - 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
|
1492 - 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
|
1493 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1494 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
|
1495 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
|
1496 """ |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1497 |
14283
035489c9ea53
debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents:
14279
diff
changeset
|
1498 if text is None: |
035489c9ea53
debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents:
14279
diff
changeset
|
1499 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
|
1500 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
|
1501 |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1502 cl = repo.changelog |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1503 if len(cl) > 0: |
11342
aecabad8dd7a
commands: get rid of generic exception in debugbuilddag
Martin Geisler <mg@aragost.com>
parents:
11338
diff
changeset
|
1504 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
|
1505 |
14279
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1506 # determine number of revs in DAG |
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1507 total = 0 |
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1508 for type, data in dagparser.parsedag(text): |
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1509 if type == 'n': |
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1510 total += 1 |
11337
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1511 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1512 if mergeable_file: |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1513 linesperrev = 2 |
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1514 # make a file with k lines per rev |
14279
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1515 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
|
1516 initialmergedlines.append("") |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1517 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1518 tags = [] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1519 |
15875
7eca9db689d6
debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15862
diff
changeset
|
1520 lock = tr = None |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1521 try: |
15875
7eca9db689d6
debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15862
diff
changeset
|
1522 lock = repo.lock() |
7eca9db689d6
debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15862
diff
changeset
|
1523 tr = repo.transaction("builddag") |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1524 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1525 at = -1 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1526 atbranch = 'default' |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1527 nodeids = [] |
16219
28c5648771d1
debugbuilddag: fix starting a dag on a non-default branch
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
16191
diff
changeset
|
1528 id = 0 |
28c5648771d1
debugbuilddag: fix starting a dag on a non-default branch
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
16191
diff
changeset
|
1529 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
|
1530 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
|
1531 if type == 'n': |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
1532 ui.note(('node %s\n' % str(data))) |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1533 id, ps = data |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1534 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1535 files = [] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1536 fctxs = {} |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1537 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1538 p2 = None |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1539 if mergeable_file: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1540 fn = "mf" |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1541 p1 = repo[ps[0]] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1542 if len(ps) > 1: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1543 p2 = repo[ps[1]] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1544 pa = p1.ancestor(p2) |
18181
c7d258cd77e5
commands: fix implicit tuple that is invalid syntax in Python3
Augie Fackler <raf@durin42.com>
parents:
18163
diff
changeset
|
1545 base, local, other = [x[fn].data() for x in (pa, p1, |
c7d258cd77e5
commands: fix implicit tuple that is invalid syntax in Python3
Augie Fackler <raf@durin42.com>
parents:
18163
diff
changeset
|
1546 p2)] |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1547 m3 = simplemerge.Merge3Text(base, local, other) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1548 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
|
1549 ml.append("") |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1550 elif at > 0: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1551 ml = p1[fn].data().split("\n") |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1552 else: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1553 ml = initialmergedlines |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1554 ml[id * linesperrev] += " r%i" % id |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1555 mergedtext = "\n".join(ml) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1556 files.append(fn) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1557 fctxs[fn] = context.memfilectx(fn, mergedtext) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1558 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1559 if overwritten_file: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1560 fn = "of" |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1561 files.append(fn) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1562 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
|
1563 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1564 if new_file: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1565 fn = "nf%i" % id |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1566 files.append(fn) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1567 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
|
1568 if len(ps) > 1: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1569 if not p2: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1570 p2 = repo[ps[1]] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1571 for fn in p2: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1572 if fn.startswith("nf"): |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1573 files.append(fn) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1574 fctxs[fn] = p2[fn] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1575 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1576 def fctxfn(repo, cx, path): |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1577 return fctxs.get(path) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1578 |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1579 if len(ps) == 0 or ps[0] < 0: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1580 pars = [None, None] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1581 elif len(ps) == 1: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1582 pars = [nodeids[ps[0]], None] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1583 else: |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1584 pars = [nodeids[p] for p in ps] |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1585 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
|
1586 date=(id, 0), |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1587 user="debugbuilddag", |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1588 extra={'branch': atbranch}) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1589 nodeid = repo.commitctx(cx) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1590 nodeids.append(nodeid) |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1591 at = id |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1592 elif type == 'l': |
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1593 id, name = data |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
1594 ui.note(('tag %s\n' % name)) |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1595 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
|
1596 elif type == 'a': |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
1597 ui.note(('branch %s\n' % data)) |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1598 atbranch = data |
14279
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1599 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
|
1600 tr.close() |
15875
7eca9db689d6
debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15862
diff
changeset
|
1601 |
7eca9db689d6
debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15862
diff
changeset
|
1602 if tags: |
7eca9db689d6
debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15862
diff
changeset
|
1603 repo.opener.write("localtags", "".join(tags)) |
14163
38184a72d793
debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14157
diff
changeset
|
1604 finally: |
14279
b039b667515d
debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents:
14271
diff
changeset
|
1605 ui.progress(_('building'), None) |
15875
7eca9db689d6
debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15862
diff
changeset
|
1606 release(tr, lock) |
11337
0f3c8a47960e
debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11336
diff
changeset
|
1607 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1608 @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
|
1609 def debugbundle(ui, bundlepath, all=None, **opts): |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13723
diff
changeset
|
1610 """lists the contents of a bundle""" |
17887
0e2846b2482c
url: use open and not url.open for local files (issue3624)
Siddharth Agarwal <sid0@fb.com>
parents:
17875
diff
changeset
|
1611 f = hg.openpath(ui, bundlepath) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4914
diff
changeset
|
1612 try: |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1613 gen = changegroup.readbundle(f, bundlepath) |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1614 if all: |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
1615 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
|
1616 |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1617 def showchunks(named): |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1618 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
|
1619 chain = None |
14494
1ffeeb91c55d
check-code: flag 0/1 used as constant Boolean expression
Martin Geisler <mg@lazybytes.net>
parents:
14485
diff
changeset
|
1620 while True: |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1621 chunkdata = gen.deltachunk(chain) |
13724
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13723
diff
changeset
|
1622 if not chunkdata: |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13723
diff
changeset
|
1623 break |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13723
diff
changeset
|
1624 node = chunkdata['node'] |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1625 p1 = chunkdata['p1'] |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1626 p2 = chunkdata['p2'] |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1627 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
|
1628 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
|
1629 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
|
1630 ui.write("%s %s %s %s %s %s\n" % |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1631 (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
|
1632 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
|
1633 chain = node |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1634 |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1635 chunkdata = gen.changelogheader() |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1636 showchunks("changelog") |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1637 chunkdata = gen.manifestheader() |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1638 showchunks("manifest") |
14494
1ffeeb91c55d
check-code: flag 0/1 used as constant Boolean expression
Martin Geisler <mg@lazybytes.net>
parents:
14485
diff
changeset
|
1639 while True: |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1640 chunkdata = gen.filelogheader() |
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1641 if not chunkdata: |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1642 break |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1643 fname = chunkdata['filename'] |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1644 showchunks(fname) |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1645 else: |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1646 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
|
1647 chain = None |
14494
1ffeeb91c55d
check-code: flag 0/1 used as constant Boolean expression
Martin Geisler <mg@lazybytes.net>
parents:
14485
diff
changeset
|
1648 while True: |
14144
3c3c53d8343a
unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
14141
diff
changeset
|
1649 chunkdata = gen.deltachunk(chain) |
13747
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1650 if not chunkdata: |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1651 break |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1652 node = chunkdata['node'] |
cede00420e1e
code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents:
13741
diff
changeset
|
1653 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
|
1654 chain = node |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4914
diff
changeset
|
1655 finally: |
13724
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13723
diff
changeset
|
1656 f.close() |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13723
diff
changeset
|
1657 |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1658 @command('debugcheckstate', [], '') |
596 | 1659 def debugcheckstate(ui, repo): |
1660 """validate the correctness of the current dirstate""" | |
460 | 1661 parent1, parent2 = repo.dirstate.parents() |
6747
f6c00b17387c
use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents:
6746
diff
changeset
|
1662 m1 = repo[parent1].manifest() |
f6c00b17387c
use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents:
6746
diff
changeset
|
1663 m2 = repo[parent2].manifest() |
460 | 1664 errors = 0 |
4906
30847b8af7ca
dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents:
4904
diff
changeset
|
1665 for f in repo.dirstate: |
30847b8af7ca
dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents:
4904
diff
changeset
|
1666 state = repo.dirstate[f] |
460 | 1667 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
|
1668 ui.warn(_("%s in state %s, but not in manifest1\n") % (f, state)) |
460 | 1669 errors += 1 |
1670 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
|
1671 ui.warn(_("%s in state %s, but also in manifest1\n") % (f, state)) |
460 | 1672 errors += 1 |
1673 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
|
1674 ui.warn(_("%s in state %s, but not in either manifest\n") % |
582 | 1675 (f, state)) |
460 | 1676 errors += 1 |
1677 for f in m1: | |
4906
30847b8af7ca
dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents:
4904
diff
changeset
|
1678 state = repo.dirstate[f] |
460 | 1679 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
|
1680 ui.warn(_("%s in manifest1, but listed as state %s") % (f, state)) |
460 | 1681 errors += 1 |
1682 if errors: | |
1602
fb4149eebdd4
strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents:
1601
diff
changeset
|
1683 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
|
1684 raise util.Abort(error) |
460 | 1685 |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1686 @command('debugcommands', [], _('[COMMAND]')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1687 def debugcommands(ui, cmd='', *args): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1688 """list all available commands and options""" |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1689 for cmd, vals in sorted(table.iteritems()): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1690 cmd = cmd.split('|')[0].strip('^') |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1691 opts = ', '.join([i[1] for i in vals[1]]) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1692 ui.write('%s: %s\n' % (cmd, opts)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1693 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1694 @command('debugcomplete', |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1695 [('o', 'options', None, _('show the command options'))], |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1696 _('[-o] CMD')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1697 def debugcomplete(ui, cmd='', **opts): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1698 """returns the completion list associated with the given command""" |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1699 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1700 if opts.get('options'): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1701 options = [] |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1702 otables = [globalopts] |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1703 if cmd: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1704 aliases, entry = cmdutil.findcmd(cmd, table, False) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1705 otables.append(entry[1]) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1706 for t in otables: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1707 for o in t: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1708 if "(DEPRECATED)" in o[3]: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1709 continue |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1710 if o[0]: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1711 options.append('-%s' % o[0]) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1712 options.append('--%s' % o[1]) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1713 ui.write("%s\n" % "\n".join(options)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1714 return |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1715 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1716 cmdlist = cmdutil.findpossible(cmd, table) |
11276
f28b58e35768
revset: add a debugrevspec command
Matt Mackall <mpm@selenic.com>
parents:
11273
diff
changeset
|
1717 if ui.verbose: |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1718 cmdlist = [' '.join(c[0]) for c in cmdlist.values()] |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1719 ui.write("%s\n" % "\n".join(sorted(cmdlist))) |
8812
859f841937d0
subrepo: introduce basic state parsing
Matt Mackall <mpm@selenic.com>
parents:
8810
diff
changeset
|
1720 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1721 @command('debugdag', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1722 [('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
|
1723 ('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
|
1724 ('', 'dots', None, _('use dots for runs')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1725 ('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
|
1726 _('[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
|
1727 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
|
1728 """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
|
1729 |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1730 If you pass a revlog index, the revlog's DAG is emitted. If you list |
17500 | 1731 revision numbers, they get labeled in the output as rN. |
11336
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1732 |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1733 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
|
1734 """ |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1735 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
|
1736 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
|
1737 if file_: |
13970
d13913355390
move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents:
13965
diff
changeset
|
1738 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
|
1739 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
|
1740 def events(): |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1741 for r in rlog: |
16683 | 1742 yield 'n', (r, list(set(p for p in rlog.parentrevs(r) |
1743 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
|
1744 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
|
1745 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
|
1746 elif repo: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1747 cl = repo.changelog |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1748 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
|
1749 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
|
1750 if tags: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1751 labels = {} |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1752 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
|
1753 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
|
1754 def events(): |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1755 b = "default" |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1756 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
|
1757 if branches: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1758 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
|
1759 if newb != b: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1760 yield 'a', newb |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1761 b = newb |
16683 | 1762 yield 'n', (r, list(set(p for p in cl.parentrevs(r) |
1763 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
|
1764 if tags: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1765 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
|
1766 if ls: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1767 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
|
1768 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
|
1769 else: |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1770 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
|
1771 |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1772 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
|
1773 addspaces=spaces, |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1774 wraplabels=True, |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1775 wrapannotations=True, |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1776 wrapnonlinear=dots, |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1777 usedots=dots, |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1778 maxlinewidth=70): |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1779 ui.write(line) |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1780 ui.write("\n") |
3dfbe26cfded
debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
11331
diff
changeset
|
1781 |
14323
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1782 @command('debugdata', |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1783 [('c', 'changelog', False, _('open changelog')), |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1784 ('m', 'manifest', False, _('open manifest'))], |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1785 _('-c|-m|FILE REV')) |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1786 def debugdata(ui, repo, file_, rev = None, **opts): |
4258
b11a2fb59cf5
revlog: simplify revlog version handling
Matt Mackall <mpm@selenic.com>
parents:
4257
diff
changeset
|
1787 """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
|
1788 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
|
1789 file_, rev = None, file_ |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1790 elif rev is None: |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1791 raise error.CommandError('debugdata', _('invalid arguments')) |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1792 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
|
1793 try: |
1cc7c0cbc30b
Fix traceback during invalid rev identifier for debugdata
Anupam Kapoor<anupam.kapoor@gmail.com>
parents:
1312
diff
changeset
|
1794 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
|
1795 except KeyError: |
3072
bc3fe3b5b785
Never apply string formatting to generated errors with util.Abort.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3071
diff
changeset
|
1796 raise util.Abort(_('invalid revision identifier %s') % rev) |
1039
4296754ba7b4
Add debugdata for dumping revlog revision data
mpm@selenic.com
parents:
1037
diff
changeset
|
1797 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1798 @command('debugdate', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1799 [('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
|
1800 _('[-e] DATE [RANGE]')) |
3812 | 1801 def debugdate(ui, date, range=None, **opts): |
3805 | 1802 """parse and display a date""" |
3812 | 1803 if opts["extended"]: |
1804 d = util.parsedate(date, util.extendeddateformats) | |
1805 else: | |
1806 d = util.parsedate(date) | |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
1807 ui.write(("internal: %s %s\n") % d) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
1808 ui.write(("standard: %s\n") % util.datestr(d)) |
3812 | 1809 if range: |
1810 m = util.matchdate(range) | |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
1811 ui.write(("match: %s\n") % m(d[0])) |
3805 | 1812 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1813 @command('debugdiscovery', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1814 [('', 'old', None, _('use old-style discovery')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1815 ('', 'nonheads', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1816 _('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
|
1817 ] + remoteopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1818 _('[-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
|
1819 def debugdiscovery(ui, repo, remoteurl="default", **opts): |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1820 """runs the changeset discovery protocol in isolation""" |
16683 | 1821 remoteurl, branches = hg.parseurl(ui.expandpath(remoteurl), |
1822 opts.get('branch')) | |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
1823 remote = hg.peer(repo, opts, remoteurl) |
14164
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1824 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
|
1825 |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1826 # make sure tests are repeatable |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1827 random.seed(12323) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1828 |
17191
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
1829 def doit(localheads, remoteheads, remote=remote): |
14164
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1830 if opts.get('old'): |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1831 if localheads: |
16683 | 1832 raise util.Abort('cannot use localheads with old style ' |
1833 'discovery') | |
17192
1ac628cd7113
peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
17191
diff
changeset
|
1834 if not util.safehasattr(remote, 'branches'): |
1ac628cd7113
peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
17191
diff
changeset
|
1835 # enable in-client legacy support |
1ac628cd7113
peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
17191
diff
changeset
|
1836 remote = localrepo.locallegacypeer(remote.local()) |
14164
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1837 common, _in, hds = treediscovery.findcommonincoming(repo, remote, |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1838 force=True) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1839 common = set(common) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1840 if not opts.get('nonheads'): |
18254
2dfe519d435d
debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents:
18210
diff
changeset
|
1841 ui.write(("unpruned common: %s\n") % |
2dfe519d435d
debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents:
18210
diff
changeset
|
1842 " ".join(sorted(short(n) for n in common))) |
14164
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1843 dag = dagutil.revlogdag(repo.changelog) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1844 all = dag.ancestorset(dag.internalizeall(common)) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1845 common = dag.externalizeall(dag.headsetofconnecteds(all)) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1846 else: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1847 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
|
1848 common = set(common) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1849 rheads = set(hds) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1850 lheads = set(repo.heads()) |
18254
2dfe519d435d
debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents:
18210
diff
changeset
|
1851 ui.write(("common heads: %s\n") % |
2dfe519d435d
debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents:
18210
diff
changeset
|
1852 " ".join(sorted(short(n) for n in common))) |
14164
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1853 if lheads <= common: |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
1854 ui.write(("local is subset\n")) |
14164
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1855 elif rheads <= common: |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
1856 ui.write(("remote is subset\n")) |
14164
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1857 |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1858 serverlogs = opts.get('serverlog') |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1859 if serverlogs: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1860 for filename in serverlogs: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1861 logfile = open(filename, 'r') |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1862 try: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1863 line = logfile.readline() |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1864 while line: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1865 parts = line.strip().split(';') |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1866 op = parts[1] |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1867 if op == 'cg': |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1868 pass |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1869 elif op == 'cgss': |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1870 doit(parts[2].split(' '), parts[3].split(' ')) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1871 elif op == 'unb': |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1872 doit(parts[3].split(' '), parts[2].split(' ')) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1873 line = logfile.readline() |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1874 finally: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1875 logfile.close() |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1876 |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1877 else: |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1878 remoterevs, _checkout = hg.addbranchrevs(repo, remote, branches, |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1879 opts.get('remote_head')) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1880 localrevs = opts.get('local_head') |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1881 doit(localrevs, remoterevs) |
cb98fed52495
discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14163
diff
changeset
|
1882 |
17370
3fe199579323
debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents:
17343
diff
changeset
|
1883 @command('debugfileset', |
3fe199579323
debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents:
17343
diff
changeset
|
1884 [('r', 'rev', '', _('apply the filespec on this revision'), _('REV'))], |
3fe199579323
debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents:
17343
diff
changeset
|
1885 _('[-r REV] FILESPEC')) |
3fe199579323
debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents:
17343
diff
changeset
|
1886 def debugfileset(ui, repo, expr, **opts): |
14511
30506b894359
filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents:
14509
diff
changeset
|
1887 '''parse and apply a fileset specification''' |
17370
3fe199579323
debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents:
17343
diff
changeset
|
1888 ctx = scmutil.revsingle(repo, opts.get('rev'), None) |
14511
30506b894359
filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents:
14509
diff
changeset
|
1889 if ui.verbose: |
30506b894359
filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents:
14509
diff
changeset
|
1890 tree = fileset.parse(expr)[0] |
30506b894359
filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents:
14509
diff
changeset
|
1891 ui.note(tree, "\n") |
14673 | 1892 |
17370
3fe199579323
debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents:
17343
diff
changeset
|
1893 for f in fileset.getfileset(ctx, expr): |
14551
68d814a3cefd
fileset: basic pattern and boolean support
Matt Mackall <mpm@selenic.com>
parents:
14548
diff
changeset
|
1894 ui.write("%s\n" % f) |
14511
30506b894359
filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents:
14509
diff
changeset
|
1895 |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1896 @command('debugfsinfo', [], _('[PATH]')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1897 def debugfsinfo(ui, path = "."): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1898 """show information detected about current filesystem""" |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1899 util.writefile('.debugfsinfo', '') |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
1900 ui.write(('exec: %s\n') % (util.checkexec(path) and 'yes' or 'no')) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
1901 ui.write(('symlink: %s\n') % (util.checklink(path) and 'yes' or 'no')) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
1902 ui.write(('case-sensitive: %s\n') % (util.checkcase('.debugfsinfo') |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1903 and 'yes' or 'no')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1904 os.unlink('.debugfsinfo') |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1905 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1906 @command('debuggetbundle', |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1907 [('H', 'head', [], _('id of head node'), _('ID')), |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1908 ('C', 'common', [], _('id of common node'), _('ID')), |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1909 ('t', 'type', 'bzip2', _('bundle compression type to use'), _('TYPE'))], |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1910 _('REPO FILE [-H|-C ID]...')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1911 def debuggetbundle(ui, repopath, bundlepath, head=None, common=None, **opts): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1912 """retrieves a bundle from a repo |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1913 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1914 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
|
1915 given file. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1916 """ |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
1917 repo = hg.peer(ui, opts, repopath) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1918 if not repo.capable('getbundle'): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1919 raise util.Abort("getbundle() not supported by target repository") |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1920 args = {} |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1921 if common: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1922 args['common'] = [bin(s) for s in common] |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1923 if head: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1924 args['heads'] = [bin(s) for s in head] |
19201
309c439cdbaa
bundle-ng: add bundlecaps argument to getbundle() command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19184
diff
changeset
|
1925 # TODO: get desired bundlecaps from command line. |
309c439cdbaa
bundle-ng: add bundlecaps argument to getbundle() command
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
19184
diff
changeset
|
1926 args['bundlecaps'] = None |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1927 bundle = repo.getbundle('debug', **args) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1928 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1929 bundletype = opts.get('type', 'bzip2').lower() |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1930 btypes = {'none': 'HG10UN', 'bzip2': 'HG10BZ', 'gzip': 'HG10GZ'} |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1931 bundletype = btypes.get(bundletype) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1932 if bundletype not in changegroup.bundletypes: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1933 raise util.Abort(_('unknown bundle type specified with --type')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1934 changegroup.writebundle(bundle, bundlepath, bundletype) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1935 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
1936 @command('debugignore', [], '') |
13396
3e66eec9a814
add debugignore which yields the combined ignore patten of the .hgignore files
jfh <jason@jasonfharris.com>
parents:
13388
diff
changeset
|
1937 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
|
1938 """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
|
1939 ignore = repo.dirstate._ignore |
14949
a4435770cf57
debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents:
14943
diff
changeset
|
1940 includepat = getattr(ignore, 'includepat', None) |
a4435770cf57
debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents:
14943
diff
changeset
|
1941 if includepat is not None: |
a4435770cf57
debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents:
14943
diff
changeset
|
1942 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
|
1943 else: |
5e57c199848d
debugignore: catch the case when ignore.includepat doesn't exist
jfh <jason@jasonfharris.com>
parents:
13400
diff
changeset
|
1944 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
|
1945 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1946 @command('debugindex', |
14323
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1947 [('c', 'changelog', False, _('open changelog')), |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1948 ('m', 'manifest', False, _('open manifest')), |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1949 ('f', 'format', 0, _('revlog format'), _('FORMAT'))], |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1950 _('[-f FORMAT] -c|-m|FILE')) |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
1951 def debugindex(ui, repo, file_ = None, **opts): |
596 | 1952 """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
|
1953 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
|
1954 format = opts.get('format', 0) |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1955 if format not in (0, 1): |
13470
64ce09e93aff
commands: mark strings for translation
Martin Geisler <mg@aragost.com>
parents:
13454
diff
changeset
|
1956 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
|
1957 |
14254
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1958 generaldelta = r.version & revlog.REVLOGGENERALDELTA |
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1959 if generaldelta: |
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1960 basehdr = ' delta' |
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1961 else: |
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1962 basehdr = ' base' |
12893
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1963 |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1964 if format == 0: |
14254
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1965 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
|
1966 " nodeid p1 p2\n") |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1967 elif format == 1: |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1968 ui.write(" rev flag offset length" |
16683 | 1969 " size " + basehdr + " link p1 p2" |
1970 " nodeid\n") | |
12893
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1971 |
6750
fb42030d79d6
add __len__ and __iter__ methods to repo and revlog
Matt Mackall <mpm@selenic.com>
parents:
6749
diff
changeset
|
1972 for i in r: |
2072 | 1973 node = r.node(i) |
14254
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1974 if generaldelta: |
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1975 base = r.deltaparent(i) |
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1976 else: |
d6a762d93b77
debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents:
14252
diff
changeset
|
1977 base = r.chainbase(i) |
12893
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1978 if format == 0: |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1979 try: |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1980 pp = r.parents(node) |
16689
f366d4c2ff34
cleanup: replace naked excepts with except Exception: ...
Brodie Rao <brodie@sf.io>
parents:
16683
diff
changeset
|
1981 except Exception: |
12893
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1982 pp = [nullid, nullid] |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1983 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
|
1984 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
|
1985 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
|
1986 elif format == 1: |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1987 pr = r.parentrevs(i) |
15ca4bfecfe3
debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents:
12863
diff
changeset
|
1988 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
|
1989 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
|
1990 base, r.linkrev(i), pr[0], pr[1], short(node))) |
248 | 1991 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
1992 @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
|
1993 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
|
1994 """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
|
1995 r = None |
8a0e5b0c0ba9
debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents:
12131
diff
changeset
|
1996 if repo: |
8a0e5b0c0ba9
debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents:
12131
diff
changeset
|
1997 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
|
1998 if len(filelog): |
8a0e5b0c0ba9
debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents:
12131
diff
changeset
|
1999 r = filelog |
8a0e5b0c0ba9
debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents:
12131
diff
changeset
|
2000 if not r: |
13970
d13913355390
move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents:
13965
diff
changeset
|
2001 r = revlog.revlog(scmutil.opener(os.getcwd(), audit=False), file_) |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2002 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
|
2003 for i in r: |
2287
3f18d1eea370
Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents:
2283
diff
changeset
|
2004 node = r.node(i) |
3f18d1eea370
Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents:
2283
diff
changeset
|
2005 pp = r.parents(node) |
3f18d1eea370
Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents:
2283
diff
changeset
|
2006 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
|
2007 if pp[1] != nullid: |
3f18d1eea370
Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents:
2283
diff
changeset
|
2008 ui.write("\t%d -> %d\n" % (r.rev(pp[1]), i)) |
582 | 2009 ui.write("}\n") |
248 | 2010 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2011 @command('debuginstall', [], '') |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2012 def debuginstall(ui): |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2013 '''test Mercurial installation |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2014 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2015 Returns 0 on success. |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2016 ''' |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2017 |
3846
18855084b922
Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents:
3844
diff
changeset
|
2018 def writetemp(contents): |
4849
035489f60842
Use a prefix for debuginstall tempfiles.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4818
diff
changeset
|
2019 (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
|
2020 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
|
2021 f.write(contents) |
18855084b922
Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents:
3844
diff
changeset
|
2022 f.close() |
18855084b922
Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents:
3844
diff
changeset
|
2023 return name |
18855084b922
Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents:
3844
diff
changeset
|
2024 |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2025 problems = 0 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2026 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2027 # encoding |
16934
0c9c41e53f1a
debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents:
16881
diff
changeset
|
2028 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
|
2029 try: |
7948
de377b1a9a84
move encoding bits from util to encoding
Matt Mackall <mpm@selenic.com>
parents:
7942
diff
changeset
|
2030 encoding.fromlocal("test") |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2031 except util.Abort, inst: |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2032 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
|
2033 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
|
2034 problems += 1 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2035 |
17392
bdd248666dbc
debuginstall: show directory for Python lib
Adrian Buehlmann <adrian@cadifra.com>
parents:
17386
diff
changeset
|
2036 # Python lib |
bdd248666dbc
debuginstall: show directory for Python lib
Adrian Buehlmann <adrian@cadifra.com>
parents:
17386
diff
changeset
|
2037 ui.status(_("checking Python lib (%s)...\n") |
bdd248666dbc
debuginstall: show directory for Python lib
Adrian Buehlmann <adrian@cadifra.com>
parents:
17386
diff
changeset
|
2038 % os.path.dirname(os.__file__)) |
bdd248666dbc
debuginstall: show directory for Python lib
Adrian Buehlmann <adrian@cadifra.com>
parents:
17386
diff
changeset
|
2039 |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2040 # compiled modules |
16934
0c9c41e53f1a
debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents:
16881
diff
changeset
|
2041 ui.status(_("checking installed modules (%s)...\n") |
12004
1fe4702fe2df
debuginstall: report installpath
Matt Mackall <mpm@selenic.com>
parents:
11969
diff
changeset
|
2042 % os.path.dirname(__file__)) |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2043 try: |
12004
1fe4702fe2df
debuginstall: report installpath
Matt Mackall <mpm@selenic.com>
parents:
11969
diff
changeset
|
2044 import bdiff, mpatch, base85, osutil |
15223
fc035e5370ca
pyflakes: clean up some import noise
Matt Mackall <mpm@selenic.com>
parents:
15221
diff
changeset
|
2045 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
|
2046 except Exception, inst: |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2047 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
|
2048 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
|
2049 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
|
2050 problems += 1 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2051 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2052 # templates |
15200
797bf1dc1ff8
debuginstall: report the template path
Matt Mackall <mpm@selenic.com>
parents:
15198
diff
changeset
|
2053 import templater |
797bf1dc1ff8
debuginstall: report the template path
Matt Mackall <mpm@selenic.com>
parents:
15198
diff
changeset
|
2054 p = templater.templatepath() |
16934
0c9c41e53f1a
debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents:
16881
diff
changeset
|
2055 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
|
2056 try: |
7874
d812029cda85
cleanup: drop variables for unused return values
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
7850
diff
changeset
|
2057 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
|
2058 except Exception, inst: |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2059 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
|
2060 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
|
2061 problems += 1 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2062 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2063 # editor |
16934
0c9c41e53f1a
debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents:
16881
diff
changeset
|
2064 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
|
2065 editor = ui.geteditor() |
14271
4030630fb59c
rename util.find_exe to findexe
Adrian Buehlmann <adrian@cadifra.com>
parents:
14260
diff
changeset
|
2066 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
|
2067 if not cmdpath: |
3855
b9cdd6f2aa43
debuginstall: fix a copy/paste error
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3848
diff
changeset
|
2068 if editor == 'vi': |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2069 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
|
2070 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
|
2071 " file)\n")) |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2072 else: |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2073 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
|
2074 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
|
2075 " file)\n")) |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2076 problems += 1 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2077 |
3848
8cbf060f637e
Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents:
3846
diff
changeset
|
2078 # check username |
16934
0c9c41e53f1a
debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents:
16881
diff
changeset
|
2079 ui.status(_("checking username...\n")) |
9734
36c388a1aa51
commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents:
9725
diff
changeset
|
2080 try: |
12063
516b000fbb7e
cleanup: remove unused variables
Brodie Rao <brodie@bitheap.org>
parents:
12033
diff
changeset
|
2081 ui.username() |
9734
36c388a1aa51
commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents:
9725
diff
changeset
|
2082 except util.Abort, e: |
36c388a1aa51
commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents:
9725
diff
changeset
|
2083 ui.write(" %s\n" % e) |
12083
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
12067
diff
changeset
|
2084 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
|
2085 problems += 1 |
3848
8cbf060f637e
Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents:
3846
diff
changeset
|
2086 |
3844
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2087 if not problems: |
16934
0c9c41e53f1a
debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents:
16881
diff
changeset
|
2088 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
|
2089 else: |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2090 ui.write(_("%s problems detected," |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2091 " please check your install!\n") % problems) |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2092 |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2093 return problems |
3ba82c3f4bc3
Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents:
3840
diff
changeset
|
2094 |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2095 @command('debugknown', [], _('REPO ID...')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2096 def debugknown(ui, repopath, *ids, **opts): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2097 """test whether node ids are known to a repo |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2098 |
16683 | 2099 Every ID must be a full-length hex node id string. Returns a list of 0s |
2100 and 1s indicating unknown/known. | |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2101 """ |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
2102 repo = hg.peer(ui, opts, repopath) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2103 if not repo.capable('known'): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2104 raise util.Abort("known() not supported by target repository") |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2105 flags = repo.known([bin(s) for s in ids]) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2106 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
|
2107 |
18790
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2108 @command('debuglabelcomplete', [], _('LABEL...')) |
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2109 def debuglabelcomplete(ui, repo, *args): |
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2110 '''complete "labels" - tags, open branch names, bookmark names''' |
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2111 |
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2112 labels = set() |
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2113 labels.update(t[0] for t in repo.tagslist()) |
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2114 labels.update(repo._bookmarks.keys()) |
18892
46c0ca1ef7e1
debuglabelcomplete: compute active branch heads correctly
Bryan O'Sullivan <bryano@fb.com>
parents:
18882
diff
changeset
|
2115 for heads in repo.branchmap().itervalues(): |
46c0ca1ef7e1
debuglabelcomplete: compute active branch heads correctly
Bryan O'Sullivan <bryano@fb.com>
parents:
18882
diff
changeset
|
2116 for h in heads: |
46c0ca1ef7e1
debuglabelcomplete: compute active branch heads correctly
Bryan O'Sullivan <bryano@fb.com>
parents:
18882
diff
changeset
|
2117 ctx = repo[h] |
46c0ca1ef7e1
debuglabelcomplete: compute active branch heads correctly
Bryan O'Sullivan <bryano@fb.com>
parents:
18882
diff
changeset
|
2118 if not ctx.closesbranch(): |
46c0ca1ef7e1
debuglabelcomplete: compute active branch heads correctly
Bryan O'Sullivan <bryano@fb.com>
parents:
18882
diff
changeset
|
2119 labels.add(ctx.branch()) |
18790
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2120 completions = set() |
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2121 if not args: |
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2122 args = [''] |
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2123 for a in args: |
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2124 completions.update(l for l in labels if l.startswith(a)) |
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2125 ui.write('\n'.join(sorted(completions))) |
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2126 ui.write('\n') |
1e28a7f58f33
completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18783
diff
changeset
|
2127 |
17830
1cb51d65453d
debugobsolete: add --flags option
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
17822
diff
changeset
|
2128 @command('debugobsolete', |
1cb51d65453d
debugobsolete: add --flags option
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
17822
diff
changeset
|
2129 [('', 'flags', 0, _('markers flag')), |
1cb51d65453d
debugobsolete: add --flags option
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
17822
diff
changeset
|
2130 ] + commitopts2, |
17074
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2131 _('[OBSOLETED [REPLACEMENT] [REPL... ]')) |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2132 def debugobsolete(ui, repo, precursor=None, *successors, **opts): |
18657
d4a79e075303
debugobsolete: improve command help
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
18479
diff
changeset
|
2133 """create arbitrary obsolete marker |
d4a79e075303
debugobsolete: improve command help
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
18479
diff
changeset
|
2134 |
18854
afab180307be
commands: fix typo in debugobsolete docstring
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
18701
diff
changeset
|
2135 With no arguments, displays the list of obsolescence markers.""" |
17292
8da6fe276a23
debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents:
17266
diff
changeset
|
2136 def parsenodeid(s): |
8da6fe276a23
debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents:
17266
diff
changeset
|
2137 try: |
8da6fe276a23
debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents:
17266
diff
changeset
|
2138 # We do not use revsingle/revrange functions here to accept |
8da6fe276a23
debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents:
17266
diff
changeset
|
2139 # arbitrary node identifiers, possibly not present in the |
8da6fe276a23
debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents:
17266
diff
changeset
|
2140 # local repository. |
8da6fe276a23
debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents:
17266
diff
changeset
|
2141 n = bin(s) |
8da6fe276a23
debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents:
17266
diff
changeset
|
2142 if len(n) != len(nullid): |
8da6fe276a23
debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents:
17266
diff
changeset
|
2143 raise TypeError() |
8da6fe276a23
debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents:
17266
diff
changeset
|
2144 return n |
8da6fe276a23
debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents:
17266
diff
changeset
|
2145 except TypeError: |
8da6fe276a23
debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents:
17266
diff
changeset
|
2146 raise util.Abort('changeset references must be full hexadecimal ' |
8da6fe276a23
debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents:
17266
diff
changeset
|
2147 'node identifiers') |
8da6fe276a23
debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents:
17266
diff
changeset
|
2148 |
17074
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2149 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
|
2150 metadata = {} |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2151 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
|
2152 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
|
2153 metadata['user'] = opts['user'] or ui.username() |
17292
8da6fe276a23
debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents:
17266
diff
changeset
|
2154 succs = tuple(parsenodeid(succ) for succ in successors) |
17074
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2155 l = repo.lock() |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2156 try: |
17126
8fa8717b47b6
obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
17123
diff
changeset
|
2157 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
|
2158 try: |
17830
1cb51d65453d
debugobsolete: add --flags option
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
17822
diff
changeset
|
2159 repo.obsstore.create(tr, parsenodeid(precursor), succs, |
1cb51d65453d
debugobsolete: add --flags option
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
17822
diff
changeset
|
2160 opts['flags'], metadata) |
17126
8fa8717b47b6
obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
17123
diff
changeset
|
2161 tr.close() |
8fa8717b47b6
obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
17123
diff
changeset
|
2162 finally: |
8fa8717b47b6
obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
17123
diff
changeset
|
2163 tr.release() |
17074
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2164 finally: |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2165 l.release() |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2166 else: |
17123
8e030168b09e
debugobsolete: remove spurious ctx from variable name
Matt Mackall <mpm@selenic.com>
parents:
17074
diff
changeset
|
2167 for m in obsolete.allmarkers(repo): |
8e030168b09e
debugobsolete: remove spurious ctx from variable name
Matt Mackall <mpm@selenic.com>
parents:
17074
diff
changeset
|
2168 ui.write(hex(m.precnode())) |
8e030168b09e
debugobsolete: remove spurious ctx from variable name
Matt Mackall <mpm@selenic.com>
parents:
17074
diff
changeset
|
2169 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
|
2170 ui.write(' ') |
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2171 ui.write(hex(repl)) |
17123
8e030168b09e
debugobsolete: remove spurious ctx from variable name
Matt Mackall <mpm@selenic.com>
parents:
17074
diff
changeset
|
2172 ui.write(' %X ' % m._data[2]) |
18254
2dfe519d435d
debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents:
18210
diff
changeset
|
2173 ui.write('{%s}' % (', '.join('%r: %r' % t for t in |
2dfe519d435d
debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents:
18210
diff
changeset
|
2174 sorted(m.metadata().items())))) |
17074
178a2e85d426
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents:
17071
diff
changeset
|
2175 ui.write('\n') |
17071
11f26e2669aa
command: creation of obsolete marker
Pierre-Yves.David@ens-lyon.org
parents:
17059
diff
changeset
|
2176 |
18792
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2177 @command('debugpathcomplete', |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2178 [('f', 'full', None, _('complete an entire path')), |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2179 ('n', 'normal', None, _('show only normal files')), |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2180 ('a', 'added', None, _('show only added files')), |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2181 ('r', 'removed', None, _('show only removed files'))], |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2182 _('FILESPEC...')) |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2183 def debugpathcomplete(ui, repo, *specs, **opts): |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2184 '''complete part or all of a tracked path |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2185 |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2186 This command supports shells that offer path name completion. It |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2187 currently completes only files already known to the dirstate. |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2188 |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2189 Completion extends only to the next path segment unless |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2190 --full is specified, in which case entire paths are used.''' |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2191 |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2192 def complete(path, acceptable): |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2193 dirstate = repo.dirstate |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2194 spec = os.path.normpath(os.path.join(os.getcwd(), path)) |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2195 rootdir = repo.root + os.sep |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2196 if spec != repo.root and not spec.startswith(rootdir): |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2197 return [], [] |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2198 if os.path.isdir(spec): |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2199 spec += '/' |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2200 spec = spec[len(rootdir):] |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2201 fixpaths = os.sep != '/' |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2202 if fixpaths: |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2203 spec = spec.replace(os.sep, '/') |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2204 speclen = len(spec) |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2205 fullpaths = opts['full'] |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2206 files, dirs = set(), set() |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2207 adddir, addfile = dirs.add, files.add |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2208 for f, st in dirstate.iteritems(): |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2209 if f.startswith(spec) and st[0] in acceptable: |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2210 if fixpaths: |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2211 f = f.replace('/', os.sep) |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2212 if fullpaths: |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2213 addfile(f) |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2214 continue |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2215 s = f.find(os.sep, speclen) |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2216 if s >= 0: |
18799
0ed95fe674a8
debugpathcomplete: satisfy the code checker
Bryan O'Sullivan <bryano@fb.com>
parents:
18796
diff
changeset
|
2217 adddir(f[:s + 1]) |
18792
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2218 else: |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2219 addfile(f) |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2220 return files, dirs |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2221 |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2222 acceptable = '' |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2223 if opts['normal']: |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2224 acceptable += 'nm' |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2225 if opts['added']: |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2226 acceptable += 'a' |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2227 if opts['removed']: |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2228 acceptable += 'r' |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2229 cwd = repo.getcwd() |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2230 if not specs: |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2231 specs = ['.'] |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2232 |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2233 files, dirs = set(), set() |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2234 for spec in specs: |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2235 f, d = complete(spec, acceptable or 'nmar') |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2236 files.update(f) |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2237 dirs.update(d) |
18796
fa6d5c62f3bd
pathcomplete: complete directories more conservatively
Bryan O'Sullivan <bryano@fb.com>
parents:
18792
diff
changeset
|
2238 if not files and len(dirs) == 1: |
fa6d5c62f3bd
pathcomplete: complete directories more conservatively
Bryan O'Sullivan <bryano@fb.com>
parents:
18792
diff
changeset
|
2239 # force the shell to consider a completion that matches one |
fa6d5c62f3bd
pathcomplete: complete directories more conservatively
Bryan O'Sullivan <bryano@fb.com>
parents:
18792
diff
changeset
|
2240 # directory and zero files to be ambiguous |
fa6d5c62f3bd
pathcomplete: complete directories more conservatively
Bryan O'Sullivan <bryano@fb.com>
parents:
18792
diff
changeset
|
2241 dirs.add(iter(dirs).next() + '.') |
fa6d5c62f3bd
pathcomplete: complete directories more conservatively
Bryan O'Sullivan <bryano@fb.com>
parents:
18792
diff
changeset
|
2242 files.update(dirs) |
18792
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2243 ui.write('\n'.join(repo.pathto(p, cwd) for p in sorted(files))) |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2244 ui.write('\n') |
10669e24eb6c
completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents:
18790
diff
changeset
|
2245 |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2246 @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
|
2247 def debugpushkey(ui, repopath, namespace, *keyinfo, **opts): |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2248 '''access the pushkey key/value protocol |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2249 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2250 With two args, list the keys in the given namespace. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2251 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2252 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
|
2253 Reports success or failure. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2254 ''' |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2255 |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
2256 target = hg.peer(ui, {}, repopath) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2257 if keyinfo: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2258 key, old, new = keyinfo |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2259 r = target.pushkey(namespace, key, old, new) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2260 ui.status(str(r) + '\n') |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2261 return not r |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2262 else: |
18255
7ca534f31a83
debugpushkey: list keys sorted
Mads Kiilerich <mads at kiilerich.com>
parents:
18254
diff
changeset
|
2263 for k, v in sorted(target.listkeys(namespace).iteritems()): |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2264 ui.write("%s\t%s\n" % (k.encode('string-escape'), |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2265 v.encode('string-escape'))) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2266 |
16249 | 2267 @command('debugpvec', [], _('A B')) |
2268 def debugpvec(ui, repo, a, b=None): | |
2269 ca = scmutil.revsingle(repo, a) | |
2270 cb = scmutil.revsingle(repo, b) | |
2271 pa = pvec.ctxpvec(ca) | |
2272 pb = pvec.ctxpvec(cb) | |
2273 if pa == pb: | |
2274 rel = "=" | |
2275 elif pa > pb: | |
2276 rel = ">" | |
2277 elif pa < pb: | |
2278 rel = "<" | |
2279 elif pa | pb: | |
2280 rel = "|" | |
2281 ui.write(_("a: %s\n") % pa) | |
2282 ui.write(_("b: %s\n") % pb) | |
2283 ui.write(_("depth(a): %d depth(b): %d\n") % (pa._depth, pb._depth)) | |
2284 ui.write(_("delta: %d hdist: %d distance: %d relation: %s\n") % | |
2285 (abs(pa._depth - pb._depth), pvec._hamming(pa._vec, pb._vec), | |
2286 pa.distance(pb), rel)) | |
2287 | |
18963
c31b8dc9de67
debugrebuildstate: rename to debugrebuilddirstate
Mads Kiilerich <madski@unity3d.com>
parents:
18962
diff
changeset
|
2288 @command('debugrebuilddirstate|debugrebuildstate', |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2289 [('r', 'rev', '', _('revision to rebuild to'), _('REV'))], |
18961
cd1ac2e54847
debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents:
18956
diff
changeset
|
2290 _('[-r REV]')) |
18963
c31b8dc9de67
debugrebuildstate: rename to debugrebuilddirstate
Mads Kiilerich <madski@unity3d.com>
parents:
18962
diff
changeset
|
2291 def debugrebuilddirstate(ui, repo, rev): |
18961
cd1ac2e54847
debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents:
18956
diff
changeset
|
2292 """rebuild the dirstate as it would look like for the given revision |
cd1ac2e54847
debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents:
18956
diff
changeset
|
2293 |
cd1ac2e54847
debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents:
18956
diff
changeset
|
2294 If no revision is specified the first current parent will be used. |
cd1ac2e54847
debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents:
18956
diff
changeset
|
2295 |
cd1ac2e54847
debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents:
18956
diff
changeset
|
2296 The dirstate will be set to the files of the given revision. |
cd1ac2e54847
debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents:
18956
diff
changeset
|
2297 The actual working directory content or existing dirstate |
cd1ac2e54847
debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents:
18956
diff
changeset
|
2298 information such as adds or removes is not considered. |
cd1ac2e54847
debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents:
18956
diff
changeset
|
2299 |
cd1ac2e54847
debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents:
18956
diff
changeset
|
2300 One use of this command is to make the next :hg:`status` invocation |
cd1ac2e54847
debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents:
18956
diff
changeset
|
2301 check the actual file content. |
cd1ac2e54847
debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents:
18956
diff
changeset
|
2302 """ |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
2303 ctx = scmutil.revsingle(repo, rev) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2304 wlock = repo.wlock() |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2305 try: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2306 repo.dirstate.rebuild(ctx.node(), ctx.manifest()) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2307 finally: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2308 wlock.release() |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2309 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2310 @command('debugrename', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2311 [('r', 'rev', '', _('revision to debug'), _('REV'))], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2312 _('[-r REV] FILE')) |
3652 | 2313 def debugrename(ui, repo, file1, *pats, **opts): |
1194
c165cbf56bb1
Add doc string for debugrename.
bos@serpentine.internal.keyresearch.com
parents:
1193
diff
changeset
|
2314 """dump rename information""" |
3652 | 2315 |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
2316 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
|
2317 m = scmutil.match(ctx, (file1,) + pats, opts) |
6764 | 2318 for abs in ctx.walk(m): |
2319 fctx = ctx[abs] | |
6579
0159b7a36184
walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents:
6578
diff
changeset
|
2320 o = fctx.filelog().renamed(fctx.filenode()) |
6584
29c77e5dfb3c
walk: remove rel and exact returns
Matt Mackall <mpm@selenic.com>
parents:
6583
diff
changeset
|
2321 rel = m.rel(abs) |
6579
0159b7a36184
walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents:
6578
diff
changeset
|
2322 if o: |
0159b7a36184
walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents:
6578
diff
changeset
|
2323 ui.write(_("%s renamed from %s:%s\n") % (rel, o[0], hex(o[1]))) |
3652 | 2324 else: |
2325 ui.write(_("%s not renamed\n") % rel) | |
1116 | 2326 |
14323
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
2327 @command('debugrevlog', |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
2328 [('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
|
2329 ('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
|
2330 ('d', 'dump', False, _('dump index data'))], |
14323
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
2331 _('-c|-m|FILE')) |
a79fea6b3e77
debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents:
14322
diff
changeset
|
2332 def debugrevlog(ui, repo, file_ = None, **opts): |
14304 | 2333 """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
|
2334 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
|
2335 |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2336 if opts.get("dump"): |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2337 numrevs = len(r) |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2338 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
|
2339 " 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
|
2340 ts = 0 |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2341 heads = set() |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2342 for rev in xrange(numrevs): |
14371 | 2343 dbase = r.deltaparent(rev) |
2344 if dbase == -1: | |
2345 dbase = rev | |
14326
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2346 cbase = r.chainbase(rev) |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2347 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
|
2348 rs = r.rawsize(rev) |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2349 ts = ts + rs |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2350 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
|
2351 heads.add(rev) |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2352 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
|
2353 (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
|
2354 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
|
2355 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
|
2356 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
|
2357 return 0 |
6078a99af433
debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents:
14323
diff
changeset
|
2358 |
14304 | 2359 v = r.version |
2360 format = v & 0xFFFF | |
2361 flags = [] | |
2362 gdelta = False | |
2363 if v & revlog.REVLOGNGINLINEDATA: | |
2364 flags.append('inline') | |
2365 if v & revlog.REVLOGGENERALDELTA: | |
2366 gdelta = True | |
2367 flags.append('generaldelta') | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2368 if not flags: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2369 flags = ['(none)'] |
14304 | 2370 |
2371 nummerges = 0 | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2372 numfull = 0 |
14304 | 2373 numprev = 0 |
2374 nump1 = 0 | |
2375 nump2 = 0 | |
2376 numother = 0 | |
2377 nump1prev = 0 | |
2378 nump2prev = 0 | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2379 chainlengths = [] |
14304 | 2380 |
2381 datasize = [None, 0, 0L] | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2382 fullsize = [None, 0, 0L] |
14304 | 2383 deltasize = [None, 0, 0L] |
2384 | |
2385 def addsize(size, l): | |
2386 if l[0] is None or size < l[0]: | |
2387 l[0] = size | |
2388 if size > l[1]: | |
2389 l[1] = size | |
2390 l[2] += size | |
2391 | |
2392 numrevs = len(r) | |
2393 for rev in xrange(numrevs): | |
2394 p1, p2 = r.parentrevs(rev) | |
2395 delta = r.deltaparent(rev) | |
2396 if format > 0: | |
2397 addsize(r.rawsize(rev), datasize) | |
2398 if p2 != nullrev: | |
2399 nummerges += 1 | |
2400 size = r.length(rev) | |
2401 if delta == nullrev: | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2402 chainlengths.append(0) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2403 numfull += 1 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2404 addsize(size, fullsize) |
14304 | 2405 else: |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2406 chainlengths.append(chainlengths[delta] + 1) |
14304 | 2407 addsize(size, deltasize) |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2408 if delta == rev - 1: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2409 numprev += 1 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2410 if delta == p1: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2411 nump1prev += 1 |
14304 | 2412 elif delta == p2: |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2413 nump2prev += 1 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2414 elif delta == p1: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2415 nump1 += 1 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2416 elif delta == p2: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2417 nump2 += 1 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2418 elif delta != nullrev: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2419 numother += 1 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2420 |
17188
76e55914c303
debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents:
17182
diff
changeset
|
2421 # Adjust size min value for empty cases |
76e55914c303
debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents:
17182
diff
changeset
|
2422 for size in (datasize, fullsize, deltasize): |
76e55914c303
debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents:
17182
diff
changeset
|
2423 if size[0] is None: |
76e55914c303
debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents:
17182
diff
changeset
|
2424 size[0] = 0 |
76e55914c303
debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents:
17182
diff
changeset
|
2425 |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2426 numdeltas = numrevs - numfull |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2427 numoprev = numprev - nump1prev - nump2prev |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2428 totalrawsize = datasize[2] |
14304 | 2429 datasize[2] /= numrevs |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2430 fulltotal = fullsize[2] |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2431 fullsize[2] /= numfull |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2432 deltatotal = deltasize[2] |
17188
76e55914c303
debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents:
17182
diff
changeset
|
2433 if numrevs - numfull > 0: |
76e55914c303
debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents:
17182
diff
changeset
|
2434 deltasize[2] /= numrevs - numfull |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2435 totalsize = fulltotal + deltatotal |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2436 avgchainlen = sum(chainlengths) / numrevs |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2437 compratio = totalrawsize / totalsize |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2438 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2439 basedfmtstr = '%%%dd\n' |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2440 basepcfmtstr = '%%%dd %s(%%5.2f%%%%)\n' |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2441 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2442 def dfmtstr(max): |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2443 return basedfmtstr % len(str(max)) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2444 def pcfmtstr(max, padding=0): |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2445 return basepcfmtstr % (len(str(max)), ' ' * padding) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2446 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2447 def pcfmt(value, total): |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2448 return (value, 100 * float(value) / total) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2449 |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2450 ui.write(('format : %d\n') % format) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2451 ui.write(('flags : %s\n') % ', '.join(flags)) |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2452 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2453 ui.write('\n') |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2454 fmt = pcfmtstr(totalsize) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2455 fmt2 = dfmtstr(totalsize) |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2456 ui.write(('revisions : ') + fmt2 % numrevs) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2457 ui.write((' merges : ') + fmt % pcfmt(nummerges, numrevs)) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2458 ui.write((' normal : ') + fmt % pcfmt(numrevs - nummerges, numrevs)) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2459 ui.write(('revisions : ') + fmt2 % numrevs) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2460 ui.write((' full : ') + fmt % pcfmt(numfull, numrevs)) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2461 ui.write((' deltas : ') + fmt % pcfmt(numdeltas, numrevs)) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2462 ui.write(('revision size : ') + fmt2 % totalsize) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2463 ui.write((' full : ') + fmt % pcfmt(fulltotal, totalsize)) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2464 ui.write((' deltas : ') + fmt % pcfmt(deltatotal, totalsize)) |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2465 |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2466 ui.write('\n') |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2467 fmt = dfmtstr(max(avgchainlen, compratio)) |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2468 ui.write(('avg chain length : ') + fmt % avgchainlen) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2469 ui.write(('compression ratio : ') + fmt % compratio) |
14304 | 2470 |
2471 if format > 0: | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2472 ui.write('\n') |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2473 ui.write(('uncompressed data size (min/max/avg) : %d / %d / %d\n') |
14304 | 2474 % tuple(datasize)) |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2475 ui.write(('full revision size (min/max/avg) : %d / %d / %d\n') |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2476 % tuple(fullsize)) |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2477 ui.write(('delta size (min/max/avg) : %d / %d / %d\n') |
14304 | 2478 % tuple(deltasize)) |
2479 | |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2480 if numdeltas > 0: |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2481 ui.write('\n') |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2482 fmt = pcfmtstr(numdeltas) |
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2483 fmt2 = pcfmtstr(numdeltas, 4) |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2484 ui.write(('deltas against prev : ') + fmt % pcfmt(numprev, numdeltas)) |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2485 if numprev > 0: |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2486 ui.write((' where prev = p1 : ') + fmt2 % pcfmt(nump1prev, |
16683 | 2487 numprev)) |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2488 ui.write((' where prev = p2 : ') + fmt2 % pcfmt(nump2prev, |
16683 | 2489 numprev)) |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2490 ui.write((' other : ') + fmt2 % pcfmt(numoprev, |
16683 | 2491 numprev)) |
14305
32a548776b65
debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents:
14304
diff
changeset
|
2492 if gdelta: |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2493 ui.write(('deltas against p1 : ') |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2494 + fmt % pcfmt(nump1, numdeltas)) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2495 ui.write(('deltas against p2 : ') |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2496 + fmt % pcfmt(nump2, numdeltas)) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2497 ui.write(('deltas against other : ') + fmt % pcfmt(numother, |
16683 | 2498 numdeltas)) |
14304 | 2499 |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2500 @command('debugrevspec', [], ('REVSPEC')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2501 def debugrevspec(ui, repo, expr): |
16104
5535e66b3016
debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents:
16097
diff
changeset
|
2502 """parse and apply a revision specification |
5535e66b3016
debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents:
16097
diff
changeset
|
2503 |
5535e66b3016
debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents:
16097
diff
changeset
|
2504 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
|
2505 expansion. |
5535e66b3016
debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents:
16097
diff
changeset
|
2506 """ |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2507 if ui.verbose: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2508 tree = revset.parse(expr)[0] |
16218
81a1a00f5738
debugrevspec: pretty print output
Patrick Mezard <patrick@mezard.eu>
parents:
16192
diff
changeset
|
2509 ui.note(revset.prettyformat(tree), "\n") |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2510 newtree = revset.findaliases(ui, tree) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2511 if newtree != tree: |
16218
81a1a00f5738
debugrevspec: pretty print output
Patrick Mezard <patrick@mezard.eu>
parents:
16192
diff
changeset
|
2512 ui.note(revset.prettyformat(newtree), "\n") |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2513 func = revset.match(ui, expr) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2514 for c in func(repo, range(len(repo))): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2515 ui.write("%s\n" % c) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2516 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2517 @command('debugsetparents', [], _('REV1 [REV2]')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2518 def debugsetparents(ui, repo, rev1, rev2=None): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2519 """manually set the parents of the current working directory |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2520 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2521 This is useful for writing repository conversion tools, but should |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2522 be used with care. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2523 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2524 Returns 0 on success. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2525 """ |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2526 |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
2527 r1 = scmutil.revsingle(repo, rev1).node() |
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
2528 r2 = scmutil.revsingle(repo, rev2, 'null').node() |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2529 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2530 wlock = repo.wlock() |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2531 try: |
16551
ebf6d38c9063
localrepo: add setparents() to adjust dirstate copies (issue3407)
Patrick Mezard <patrick@mezard.eu>
parents:
16505
diff
changeset
|
2532 repo.setparents(r1, r2) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2533 finally: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2534 wlock.release() |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2535 |
18962
c0b2cb62067f
debugstate: rename to debugdirstate
Mads Kiilerich <madski@unity3d.com>
parents:
18961
diff
changeset
|
2536 @command('debugdirstate|debugstate', |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2537 [('', 'nodates', None, _('do not display the saved mtime')), |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2538 ('', 'datesort', None, _('sort by saved mtime'))], |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2539 _('[OPTION]...')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2540 def debugstate(ui, repo, nodates=None, datesort=None): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2541 """show the contents of the current dirstate""" |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2542 timestr = "" |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2543 showdate = not nodates |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2544 if datesort: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2545 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
|
2546 else: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2547 keyfunc = None # sort by filename |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2548 for file_, ent in sorted(repo.dirstate._map.iteritems(), key=keyfunc): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2549 if showdate: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2550 if ent[3] == -1: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2551 # Pad or slice to locale representation |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2552 locale_len = len(time.strftime("%Y-%m-%d %H:%M:%S ", |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2553 time.localtime(0))) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2554 timestr = 'unset' |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2555 timestr = (timestr[:locale_len] + |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2556 ' ' * (locale_len - len(timestr))) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2557 else: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2558 timestr = time.strftime("%Y-%m-%d %H:%M:%S ", |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2559 time.localtime(ent[3])) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2560 if ent[1] & 020000: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2561 mode = 'lnk' |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2562 else: |
15440
9ab2b3b730ee
windows: use umask 022 in debugstate output
Mads Kiilerich <mads@kiilerich.com>
parents:
15424
diff
changeset
|
2563 mode = '%3o' % (ent[1] & 0777 & ~util.umask) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2564 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
|
2565 for f in repo.dirstate.copies(): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2566 ui.write(_("copy: %s -> %s\n") % (repo.dirstate.copied(f), f)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2567 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2568 @command('debugsub', |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2569 [('r', 'rev', '', |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2570 _('revision to check'), _('REV'))], |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2571 _('[-r REV] [REV]')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2572 def debugsub(ui, repo, rev=None): |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
2573 ctx = scmutil.revsingle(repo, rev, None) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2574 for k, v in sorted(ctx.substate.items()): |
17956
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2575 ui.write(('path %s\n') % k) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2576 ui.write((' source %s\n') % v[0]) |
a08775ec89f2
i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents:
17950
diff
changeset
|
2577 ui.write((' revision %s\n') % v[1]) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2578 |
18068
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2579 @command('debugsuccessorssets', |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2580 [], |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2581 _('[REV]')) |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2582 def debugsuccessorssets(ui, repo, *revs): |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2583 """show set of successors for revision |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2584 |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2585 A successors set of changeset A is a consistent group of revisions that |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2586 succeed A. It contains non-obsolete changesets only. |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2587 |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2588 In most cases a changeset A has a single successors set containing a single |
18458
9354a8c1bded
debugsuccessorssets: fix typos in docstring
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
18386
diff
changeset
|
2589 successor (changeset A replaced by A'). |
18068
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2590 |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2591 A changeset that is made obsolete with no successors are called "pruned". |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2592 Such changesets have no successors sets at all. |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2593 |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2594 A changeset that has been "split" will have a successors set containing |
18458
9354a8c1bded
debugsuccessorssets: fix typos in docstring
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
18386
diff
changeset
|
2595 more than one successor. |
18068
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2596 |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2597 A changeset that has been rewritten in multiple different ways is called |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2598 "divergent". Such changesets have multiple successor sets (each of which |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2599 may also be split, i.e. have multiple successors). |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2600 |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2601 Results are displayed as follows:: |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2602 |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2603 <rev1> |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2604 <successors-1A> |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2605 <rev2> |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2606 <successors-2A> |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2607 <successors-2B1> <successors-2B2> <successors-2B3> |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2608 |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2609 Here rev2 has two possible (i.e. divergent) successors sets. The first |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2610 holds one element, whereas the second holds three (i.e. the changeset has |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2611 been split). |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2612 """ |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2613 # passed to successorssets caching computation from one call to another |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2614 cache = {} |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2615 ctx2str = str |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2616 node2str = short |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2617 if ui.debug(): |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2618 def ctx2str(ctx): |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2619 return ctx.hex() |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2620 node2str = hex |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2621 for rev in scmutil.revrange(repo, revs): |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2622 ctx = repo[rev] |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2623 ui.write('%s\n'% ctx2str(ctx)) |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2624 for succsset in obsolete.successorssets(repo, ctx.node(), cache): |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2625 if succsset: |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2626 ui.write(' ') |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2627 ui.write(node2str(succsset[0])) |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2628 for node in succsset[1:]: |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2629 ui.write(' ') |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2630 ui.write(node2str(node)) |
4bec77e62c00
obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18053
diff
changeset
|
2631 ui.write('\n') |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
2632 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2633 @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
|
2634 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
|
2635 """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
|
2636 m = scmutil.match(repo[None], pats, opts) |
6585 | 2637 items = list(repo.walk(m)) |
1065
6e94c0365d98
Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1062
diff
changeset
|
2638 if not items: |
6e94c0365d98
Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1062
diff
changeset
|
2639 return |
16953
634ad0b24ba2
debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents:
16949
diff
changeset
|
2640 f = lambda fn: fn |
634ad0b24ba2
debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents:
16949
diff
changeset
|
2641 if ui.configbool('ui', 'slash') and os.sep != '/': |
634ad0b24ba2
debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents:
16949
diff
changeset
|
2642 f = lambda fn: util.normpath(fn) |
6586
d3463007d368
walk: return a single value
Matt Mackall <mpm@selenic.com>
parents:
6585
diff
changeset
|
2643 fmt = 'f %%-%ds %%-%ds %%s' % ( |
d3463007d368
walk: return a single value
Matt Mackall <mpm@selenic.com>
parents:
6585
diff
changeset
|
2644 max([len(abs) for abs in items]), |
d3463007d368
walk: return a single value
Matt Mackall <mpm@selenic.com>
parents:
6585
diff
changeset
|
2645 max([len(m.rel(abs)) for abs in items])) |
d3463007d368
walk: return a single value
Matt Mackall <mpm@selenic.com>
parents:
6585
diff
changeset
|
2646 for abs in items: |
16953
634ad0b24ba2
debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents:
16949
diff
changeset
|
2647 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
|
2648 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
|
2649 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2650 @command('debugwireargs', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2651 [('', 'three', '', 'three'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2652 ('', 'four', '', 'four'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2653 ('', 'five', '', 'five'), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2654 ] + remoteopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2655 _('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
|
2656 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
|
2657 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
|
2658 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
|
2659 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
|
2660 args = {} |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2661 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
|
2662 if v: |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2663 args[k] = v |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2664 # 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
|
2665 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
|
2666 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
|
2667 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
|
2668 if res1 != res2: |
9c4e04fe267e
debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13697
diff
changeset
|
2669 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
|
2670 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2671 @command('^diff', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2672 [('r', 'rev', [], _('revision'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2673 ('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
|
2674 ] + diffopts + diffopts2 + walkopts + subrepoopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2675 _('[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
|
2676 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
|
2677 """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
|
2678 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2679 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
|
2680 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2681 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
|
2682 |
12389 | 2683 .. note:: |
2684 diff may generate unexpected results for merges, as it will | |
2685 default to comparing against the working directory's first | |
2686 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
|
2687 |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2688 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
|
2689 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
|
2690 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
|
2691 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
|
2692 to its parent. |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2693 |
10527
9c0ba837dc65
commands: correct diff -c explanation
timeless <timeless@mozdev.org>
parents:
10520
diff
changeset
|
2694 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
|
2695 the changes in that changeset relative to its first parent. |
10520 | 2696 |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2697 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
|
2698 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
|
2699 anyway, probably with undesirable results. |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2700 |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2701 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
|
2702 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
|
2703 |
15110 | 2704 .. container:: verbose |
2705 | |
2706 Examples: | |
2707 | |
2708 - compare a file in the current working directory to its parent:: | |
2709 | |
2710 hg diff foo.c | |
2711 | |
2712 - compare two historical versions of a directory, with rename info:: | |
2713 | |
2714 hg diff --git -r 1.0:1.2 lib/ | |
2715 | |
2716 - get change stats relative to the last change on some date:: | |
2717 | |
2718 hg diff --stat -r "date('may 2')" | |
2719 | |
2720 - diff all newly-added files that contain a keyword:: | |
2721 | |
2722 hg diff "set:added() and grep(GNU)" | |
2723 | |
2724 - compare a revision and its parents:: | |
2725 | |
2726 hg diff -c 9353 # compare against first parent | |
2727 hg diff -r 9353^:9353 # same using revset syntax | |
2728 hg diff -r 9353^2:9353 # compare against the second parent | |
2729 | |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2730 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2731 """ |
7628
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2732 |
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2733 revs = opts.get('rev') |
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2734 change = opts.get('change') |
9640
9e76232fbfbe
diff: add --stat for diffstat output
Brodie Rao <me+hg@dackz.net>
parents:
9636
diff
changeset
|
2735 stat = opts.get('stat') |
9857
24bc6e414610
diff: change --inverse to --reverse
Martin Geisler <mg@lazybytes.net>
parents:
9839
diff
changeset
|
2736 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
|
2737 |
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2738 if revs and change: |
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2739 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
|
2740 raise util.Abort(msg) |
9c6ae2e09e11
diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents:
7622
diff
changeset
|
2741 elif change: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
2742 node2 = scmutil.revsingle(repo, change, None).node() |
13878
a8d13ee0ce68
misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents:
13855
diff
changeset
|
2743 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
|
2744 else: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
2745 node1, node2 = scmutil.revpair(repo, revs) |
245 | 2746 |
9857
24bc6e414610
diff: change --inverse to --reverse
Martin Geisler <mg@lazybytes.net>
parents:
9839
diff
changeset
|
2747 if reverse: |
9725
3f522d2fa633
diff: add --inverse option
Yannick Gingras <ygingras@ygingras.net>
parents:
9718
diff
changeset
|
2748 node1, node2 = node2, node1 |
3f522d2fa633
diff: add --inverse option
Yannick Gingras <ygingras@ygingras.net>
parents:
9718
diff
changeset
|
2749 |
9642
7d17794f08a9
diffstat: with --git, mark binary files with Bin
Brodie Rao <me+hg@dackz.net>
parents:
9640
diff
changeset
|
2750 diffopts = patch.diffopts(ui, opts) |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
2751 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
|
2752 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
|
2753 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
|
2754 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2755 @command('^export', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2756 [('o', 'output', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2757 _('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
|
2758 ('', '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
|
2759 ('r', 'rev', [], _('revisions to export'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2760 ] + diffopts, |
18956
1a9ad84583ee
export: export working directory parent by default
Mads Kiilerich <mads@kiilerich.com>
parents:
18955
diff
changeset
|
2761 _('[OPTION]... [-o OUTFILESPEC] [-r] [REV]...')) |
580 | 2762 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
|
2763 """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
|
2764 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2765 Print the changeset header and diffs for one or more revisions. |
18956
1a9ad84583ee
export: export working directory parent by default
Mads Kiilerich <mads@kiilerich.com>
parents:
18955
diff
changeset
|
2766 If no revision is given, the parent of the working directory is used. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2767 |
10334
3d75c691b77d
commands: fix the list of changeset header information in 'hg help export'
Steve Losh <steve@stevelosh.com>
parents:
10331
diff
changeset
|
2768 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
|
2769 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
|
2770 comment. |
3822
28134d82db9b
Add notes about diff/merge asymmetry to export, diff, and log
Matt Mackall <mpm@selenic.com>
parents:
3815
diff
changeset
|
2771 |
12390
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
2772 .. note:: |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
2773 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
|
2774 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
|
2775 first parent only. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2776 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2777 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
|
2778 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
|
2779 |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
2780 :``%%``: literal "%" character |
11718
3e979f47a4c9
help: fix bytes/digit confusion for hashes
Matt Mackall <mpm@selenic.com>
parents:
11697
diff
changeset
|
2781 :``%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
|
2782 :``%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
|
2783 :``%R``: changeset revision number |
4322e39bd525
commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9891
diff
changeset
|
2784 :``%b``: basename of the exporting repository |
11718
3e979f47a4c9
help: fix bytes/digit confusion for hashes
Matt Mackall <mpm@selenic.com>
parents:
11697
diff
changeset
|
2785 :``%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
|
2786 :``%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
|
2787 :``%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
|
2788 :``%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
|
2789 |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2790 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
|
2791 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
|
2792 diff anyway, probably with undesirable results. |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2793 |
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
2794 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
|
2795 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
|
2796 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
2797 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
|
2798 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
|
2799 |
15111 | 2800 .. container:: verbose |
2801 | |
2802 Examples: | |
2803 | |
2804 - use export and import to transplant a bugfix to the current | |
2805 branch:: | |
2806 | |
2807 hg export -r 9353 | hg import - | |
2808 | |
2809 - export all the changesets between two revisions to a file with | |
2810 rename information:: | |
2811 | |
2812 hg export --git -r 123:150 > changes.txt | |
2813 | |
2814 - split outgoing changes into a series of patches with | |
2815 descriptive names:: | |
2816 | |
2817 hg export -r "outgoing()" -o "%n-%m.patch" | |
2818 | |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2819 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
2820 """ |
10015
b5f352f33520
commands.export: accept -r option as revision specification
Alexander Solovyov <piranha@piranha.org.ua>
parents:
10014
diff
changeset
|
2821 changesets += tuple(opts.get('rev', [])) |
18956
1a9ad84583ee
export: export working directory parent by default
Mads Kiilerich <mads@kiilerich.com>
parents:
18955
diff
changeset
|
2822 if not changesets: |
1a9ad84583ee
export: export working directory parent by default
Mads Kiilerich <mads@kiilerich.com>
parents:
18955
diff
changeset
|
2823 changesets = ['.'] |
16357
8ca7187d479f
export: catch exporting empty revsets (issue3353)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16231
diff
changeset
|
2824 revs = scmutil.revrange(repo, changesets) |
8ca7187d479f
export: catch exporting empty revsets (issue3353)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16231
diff
changeset
|
2825 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
|
2826 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
|
2827 if len(revs) > 1: |
4ec58b157265
refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2871
diff
changeset
|
2828 ui.note(_('exporting patches:\n')) |
4ec58b157265
refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2871
diff
changeset
|
2829 else: |
4ec58b157265
refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2871
diff
changeset
|
2830 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
|
2831 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
|
2832 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
|
2833 opts=patch.diffopts(ui, opts)) |
246
96cde50a746f
Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents:
245
diff
changeset
|
2834 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
2835 @command('^forget', walkopts, _('[OPTION]... FILE...')) |
8902
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2836 def forget(ui, repo, *pats, **opts): |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2837 """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
|
2838 |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2839 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
|
2840 after the next commit. |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2841 |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2842 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
|
2843 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
|
2844 working directory. |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2845 |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
2846 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
|
2847 |
15118 | 2848 .. container:: verbose |
2849 | |
2850 Examples: | |
2851 | |
2852 - forget newly-added binary files:: | |
2853 | |
2854 hg forget "set:added() and binary()" | |
2855 | |
2856 - forget files that would be excluded by .hgignore:: | |
2857 | |
2858 hg forget "set:hgignore()" | |
2859 | |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
2860 Returns 0 on success. |
8902
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2861 """ |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2862 |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2863 if not pats: |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2864 raise util.Abort(_('no files specified')) |
b9a8b616521d
Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents:
8879
diff
changeset
|
2865 |
15912
2bd54ffaa27e
forget: fix subrepo recursion for explicit path handling
David M. Carr <david@carrclan.us>
parents:
15911
diff
changeset
|
2866 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
|
2867 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
|
2868 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
|
2869 |
15240
bfb93963bb39
graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents:
15239
diff
changeset
|
2870 @command( |
bfb93963bb39
graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents:
15239
diff
changeset
|
2871 'graft', |
16992
55e7f352b1d3
graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16991
diff
changeset
|
2872 [('r', 'rev', [], _('revisions to graft'), _('REV')), |
55e7f352b1d3
graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16991
diff
changeset
|
2873 ('c', 'continue', False, _('resume interrupted graft')), |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2874 ('e', 'edit', False, _('invoke editor on commit messages')), |
16660
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2875 ('', 'log', None, _('append graft info to log message')), |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2876 ('D', 'currentdate', False, |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2877 _('record the current date as commit date')), |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2878 ('U', 'currentuser', False, |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2879 _('record the current user as committer'), _('DATE'))] |
16389
79fecd735d26
graft: add --dry-run support (issue3362)
Matt Mackall <mpm@selenic.com>
parents:
16373
diff
changeset
|
2880 + commitopts2 + mergetoolopts + dryrunopts, |
16992
55e7f352b1d3
graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16991
diff
changeset
|
2881 _('[OPTION]... [-r] REV...')) |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2882 def graft(ui, repo, *revs, **opts): |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2883 '''copy changes from other branches onto the current branch |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2884 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2885 This command uses Mercurial's merge logic to copy individual |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2886 changes from other branches without merging branches in the |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2887 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
|
2888 '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
|
2889 description from the source changesets. |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2890 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2891 Changesets that are ancestors of the current revision, that have |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2892 already been grafted, or that are merges will be skipped. |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2893 |
16660
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2894 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
|
2895 of the form:: |
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2896 |
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2897 (grafted from CHANGESETHASH) |
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
2898 |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2899 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
|
2900 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
|
2901 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
|
2902 continued with the -c/--continue option. |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2903 |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2904 .. note:: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2905 The -c/--continue option does not reapply earlier options. |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2906 |
15242
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2907 .. container:: verbose |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2908 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2909 Examples: |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2910 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2911 - 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
|
2912 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2913 hg update stable |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2914 hg graft --edit 9393 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2915 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2916 - 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
|
2917 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2918 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
|
2919 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2920 - continue a graft after resolving conflicts:: |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2921 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2922 hg graft -c |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2923 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2924 - 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
|
2925 |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2926 hg log --debug -r tip |
dac2edce4e4a
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents:
15241
diff
changeset
|
2927 |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2928 Returns 0 on successful completion. |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2929 ''' |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2930 |
16992
55e7f352b1d3
graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16991
diff
changeset
|
2931 revs = list(revs) |
55e7f352b1d3
graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16991
diff
changeset
|
2932 revs.extend(opts['rev']) |
55e7f352b1d3
graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16991
diff
changeset
|
2933 |
15240
bfb93963bb39
graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents:
15239
diff
changeset
|
2934 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
|
2935 opts['user'] = ui.username() |
bfb93963bb39
graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents:
15239
diff
changeset
|
2936 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
|
2937 opts['date'] = "%d %d" % util.makedate() |
bfb93963bb39
graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents:
15239
diff
changeset
|
2938 |
15239 | 2939 editor = None |
2940 if opts.get('edit'): | |
2941 editor = cmdutil.commitforceeditor | |
2942 | |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2943 cont = False |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2944 if opts['continue']: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2945 cont = True |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2946 if revs: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2947 raise util.Abort(_("can't specify --continue and revisions")) |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2948 # read in unfinished revisions |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2949 try: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2950 nodes = repo.opener.read('graftstate').splitlines() |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2951 revs = [repo[node].rev() for node in nodes] |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2952 except IOError, inst: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2953 if inst.errno != errno.ENOENT: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2954 raise |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2955 raise util.Abort(_("no graft state found, can't continue")) |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2956 else: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2957 cmdutil.bailifchanged(repo) |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2958 if not revs: |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2959 raise util.Abort(_('no revisions specified')) |
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
2960 revs = scmutil.revrange(repo, revs) |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2961 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2962 # check for merges |
15404
c1eb8398fe82
localrepo: convert various repo.set() users to repo.revs()
Matt Mackall <mpm@selenic.com>
parents:
15381
diff
changeset
|
2963 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
|
2964 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
|
2965 revs.remove(rev) |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2966 if not revs: |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2967 return -1 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2968 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2969 # check for ancestors of dest branch |
18881
177774e4b04a
graft: find ancestors of destination lazily
Siddharth Agarwal <sid0@fb.com>
parents:
18858
diff
changeset
|
2970 crev = repo['.'].rev() |
177774e4b04a
graft: find ancestors of destination lazily
Siddharth Agarwal <sid0@fb.com>
parents:
18858
diff
changeset
|
2971 ancestors = repo.changelog.ancestors([crev], inclusive=True) |
177774e4b04a
graft: find ancestors of destination lazily
Siddharth Agarwal <sid0@fb.com>
parents:
18858
diff
changeset
|
2972 # don't mutate while iterating, create a copy |
177774e4b04a
graft: find ancestors of destination lazily
Siddharth Agarwal <sid0@fb.com>
parents:
18858
diff
changeset
|
2973 for rev in list(revs): |
177774e4b04a
graft: find ancestors of destination lazily
Siddharth Agarwal <sid0@fb.com>
parents:
18858
diff
changeset
|
2974 if rev in ancestors: |
177774e4b04a
graft: find ancestors of destination lazily
Siddharth Agarwal <sid0@fb.com>
parents:
18858
diff
changeset
|
2975 ui.warn(_('skipping ancestor revision %s\n') % rev) |
177774e4b04a
graft: find ancestors of destination lazily
Siddharth Agarwal <sid0@fb.com>
parents:
18858
diff
changeset
|
2976 revs.remove(rev) |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2977 if not revs: |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2978 return -1 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2979 |
15508
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2980 # 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
|
2981 ids = {} |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2982 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
|
2983 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
|
2984 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
|
2985 if n: |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2986 ids[n] = ctx.rev() |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2987 |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2988 # check ancestors for earlier grafts |
15359
a5a8adf95e51
graft: fix duplicate scan message
Matt Mackall <mpm@selenic.com>
parents:
15357
diff
changeset
|
2989 ui.debug('scanning for duplicate grafts\n') |
18882
ce8c169a0dec
graft: use missing ancestors algorithm to find earlier grafts
Siddharth Agarwal <sid0@fb.com>
parents:
18881
diff
changeset
|
2990 |
ce8c169a0dec
graft: use missing ancestors algorithm to find earlier grafts
Siddharth Agarwal <sid0@fb.com>
parents:
18881
diff
changeset
|
2991 for rev in repo.changelog.findmissingrevs(revs, [crev]): |
ce8c169a0dec
graft: use missing ancestors algorithm to find earlier grafts
Siddharth Agarwal <sid0@fb.com>
parents:
18881
diff
changeset
|
2992 ctx = repo[rev] |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2993 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
|
2994 if n in ids: |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
2995 r = repo[n].rev() |
15360
73628b32d0c0
graft: fix duplicate filter logic
Matt Mackall <mpm@selenic.com>
parents:
15359
diff
changeset
|
2996 if r in revs: |
73628b32d0c0
graft: fix duplicate filter logic
Matt Mackall <mpm@selenic.com>
parents:
15359
diff
changeset
|
2997 ui.warn(_('skipping already grafted revision %s\n') % r) |
73628b32d0c0
graft: fix duplicate filter logic
Matt Mackall <mpm@selenic.com>
parents:
15359
diff
changeset
|
2998 revs.remove(r) |
15508
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
2999 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
|
3000 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
|
3001 '(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
|
3002 revs.remove(ids[n]) |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
3003 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
|
3004 r = ids[ctx.hex()] |
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
3005 ui.warn(_('skipping already grafted revision %s ' |
18882
ce8c169a0dec
graft: use missing ancestors algorithm to find earlier grafts
Siddharth Agarwal <sid0@fb.com>
parents:
18881
diff
changeset
|
3006 '(was grafted from %d)\n') % (r, rev)) |
15508
00276525e2b7
graft: disallow grafting grafted csets in specific situations (issue3091)
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
15506
diff
changeset
|
3007 revs.remove(r) |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
3008 if not revs: |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
3009 return -1 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
3010 |
16473
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3011 wlock = repo.wlock() |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3012 try: |
18039
2c2564280900
graft: explicit current node tracking
David Schleimer <dschleimer@fb.com>
parents:
18038
diff
changeset
|
3013 current = repo['.'] |
16473
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3014 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
|
3015 |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3016 ui.status(_('grafting revision %s\n') % ctx.rev()) |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3017 if opts.get('dry_run'): |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3018 continue |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3019 |
18038
f8aee8033ab2
graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents:
17990
diff
changeset
|
3020 source = ctx.extra().get('source') |
f8aee8033ab2
graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents:
17990
diff
changeset
|
3021 if not source: |
f8aee8033ab2
graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents:
17990
diff
changeset
|
3022 source = ctx.hex() |
f8aee8033ab2
graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents:
17990
diff
changeset
|
3023 extra = {'source': source} |
f8aee8033ab2
graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents:
17990
diff
changeset
|
3024 user = ctx.user() |
f8aee8033ab2
graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents:
17990
diff
changeset
|
3025 if opts.get('user'): |
f8aee8033ab2
graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents:
17990
diff
changeset
|
3026 user = opts['user'] |
f8aee8033ab2
graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents:
17990
diff
changeset
|
3027 date = ctx.date() |
f8aee8033ab2
graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents:
17990
diff
changeset
|
3028 if opts.get('date'): |
f8aee8033ab2
graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents:
17990
diff
changeset
|
3029 date = opts['date'] |
f8aee8033ab2
graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents:
17990
diff
changeset
|
3030 message = ctx.description() |
f8aee8033ab2
graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents:
17990
diff
changeset
|
3031 if opts.get('log'): |
f8aee8033ab2
graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents:
17990
diff
changeset
|
3032 message += '\n(grafted from %s)' % ctx.hex() |
f8aee8033ab2
graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents:
17990
diff
changeset
|
3033 |
16473
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3034 # 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
|
3035 if not cont: |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3036 # 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
|
3037 try: |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3038 # 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
|
3039 repo.ui.setconfig('ui', 'forcemerge', opts.get('tool', '')) |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3040 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
|
3041 ctx.p1().node()) |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3042 finally: |
16850
9c86ef980d9e
graft: restore config option on correct ui
Idan Kamara <idankk86@gmail.com>
parents:
16736
diff
changeset
|
3043 repo.ui.setconfig('ui', 'forcemerge', '') |
16473
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3044 # report any conflicts |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3045 if stats and stats[3] > 0: |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3046 # write out state for --continue |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3047 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
|
3048 repo.opener.write('graftstate', ''.join(nodelines)) |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3049 raise util.Abort( |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3050 _("unresolved conflicts, can't continue"), |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3051 hint=_('use hg resolve and hg graft --continue')) |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3052 else: |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3053 cont = False |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3054 |
17045
52ea9ce5b641
graft: don't drop the second parent on unsuccessful merge (issue3498)
Yuya Nishihara <yuya@tcha.org>
parents:
16877
diff
changeset
|
3055 # 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
|
3056 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
|
3057 repo.dirstate.write() |
52ea9ce5b641
graft: don't drop the second parent on unsuccessful merge (issue3498)
Yuya Nishihara <yuya@tcha.org>
parents:
16877
diff
changeset
|
3058 # 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
|
3059 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
|
3060 |
16473
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3061 # commit |
16660
2a71cc53f244
graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents:
16659
diff
changeset
|
3062 node = repo.commit(text=message, user=user, |
16473
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3063 date=date, extra=extra, editor=editor) |
16600
b54f3c502e63
graft: remark on empty graft
Matt Mackall <mpm@selenic.com>
parents:
16591
diff
changeset
|
3064 if node is None: |
b54f3c502e63
graft: remark on empty graft
Matt Mackall <mpm@selenic.com>
parents:
16591
diff
changeset
|
3065 ui.status(_('graft for revision %s is empty\n') % ctx.rev()) |
18039
2c2564280900
graft: explicit current node tracking
David Schleimer <dschleimer@fb.com>
parents:
18038
diff
changeset
|
3066 else: |
2c2564280900
graft: explicit current node tracking
David Schleimer <dschleimer@fb.com>
parents:
18038
diff
changeset
|
3067 current = repo[node] |
16473
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3068 finally: |
7adc521259d4
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents:
16471
diff
changeset
|
3069 wlock.release() |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
3070 |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
3071 # remove state when we complete successfully |
18386
03442135dff4
refactoring: use unlinkpath with ignoremissing
Mads Kiilerich <madski@unity3d.com>
parents:
18366
diff
changeset
|
3072 if not opts.get('dry_run'): |
03442135dff4
refactoring: use unlinkpath with ignoremissing
Mads Kiilerich <madski@unity3d.com>
parents:
18366
diff
changeset
|
3073 util.unlinkpath(repo.join('graftstate'), ignoremissing=True) |
15241
e4d135632f6d
graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents:
15240
diff
changeset
|
3074 |
15238
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
3075 return 0 |
2d710c12ffc0
graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents:
15232
diff
changeset
|
3076 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3077 @command('grep', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3078 [('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
|
3079 ('', '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
|
3080 ('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
|
3081 ('f', 'follow', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3082 _('follow changeset history,' |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3083 ' 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
|
3084 ('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
|
3085 ('l', 'files-with-matches', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3086 _('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
|
3087 ('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
|
3088 ('r', 'rev', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3089 _('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
|
3090 ('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
|
3091 ('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
|
3092 ] + walkopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3093 _('[OPTION]... PATTERN [FILE]...')) |
1108
7a75d8fbbdaf
Remove some options from 'hg grep':
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1106
diff
changeset
|
3094 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
|
3095 """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
|
3096 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3097 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
|
3098 |
6448
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
3099 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
|
3100 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
|
3101 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
|
3102 match appears. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3103 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3104 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
|
3105 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
|
3106 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
|
3107 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
|
3108 use the --all flag. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3109 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3110 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
|
3111 """ |
15765
1ef46bcd76f8
grep: make multiline mode the default (BC)
Matt Mackall <mpm@selenic.com>
parents:
15744
diff
changeset
|
3112 reflags = re.M |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
3113 if opts.get('ignore_case'): |
1065
6e94c0365d98
Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1062
diff
changeset
|
3114 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
|
3115 try: |
18776
87441497ecaa
grep: use re2 if possible
Bryan O'Sullivan <bryano@fb.com>
parents:
18746
diff
changeset
|
3116 regexp = util.compilere(pattern, reflags) |
12385
9a93f4fb141b
grep: only catch re.error when compiling regular expressions
Brodie Rao <brodie@bitheap.org>
parents:
12382
diff
changeset
|
3117 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
|
3118 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
|
3119 return 1 |
1146
9061f79c6c6f
grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents:
1145
diff
changeset
|
3120 sep, eol = ':', '\n' |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
3121 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
|
3122 sep = eol = '\0' |
1057 | 3123 |
9097
431462bd8478
fix memory usage of revlog caches by limiting cache size [issue1639]
Matt Mackall <mpm@selenic.com>
parents:
8995
diff
changeset
|
3124 getfile = util.lrucachefunc(repo.file) |
1057 | 3125 |
3126 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
|
3127 begin = 0 |
4eab07ef66e2
grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents:
1058
diff
changeset
|
3128 linenum = 0 |
17949
407209261f63
grep: remove useless while condition
Kevin Bullock <kbullock@ringworld.org>
parents:
17931
diff
changeset
|
3129 while begin < len(body): |
1059
4eab07ef66e2
grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents:
1058
diff
changeset
|
3130 match = regexp.search(body, begin) |
1065
6e94c0365d98
Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1062
diff
changeset
|
3131 if not match: |
6e94c0365d98
Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1062
diff
changeset
|
3132 break |
1059
4eab07ef66e2
grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents:
1058
diff
changeset
|
3133 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
|
3134 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
|
3135 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
|
3136 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
|
3137 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
|
3138 yield linenum, mstart - lstart, mend - lstart, body[lstart:lend] |
1057 | 3139 |
1559
59b3639df0a9
Convert all classes to new-style classes by deriving them from object.
Eric Hopper <hopper@omnifarious.org>
parents:
1552
diff
changeset
|
3140 class linestate(object): |
1057 | 3141 def __init__(self, line, linenum, colstart, colend): |
3142 self.line = line | |
3143 self.linenum = linenum | |
3144 self.colstart = colstart | |
3145 self.colend = colend | |
2869
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
3146 |
6469
fb502719c75c
python 2.6 compatibility: add __hash__ to classes that have __eq__
Paul Moore <p.f.moore@gmail.com>
parents:
6468
diff
changeset
|
3147 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
|
3148 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
|
3149 |
1065
6e94c0365d98
Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1062
diff
changeset
|
3150 def __eq__(self, other): |
6e94c0365d98
Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1062
diff
changeset
|
3151 return self.line == other.line |
1057 | 3152 |
3153 matches = {} | |
2870
8eaaf1321bfe
grep: add --follow support.
Brendan Cully <brendan@kublai.com>
parents:
2869
diff
changeset
|
3154 copies = {} |
1057 | 3155 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
|
3156 matches[rev].setdefault(fn, []) |
1057 | 3157 m = matches[rev][fn] |
3158 for lnum, cstart, cend, line in matchlines(body): | |
3159 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
|
3160 m.append(s) |
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
3161 |
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
3162 def difflinestates(a, b): |
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
3163 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
|
3164 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
|
3165 if tag == 'insert': |
3472
df7202f6887c
use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3471
diff
changeset
|
3166 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
|
3167 yield ('+', b[i]) |
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
3168 elif tag == 'delete': |
3472
df7202f6887c
use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3471
diff
changeset
|
3169 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
|
3170 yield ('-', a[i]) |
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
3171 elif tag == 'replace': |
3472
df7202f6887c
use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3471
diff
changeset
|
3172 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
|
3173 yield ('-', a[i]) |
3472
df7202f6887c
use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3471
diff
changeset
|
3174 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
|
3175 yield ('+', b[i]) |
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
3176 |
9655
6d7d3f849062
walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents:
9654
diff
changeset
|
3177 def display(fn, ctx, pstates, states): |
6d7d3f849062
walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents:
9654
diff
changeset
|
3178 rev = ctx.rev() |
6134
7b937b26adf7
Make annotae/grep print short dates with -q/--quiet.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6133
diff
changeset
|
3179 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
|
3180 found = False |
1146
9061f79c6c6f
grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents:
1145
diff
changeset
|
3181 filerevmatches = {} |
13920
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
3182 def binary(): |
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
3183 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
|
3184 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
|
3185 |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
3186 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
|
3187 iter = difflinestates(pstates, states) |
2869
81f351c5264d
grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents:
2854
diff
changeset
|
3188 else: |
8849
80cc4b1a62d0
compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
8834
diff
changeset
|
3189 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
|
3190 for change, l in iter: |
17806
dc7010ed0101
grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents:
17791
diff
changeset
|
3191 cols = [(fn, 'grep.filename'), (str(rev), 'grep.rev')] |
10816
635d601e8f21
grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10654
diff
changeset
|
3192 before, match, after = None, None, None |
17806
dc7010ed0101
grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents:
17791
diff
changeset
|
3193 |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
3194 if opts.get('line_number'): |
17806
dc7010ed0101
grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents:
17791
diff
changeset
|
3195 cols.append((str(l.linenum), 'grep.linenumber')) |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
3196 if opts.get('all'): |
17806
dc7010ed0101
grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents:
17791
diff
changeset
|
3197 cols.append((change, 'grep.change')) |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
3198 if opts.get('user'): |
17806
dc7010ed0101
grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents:
17791
diff
changeset
|
3199 cols.append((ui.shortuser(ctx.user()), 'grep.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
|
3200 if opts.get('date'): |
17806
dc7010ed0101
grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents:
17791
diff
changeset
|
3201 cols.append((datefunc(ctx.date()), 'grep.date')) |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
3202 if opts.get('files_with_matches'): |
9655
6d7d3f849062
walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents:
9654
diff
changeset
|
3203 c = (fn, rev) |
1615
83238c1db6de
Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1607
diff
changeset
|
3204 if c in filerevmatches: |
83238c1db6de
Cleanup of indentation, spacing, newlines, strings and line length
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1607
diff
changeset
|
3205 continue |
1146
9061f79c6c6f
grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents:
1145
diff
changeset
|
3206 filerevmatches[c] = 1 |
9061f79c6c6f
grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents:
1145
diff
changeset
|
3207 else: |
10816
635d601e8f21
grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10654
diff
changeset
|
3208 before = l.line[:l.colstart] |
635d601e8f21
grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10654
diff
changeset
|
3209 match = l.line[l.colstart:l.colend] |
635d601e8f21
grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10654
diff
changeset
|
3210 after = l.line[l.colend:] |
17806
dc7010ed0101
grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents:
17791
diff
changeset
|
3211 for col, label in cols[:-1]: |
dc7010ed0101
grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents:
17791
diff
changeset
|
3212 ui.write(col, label=label) |
dc7010ed0101
grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents:
17791
diff
changeset
|
3213 ui.write(sep, label='grep.sep') |
dc7010ed0101
grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents:
17791
diff
changeset
|
3214 ui.write(cols[-1][0], label=cols[-1][1]) |
10816
635d601e8f21
grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10654
diff
changeset
|
3215 if before is not None: |
17806
dc7010ed0101
grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents:
17791
diff
changeset
|
3216 ui.write(sep, label='grep.sep') |
13920
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
3217 if not opts.get('text') and binary(): |
17806
dc7010ed0101
grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents:
17791
diff
changeset
|
3218 ui.write(" Binary file matches") |
13920
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
3219 else: |
17806
dc7010ed0101
grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents:
17791
diff
changeset
|
3220 ui.write(before) |
13920
332e400764e5
grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents:
13911
diff
changeset
|
3221 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
|
3222 ui.write(after) |
10816
635d601e8f21
grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10654
diff
changeset
|
3223 ui.write(eol) |
3951
cb66641cdee3
grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3950
diff
changeset
|
3224 found = True |
cb66641cdee3
grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3950
diff
changeset
|
3225 return found |
1057 | 3226 |
1145
bd917e1a26dd
grep: change default to printing first matching rev.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1116
diff
changeset
|
3227 skip = {} |
8849
80cc4b1a62d0
compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
8834
diff
changeset
|
3228 revfiles = {} |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
3229 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
|
3230 found = False |
2870
8eaaf1321bfe
grep: add --follow support.
Brendan Cully <brendan@kublai.com>
parents:
2869
diff
changeset
|
3231 follow = opts.get('follow') |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3232 |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3233 def prep(ctx, fns): |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3234 rev = ctx.rev() |
13878
a8d13ee0ce68
misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents:
13855
diff
changeset
|
3235 pctx = ctx.p1() |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3236 parent = pctx.rev() |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3237 matches.setdefault(rev, {}) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3238 matches.setdefault(parent, {}) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3239 files = revfiles.setdefault(rev, []) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3240 for fn in fns: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3241 flog = getfile(fn) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3242 try: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3243 fnode = ctx.filenode(fn) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3244 except error.LookupError: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3245 continue |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3246 |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3247 copied = flog.renamed(fnode) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3248 copy = follow and copied and copied[0] |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3249 if copy: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3250 copies.setdefault(rev, {})[fn] = copy |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3251 if fn in skip: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3252 if copy: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3253 skip[copy] = True |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3254 continue |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3255 files.append(fn) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3256 |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3257 if fn not in matches[rev]: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3258 grepbody(fn, rev, flog.read(fnode)) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3259 |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3260 pfn = copy or fn |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3261 if pfn not in matches[parent]: |
1057 | 3262 try: |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3263 fnode = pctx.filenode(pfn) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3264 grepbody(pfn, parent, flog.read(fnode)) |
7633 | 3265 except error.LookupError: |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3266 pass |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3267 |
9665
1de5ebfa5585
walkchangerevs: drop ui arg
Matt Mackall <mpm@selenic.com>
parents:
9663
diff
changeset
|
3268 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
|
3269 rev = ctx.rev() |
13878
a8d13ee0ce68
misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents:
13855
diff
changeset
|
3270 parent = ctx.p1().rev() |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3271 for fn in sorted(revfiles.get(rev, [])): |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3272 states = matches[rev][fn] |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3273 copy = copies.get(rev, {}).get(fn) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3274 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
|
3275 if copy: |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3276 skip[copy] = True |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3277 continue |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3278 pstates = matches.get(parent, {}).get(copy or fn, []) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3279 if pstates or states: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3280 r = display(fn, ctx, pstates, states) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3281 found = found or r |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3282 if r and not opts.get('all'): |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3283 skip[fn] = True |
8849
80cc4b1a62d0
compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
8834
diff
changeset
|
3284 if copy: |
80cc4b1a62d0
compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
8834
diff
changeset
|
3285 skip[copy] = True |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3286 del matches[rev] |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
3287 del revfiles[rev] |
1057 | 3288 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3289 return not found |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3290 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3291 @command('heads', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3292 [('r', 'rev', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3293 _('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
|
3294 ('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
|
3295 ('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
|
3296 ('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
|
3297 ] + templateopts, |
16869
00e1e40d709c
help: drop -a from heads syntax summary (issue3483)
Matt Mackall <mpm@selenic.com>
parents:
16850
diff
changeset
|
3298 _('[-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
|
3299 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
|
3300 """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
|
3301 |
10350
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3302 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
|
3303 |
9502
8d7d68dd91fd
commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents:
9189
diff
changeset
|
3304 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
|
3305 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
|
3306 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
|
3307 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
|
3308 |
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3309 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
|
3310 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
|
3311 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
|
3312 named ``foo``. |
9502
8d7d68dd91fd
commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents:
9189
diff
changeset
|
3313 |
8d7d68dd91fd
commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents:
9189
diff
changeset
|
3314 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
|
3315 (see :hg:`commit --close-branch`). |
9502
8d7d68dd91fd
commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents:
9189
diff
changeset
|
3316 |
8d7d68dd91fd
commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents:
9189
diff
changeset
|
3317 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
|
3318 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
|
3319 |
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3320 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
|
3321 changesets without children will be shown. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3322 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3323 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
|
3324 """ |
10328
0798a3d5f812
commands: simplify heads a little bit before I start hacking it up
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10326
diff
changeset
|
3325 |
12925
6eab8f0df2ca
commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents:
12918
diff
changeset
|
3326 start = None |
6eab8f0df2ca
commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents:
12918
diff
changeset
|
3327 if 'rev' in opts: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
3328 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
|
3329 |
10350
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3330 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
|
3331 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
|
3332 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
|
3333 heads = [] |
14466
bd34a027f3ed
commands: use repo.branchheads in heads command
Martin Geisler <mg@aragost.com>
parents:
14465
diff
changeset
|
3334 for branch in repo.branchmap(): |
bd34a027f3ed
commands: use repo.branchheads in heads command
Martin Geisler <mg@aragost.com>
parents:
14465
diff
changeset
|
3335 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
|
3336 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
|
3337 |
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3338 if branchrevs: |
13047
6c375e07d673
branch: operate on branch names in local string space where possible
Matt Mackall <mpm@selenic.com>
parents:
13022
diff
changeset
|
3339 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
|
3340 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
|
3341 |
10349
20356e69710c
commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10348
diff
changeset
|
3342 if opts.get('active') and branchrevs: |
20356e69710c
commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10348
diff
changeset
|
3343 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
|
3344 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
|
3345 |
20356e69710c
commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10348
diff
changeset
|
3346 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
|
3347 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
|
3348 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
|
3349 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
|
3350 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
|
3351 if opts.get('rev'): |
16231
ce292f1379ba
i18n: fix all remaining uses of % inside _()
Matt Mackall <mpm@selenic.com>
parents:
16230
diff
changeset
|
3352 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
|
3353 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
|
3354 |
4648
8e503fa54d2d
Add option to heads to show only heads for current branch.
Eric Hopper <hopper@omnifarious.org>
parents:
4646
diff
changeset
|
3355 if not heads: |
8e503fa54d2d
Add option to heads to show only heads for current branch.
Eric Hopper <hopper@omnifarious.org>
parents:
4646
diff
changeset
|
3356 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
|
3357 |
10350
fd511e9eeea6
commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10349
diff
changeset
|
3358 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
|
3359 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
|
3360 for ctx in heads: |
ec5240a22f4a
commands: always order heads recent to oldest
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10330
diff
changeset
|
3361 displayer.show(ctx) |
10152
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
3362 displayer.close() |
221 | 3363 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3364 @command('help', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3365 [('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
|
3366 ('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
|
3367 ('k', 'keyword', '', _('show topics matching keyword')), |
497deec204d1
help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents:
16708
diff
changeset
|
3368 ], |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3369 _('[-ec] [TOPIC]')) |
18746
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
18711
diff
changeset
|
3370 def help_(ui, name=None, **opts): |
7210 | 3371 """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
|
3372 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3373 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
|
3374 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3375 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
|
3376 topic. |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3377 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3378 Returns 0 if successful. |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3379 """ |
15023
157a294444b2
help: move option text display into a helper function
Matt Mackall <mpm@selenic.com>
parents:
15022
diff
changeset
|
3380 |
13608
63ab6b0ccedc
help: limit documentation width to at most 80 characters
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
13601
diff
changeset
|
3381 textwidth = min(ui.termwidth(), 80) - 2 |
3655
da361aa7a118
alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents:
3654
diff
changeset
|
3382 |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3383 keep = ui.verbose and ['verbose'] or [] |
18746
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
18711
diff
changeset
|
3384 text = help.help_(ui, name, **opts) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
18711
diff
changeset
|
3385 |
17837
b623e323c561
help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17830
diff
changeset
|
3386 formatted, pruned = minirst.format(text, textwidth, keep=keep) |
b623e323c561
help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17830
diff
changeset
|
3387 if 'verbose' in pruned: |
b623e323c561
help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17830
diff
changeset
|
3388 keep.append('omitted') |
b623e323c561
help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17830
diff
changeset
|
3389 else: |
b623e323c561
help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17830
diff
changeset
|
3390 keep.append('notomitted') |
b623e323c561
help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17830
diff
changeset
|
3391 formatted, pruned = minirst.format(text, textwidth, keep=keep) |
16854
d71ada5a6a33
help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents:
16853
diff
changeset
|
3392 ui.write(formatted) |
6653
a78d8edaeedd
help: list special help topics with -v
Johannes Stezenbach <js@sig21.net>
parents:
6652
diff
changeset
|
3393 |
221 | 3394 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3395 @command('identify|id', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3396 [('r', 'rev', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3397 _('identify the specified revision'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3398 ('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
|
3399 ('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
|
3400 ('b', 'branch', None, _('show branch')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3401 ('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
|
3402 ('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
|
3403 ] + remoteopts, |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3404 _('[-nibtB] [-r REV] [SOURCE]')) |
13477
0fb2ff949790
id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents:
13473
diff
changeset
|
3405 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
|
3406 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
|
3407 """identify the working copy or specified revision |
091c9e54d306
identify: accept a revision argument
Matt Mackall <mpm@selenic.com>
parents:
4664
diff
changeset
|
3408 |
13963
3c753f9a2fbc
identify: further clarification of help
Kevin Bullock <kbullock@ringworld.org>
parents:
13952
diff
changeset
|
3409 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
|
3410 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
|
3411 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
|
3412 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
|
3413 |
1416b9118540
identify/help: say what the command does first, mention bookmarks
Idan Kamara <idankk86@gmail.com>
parents:
13693
diff
changeset
|
3414 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
|
3415 repository. |
4671
150afe6becf6
identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents:
4667
diff
changeset
|
3416 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3417 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
|
3418 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
|
3419 |
15112
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3420 .. container:: verbose |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3421 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3422 Examples: |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3423 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3424 - generate a build identifier for the working directory:: |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3425 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3426 hg id --id > build-id.dat |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3427 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3428 - find the revision corresponding to a tag:: |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3429 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3430 hg id -n -r 1.3 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3431 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3432 - check the most recent revision of a remote repository:: |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3433 |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3434 hg id -r tip http://selenic.com/hg/ |
24f5489452af
id: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15111
diff
changeset
|
3435 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3436 Returns 0 if successful. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3437 """ |
4662
f9b8ea362b49
identify: show nullid for empty repo
Matt Mackall <mpm@selenic.com>
parents:
4659
diff
changeset
|
3438 |
5330
4528858e7202
make identify an optionalrepo command
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5329
diff
changeset
|
3439 if not repo and not source: |
12067
a4fbbe0fbc38
Lowercase error messages
Martin Geisler <mg@lazybytes.net>
parents:
11881
diff
changeset
|
3440 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
|
3441 "(.hg not found)")) |
4528858e7202
make identify an optionalrepo command
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5329
diff
changeset
|
3442 |
2966
fb493241d7f6
Only show long hashes with --debug, not --verbose
Matt Mackall <mpm@selenic.com>
parents:
2963
diff
changeset
|
3443 hexfunc = ui.debugflag and hex or short |
13477
0fb2ff949790
id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents:
13473
diff
changeset
|
3444 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
|
3445 output = [] |
7757
af6a63438a8a
identify: have consistent output for local repositories
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7743
diff
changeset
|
3446 revs = [] |
13953
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3447 |
4671
150afe6becf6
identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents:
4667
diff
changeset
|
3448 if source: |
10365
d757bc0c7865
interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents:
10364
diff
changeset
|
3449 source, branches = hg.parseurl(ui.expandpath(source)) |
17875
92ba3cd55be6
subrepo: more isolation, only use ui for hg.peer when there is no repo
Simon Heimberg <simohe@besonet.ch>
parents:
17849
diff
changeset
|
3450 peer = hg.peer(repo or ui, opts, source) # only pass ui when no repo |
17191
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
3451 repo = peer.local() |
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
3452 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
|
3453 |
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
3454 if not repo: |
13953
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3455 if num or branch or tags: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3456 raise util.Abort( |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3457 _("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
|
3458 if not rev and revs: |
150afe6becf6
identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents:
4667
diff
changeset
|
3459 rev = revs[0] |
4667
c7a81e3ae80f
identify: work with remote repos
Matt Mackall <mpm@selenic.com>
parents:
4666
diff
changeset
|
3460 if not rev: |
c7a81e3ae80f
identify: work with remote repos
Matt Mackall <mpm@selenic.com>
parents:
4666
diff
changeset
|
3461 rev = "tip" |
13644
7e6c2f58ad56
identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents:
13639
diff
changeset
|
3462 |
17191
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
3463 remoterev = peer.lookup(rev) |
4666
48c94bffdb28
identify: add support for output flags
Matt Mackall <mpm@selenic.com>
parents:
4665
diff
changeset
|
3464 if default or id: |
13644
7e6c2f58ad56
identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents:
13639
diff
changeset
|
3465 output = [hexfunc(remoterev)] |
7e6c2f58ad56
identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents:
13639
diff
changeset
|
3466 |
13953
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3467 def getbms(): |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3468 bms = [] |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3469 |
17191
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
3470 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
|
3471 hexremoterev = hex(remoterev) |
17191
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17190
diff
changeset
|
3472 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
|
3473 if bmr == hexremoterev] |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3474 |
18366
fdf2f5730bd4
identity: report bookmarks sorted
Mads Kiilerich <mads@kiilerich.com>
parents:
18267
diff
changeset
|
3475 return sorted(bms) |
13953
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3476 |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3477 if bookmarks: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3478 output.extend(getbms()) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3479 elif default and not ui.quiet: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3480 # 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
|
3481 bm = '/'.join(getbms()) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3482 if bm: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3483 output.append(bm) |
4665
091c9e54d306
identify: accept a revision argument
Matt Mackall <mpm@selenic.com>
parents:
4664
diff
changeset
|
3484 else: |
13953
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3485 if not rev: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3486 ctx = repo[None] |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3487 parents = ctx.parents() |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3488 changed = "" |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3489 if default or id or num: |
17255
3e856d8abe9c
identity: show trailing '+' for dirty subrepos (issue2839)
Patrick Mezard <patrick@mezard.eu>
parents:
17248
diff
changeset
|
3490 if (util.any(repo.status()) |
3e856d8abe9c
identity: show trailing '+' for dirty subrepos (issue2839)
Patrick Mezard <patrick@mezard.eu>
parents:
17248
diff
changeset
|
3491 or util.any(ctx.sub(s).dirty() for s in ctx.substate)): |
3e856d8abe9c
identity: show trailing '+' for dirty subrepos (issue2839)
Patrick Mezard <patrick@mezard.eu>
parents:
17248
diff
changeset
|
3492 changed = '+' |
13953
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3493 if default or id: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3494 output = ["%s%s" % |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3495 ('+'.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
|
3496 if num: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3497 output.append("%s%s" % |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3498 ('+'.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
|
3499 else: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
3500 ctx = scmutil.revsingle(repo, rev) |
13953
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3501 if default or id: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3502 output = [hexfunc(ctx.node())] |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3503 if num: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3504 output.append(str(ctx.rev())) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3505 |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3506 if default and not ui.quiet: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3507 b = ctx.branch() |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3508 if b != 'default': |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3509 output.append("(%s)" % b) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3510 |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3511 # 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
|
3512 t = '/'.join(ctx.tags()) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3513 if t: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3514 output.append(t) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3515 |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3516 # 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
|
3517 bm = '/'.join(ctx.bookmarks()) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3518 if bm: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3519 output.append(bm) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3520 else: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3521 if branch: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3522 output.append(ctx.branch()) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3523 |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3524 if tags: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3525 output.extend(ctx.tags()) |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3526 |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3527 if bookmarks: |
ae10a5e8e558
identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents:
13950
diff
changeset
|
3528 output.extend(ctx.bookmarks()) |
13477
0fb2ff949790
id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents:
13473
diff
changeset
|
3529 |
386
494c8e3f47f3
Improvements for hg identify:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
371
diff
changeset
|
3530 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
|
3531 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3532 @command('import|patch', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3533 [('p', 'strip', 1, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3534 _('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
|
3535 'meaning as the corresponding patch option'), _('NUM')), |
14532
2498128821a9
import: deprecate --base
Patrick Mezard <pmezard@gmail.com>
parents:
14529
diff
changeset
|
3536 ('b', 'base', '', _('base path (DEPRECATED)'), _('PATH')), |
15221 | 3537 ('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
|
3538 ('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
|
3539 ('', 'no-commit', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3540 _("don't commit, just update the working directory")), |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3541 ('', 'bypass', None, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3542 _("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
|
3543 ('', 'exact', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3544 _('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
|
3545 ('', 'import-branch', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3546 _('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
|
3547 commitopts + commitopts2 + similarityopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3548 _('[OPTION]... PATCH...')) |
15327
67e92d29ecb5
import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents:
15321
diff
changeset
|
3549 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
|
3550 """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
|
3551 |
9649 | 3552 Import a list of patches and commit them individually (unless |
3553 --no-commit is specified). | |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3554 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3555 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
|
3556 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
|
3557 |
6448
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
3558 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
|
3559 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
|
3560 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
|
3561 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
|
3562 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
|
3563 message. |
2504
158d3d2ae070
import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2494
diff
changeset
|
3564 |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
3565 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
|
3566 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
|
3567 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
|
3568 override these. |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3569 |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3570 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
|
3571 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
|
3572 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
|
3573 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
|
3574 deficiencies in the text patch format. |
4263 | 3575 |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3576 Use --bypass to apply and commit patches directly to the |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3577 repository, not touching the working directory. Without --exact, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3578 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
|
3579 revision. |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3580 |
8033
aeb4a5c7a28e
commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8032
diff
changeset
|
3581 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
|
3582 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
|
3583 |
8931
4c99eafb101e
commands: add note about import retrieving patches from URLs
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8927
diff
changeset
|
3584 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
|
3585 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
|
3586 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
|
3587 |
15113 | 3588 .. container:: verbose |
3589 | |
3590 Examples: | |
3591 | |
3592 - import a traditional patch from a website and detect renames:: | |
3593 | |
3594 hg import -s 80 http://example.com/bugfix.patch | |
3595 | |
3596 - import a changeset from an hgweb server:: | |
3597 | |
3598 hg import http://www.selenic.com/hg/rev/5ca8c111e9aa | |
3599 | |
3600 - import all the patches in an Unix-style mbox:: | |
3601 | |
3602 hg import incoming-patches.mbox | |
3603 | |
3604 - attempt to exactly restore an exported changeset (not always | |
3605 possible):: | |
3606 | |
3607 hg import --exact proposed-fix.patch | |
3608 | |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3609 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3610 """ |
15327
67e92d29ecb5
import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents:
15321
diff
changeset
|
3611 |
67e92d29ecb5
import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents:
15321
diff
changeset
|
3612 if not patch1: |
67e92d29ecb5
import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents:
15321
diff
changeset
|
3613 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
|
3614 |
437 | 3615 patches = (patch1,) + patches |
500
ebc4714a7632
[PATCH] Clean up destination directory if a clone fails.
mpm@selenic.com
parents:
499
diff
changeset
|
3616 |
6139
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6134
diff
changeset
|
3617 date = opts.get('date') |
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6134
diff
changeset
|
3618 if date: |
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6134
diff
changeset
|
3619 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
|
3620 |
15221 | 3621 editor = cmdutil.commiteditor |
3622 if opts.get('edit'): | |
3623 editor = cmdutil.commitforceeditor | |
3624 | |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3625 update = not opts.get('bypass') |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3626 if not update and opts.get('no_commit'): |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3627 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
|
3628 try: |
bffdab64dfbb
import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents:
7372
diff
changeset
|
3629 sim = float(opts.get('similarity') or 0) |
bffdab64dfbb
import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents:
7372
diff
changeset
|
3630 except ValueError: |
bffdab64dfbb
import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents:
7372
diff
changeset
|
3631 raise util.Abort(_('similarity must be a number')) |
bffdab64dfbb
import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents:
7372
diff
changeset
|
3632 if sim < 0 or sim > 100: |
bffdab64dfbb
import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents:
7372
diff
changeset
|
3633 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
|
3634 if sim and not update: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3635 raise util.Abort(_('cannot use --similarity with --bypass')) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3636 |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3637 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
|
3638 cmdutil.bailifchanged(repo) |
966
022bcc738389
hg import: abort with uncommitted changes, override with --force
mpm@selenic.com
parents:
965
diff
changeset
|
3639 |
15195
5b2a3bb06cef
import: rename some local variables
Greg Ward <greg@gerg.ca>
parents:
15194
diff
changeset
|
3640 base = opts["base"] |
437 | 3641 strip = opts["strip"] |
15198
62dc0e7ab092
import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents:
15197
diff
changeset
|
3642 wlock = lock = tr = None |
12913
0e0a52bd58f9
import: --no-commit should update .hg/last-message.txt
Steve Borho <steve@borho.org>
parents:
12893
diff
changeset
|
3643 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
|
3644 |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3645 def tryone(ui, hunk, parents): |
10413
e433002acb05
fix up a bunch of check-code warnings
Matt Mackall <mpm@selenic.com>
parents:
10405
diff
changeset
|
3646 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
|
3647 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
|
3648 |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3649 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
|
3650 return (None, None) |
0705f2ac79d6
import: simplify status reporting logic (and make it more I18N-friendly)
Greg Ward <greg@gerg.ca>
parents:
15192
diff
changeset
|
3651 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
|
3652 |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3653 try: |
14635
217b7d83afc3
cmdutil, logmessage: use ui.fin when reading from '-'
Idan Kamara <idankk86@gmail.com>
parents:
14631
diff
changeset
|
3654 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
|
3655 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
|
3656 # 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
|
3657 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
|
3658 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
|
3659 # 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
|
3660 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
|
3661 else: |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3662 # 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
|
3663 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
|
3664 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
|
3665 |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3666 if len(parents) == 1: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3667 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
|
3668 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
|
3669 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
|
3670 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
|
3671 p1 = repo[p1] |
5d6244930559
import: separate parents selection from working dir update
Patrick Mezard <pmezard@gmail.com>
parents:
14604
diff
changeset
|
3672 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
|
3673 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
|
3674 try: |
14610
5d6244930559
import: separate parents selection from working dir update
Patrick Mezard <pmezard@gmail.com>
parents:
14604
diff
changeset
|
3675 p1 = repo[p1] |
5d6244930559
import: separate parents selection from working dir update
Patrick Mezard <pmezard@gmail.com>
parents:
14604
diff
changeset
|
3676 p2 = repo[p2] |
15511
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3677 # 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
|
3678 # 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
|
3679 # first parent. |
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3680 if p1 != parents[0]: |
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3681 p1 = parents[0] |
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3682 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
|
3683 except error.RepoError: |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3684 p1, p2 = parents |
14610
5d6244930559
import: separate parents selection from working dir update
Patrick Mezard <pmezard@gmail.com>
parents:
14604
diff
changeset
|
3685 else: |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3686 p1, p2 = parents |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3687 |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3688 n = None |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3689 if update: |
15511
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3690 if p1 != parents[0]: |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3691 hg.clean(repo, p1.node()) |
15511
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3692 if p2 != parents[1]: |
16551
ebf6d38c9063
localrepo: add setparents() to adjust dirstate copies (issue3407)
Patrick Mezard <patrick@mezard.eu>
parents:
16505
diff
changeset
|
3693 repo.setparents(p1.node(), p2.node()) |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3694 |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3695 if opts.get('exact') or opts.get('import_branch'): |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3696 repo.dirstate.setbranch(branch or 'default') |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3697 |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3698 files = set() |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3699 patch.patch(ui, repo, tmpname, strip=strip, files=files, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3700 eolmode=None, similarity=sim / 100.0) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3701 files = list(files) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3702 if opts.get('no_commit'): |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3703 if message: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3704 msgs.append(message) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3705 else: |
15511
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3706 if opts.get('exact') or p2: |
6cae68a361ed
import: fix parent selection when importing merges
Patrick Mezard <pmezard@gmail.com>
parents:
15508
diff
changeset
|
3707 # 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
|
3708 # 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
|
3709 # being updated to its first parent. |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3710 m = None |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3711 else: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3712 m = scmutil.matchfiles(repo, files or []) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3713 n = repo.commit(message, opts.get('user') or user, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3714 opts.get('date') or date, match=m, |
15221 | 3715 editor=editor) |
12913
0e0a52bd58f9
import: --no-commit should update .hg/last-message.txt
Steve Borho <steve@borho.org>
parents:
12893
diff
changeset
|
3716 else: |
14611
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 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
|
3719 else: |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3720 branch = p1.branch() |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3721 store = patch.filestore() |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3722 try: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3723 files = set() |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3724 try: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3725 patch.patchrepo(ui, repo, p1, store, tmpname, strip, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3726 files, eolmode=None) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3727 except patch.PatchError, e: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3728 raise util.Abort(str(e)) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3729 memctx = patch.makememctx(repo, (p1.node(), p2.node()), |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3730 message, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3731 opts.get('user') or user, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3732 opts.get('date') or date, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3733 branch, files, store, |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3734 editor=cmdutil.commiteditor) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3735 repo.savecommitmessage(memctx.description()) |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3736 n = memctx.commit() |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3737 finally: |
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3738 store.close() |
19026
1dc393614e61
import: inline checkexact function
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
19025
diff
changeset
|
3739 if opts.get('exact') and hex(n) != nodeid: |
1dc393614e61
import: inline checkexact function
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
19025
diff
changeset
|
3740 raise util.Abort(_('patch is damaged or loses information')) |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3741 if n: |
15307
718e0684c703
import: add i18n context
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
15293
diff
changeset
|
3742 # 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
|
3743 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
|
3744 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
|
3745 finally: |
832f35386067
import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents:
10379
diff
changeset
|
3746 os.unlink(tmpname) |
10405
2d30d66a89ad
whitespace cleanup
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
10394
diff
changeset
|
3747 |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4914
diff
changeset
|
3748 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
|
3749 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
|
3750 wlock = repo.wlock() |
16274
5d75eb8568d1
encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents:
16249
diff
changeset
|
3751 if not opts.get('no_commit'): |
5d75eb8568d1
encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents:
16249
diff
changeset
|
3752 lock = repo.lock() |
5d75eb8568d1
encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents:
16249
diff
changeset
|
3753 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
|
3754 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
|
3755 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
|
3756 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
|
3757 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
|
3758 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
|
3759 patchurl = 'stdin' # for error message |
14611
adbf5e7df96d
import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents:
14610
diff
changeset
|
3760 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
|
3761 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
|
3762 ui.status(_('applying %s\n') % patchurl) |
17887
0e2846b2482c
url: use open and not url.open for local files (issue3624)
Siddharth Agarwal <sid0@fb.com>
parents:
17875
diff
changeset
|
3763 patchfile = hg.openpath(ui, patchurl) |
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
|
3764 |
2ed335669e18
commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents:
15265
diff
changeset
|
3765 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
|
3766 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
|
3767 (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
|
3768 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
|
3769 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
|
3770 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
|
3771 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
|
3772 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
|
3773 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
|
3774 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
|
3775 |
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 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
|
3777 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
|
3778 |
16274
5d75eb8568d1
encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents:
16249
diff
changeset
|
3779 if tr: |
5d75eb8568d1
encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents:
16249
diff
changeset
|
3780 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
|
3781 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
|
3782 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
|
3783 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
|
3784 # 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
|
3785 # 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
|
3786 # 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
|
3787 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
|
3788 raise |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4914
diff
changeset
|
3789 finally: |
15198
62dc0e7ab092
import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents:
15197
diff
changeset
|
3790 if tr: |
62dc0e7ab092
import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents:
15197
diff
changeset
|
3791 tr.release() |
8109
496ae1ea4698
switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents:
8088
diff
changeset
|
3792 release(lock, wlock) |
437 | 3793 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3794 @command('incoming|in', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3795 [('f', 'force', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3796 _('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
|
3797 ('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
|
3798 ('', 'bundle', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3799 _('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
|
3800 ('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
|
3801 ('B', 'bookmarks', False, _("compare bookmarks")), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3802 ('b', 'branch', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3803 _('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
|
3804 ] + logopts + remoteopts + subrepoopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3805 _('[-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
|
3806 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
|
3807 """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
|
3808 |
1979
d545fa1426b9
More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1974
diff
changeset
|
3809 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
|
3810 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
|
3811 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
|
3812 |
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3813 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
|
3814 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
|
3815 |
d545fa1426b9
More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1974
diff
changeset
|
3816 See pull for valid source format details. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3817 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3818 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
|
3819 """ |
17182
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3820 if opts.get('graph'): |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3821 cmdutil.checkunsupportedgraphflags([], opts) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3822 def display(other, chlist, displayer): |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3823 revdag = cmdutil.graphrevs(other, chlist, opts) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3824 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
|
3825 cmdutil.displaygraph(ui, revdag, displayer, showparents, |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3826 graphmod.asciiedges) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3827 |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3828 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
|
3829 return 0 |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
3830 |
12274
c02e1ed3d407
incoming: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents:
12273
diff
changeset
|
3831 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
|
3832 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
|
3833 |
13366
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
3834 if opts.get('bookmarks'): |
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
3835 source, branches = hg.parseurl(ui.expandpath(source), |
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
3836 opts.get('branch')) |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
3837 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
|
3838 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
|
3839 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
|
3840 return 0 |
14076
924c82157d46
url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents:
14073
diff
changeset
|
3841 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
|
3842 return bookmarks.diff(ui, repo, other) |
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
3843 |
14360
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
3844 repo._subtoppath = ui.expandpath(source) |
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
3845 try: |
14362
8c740a850ad7
commands: replace 'x = f(); return x' with 'return f()'
Martin Geisler <mg@lazybytes.net>
parents:
14361
diff
changeset
|
3846 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
|
3847 finally: |
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
3848 del repo._subtoppath |
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
3849 |
1944
fdf40c9b3306
incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1943
diff
changeset
|
3850 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3851 @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
|
3852 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
|
3853 """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
|
3854 |
6448
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
3855 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
|
3856 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
|
3857 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3858 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
|
3859 |
9970
36760956f6d3
commands: mark "ssh://" as inline literals in help texts
Martin Geisler <mg@lazybytes.net>
parents:
9952
diff
changeset
|
3860 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
|
3861 See :hg:`help urls` for more information. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3862 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3863 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3864 """ |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
3865 hg.peer(ui, opts, ui.expandpath(dest), create=True) |
338 | 3866 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3867 @command('locate', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3868 [('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
|
3869 ('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
|
3870 ('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
|
3871 ] + walkopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3872 _('[OPTION]... [PATTERN]...')) |
627 | 3873 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
|
3874 """locate files matching specific patterns |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3875 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3876 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
|
3877 names match the given patterns. |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3878 |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3879 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
|
3880 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
|
3881 subdirectories, use "--include .". |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3882 |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3883 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
|
3884 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
|
3885 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
3886 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
|
3887 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
|
3888 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
|
3889 contain whitespace as multiple filenames. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3890 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3891 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
|
3892 """ |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
3893 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
|
3894 rev = scmutil.revsingle(repo, opts.get('rev'), None).node() |
742 | 3895 |
4196
1c69c73d85d9
locate: exit(1) if we didn't print any file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4195
diff
changeset
|
3896 ret = 1 |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
3897 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
|
3898 m.bad = lambda x, y: False |
6764 | 3899 for abs in repo[rev].walk(m): |
3900 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
|
3901 continue |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
3902 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
|
3903 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
|
3904 else: |
6584
29c77e5dfb3c
walk: remove rel and exact returns
Matt Mackall <mpm@selenic.com>
parents:
6583
diff
changeset
|
3905 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
|
3906 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
|
3907 |
1c69c73d85d9
locate: exit(1) if we didn't print any file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4195
diff
changeset
|
3908 return ret |
627 | 3909 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3910 @command('^log|history', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3911 [('f', 'follow', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3912 _('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
|
3913 ('', 'follow-first', None, |
15405
e4a17bb8472f
log: hide some low-utility options
Matt Mackall <mpm@selenic.com>
parents:
15404
diff
changeset
|
3914 _('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
|
3915 ('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
|
3916 ('C', 'copies', None, _('show copied files')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3917 ('k', 'keyword', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3918 _('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
|
3919 ('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
|
3920 ('', '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
|
3921 ('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
|
3922 ('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
|
3923 ('', 'only-branch', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3924 _('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
|
3925 _('BRANCH')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3926 ('b', 'branch', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3927 _('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
|
3928 ('P', 'prune', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3929 _('do not display revision or any of its ancestors'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3930 ] + logopts + walkopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
3931 _('[OPTION]... [FILE]')) |
1031
503aaf19a040
Rewrite log command. New version is faster and more featureful.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1030
diff
changeset
|
3932 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
|
3933 """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
|
3934 |
2741
ae5ce3454ef5
log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2739
diff
changeset
|
3935 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
|
3936 project. |
ae5ce3454ef5
log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2739
diff
changeset
|
3937 |
15104
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
3938 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
|
3939 --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
|
3940 used as the starting revision. |
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
3941 |
2741
ae5ce3454ef5
log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2739
diff
changeset
|
3942 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
|
3943 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
|
3944 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
|
3945 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
|
3946 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
3947 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
|
3948 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
|
3949 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
|
3950 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
|
3951 |
12390
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
3952 .. note:: |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
3953 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
|
3954 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
|
3955 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
|
3956 will appear in files:. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
3957 |
15105
6e91fba485fa
log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents:
15104
diff
changeset
|
3958 .. note:: |
6e91fba485fa
log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents:
15104
diff
changeset
|
3959 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
|
3960 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
|
3961 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
|
3962 switch. |
6e91fba485fa
log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents:
15104
diff
changeset
|
3963 |
15103
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3964 .. container:: verbose |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3965 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3966 Some examples: |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3967 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3968 - 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
|
3969 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3970 hg log -v |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3971 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3972 - changesets ancestral to the working directory:: |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3973 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3974 hg log -f |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3975 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3976 - 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
|
3977 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3978 hg log -l 10 -b . |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3979 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3980 - 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
|
3981 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3982 hg log --removed file.c |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3983 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3984 - 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
|
3985 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3986 hg log -Mp lib/ |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3987 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3988 - 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
|
3989 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3990 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
|
3991 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3992 - 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
|
3993 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3994 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
|
3995 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3996 - 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
|
3997 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
3998 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
|
3999 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4000 - 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
|
4001 |
5ca8c111e9aa
log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents:
15081
diff
changeset
|
4002 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
|
4003 |
15104
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
4004 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
|
4005 |
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
4006 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
|
4007 specifying revisions. |
a20f5088013a
log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents:
15103
diff
changeset
|
4008 |
16568
770190bff625
help: add reference to template help (issue3413)
A. S. Budden <abudden@gmail.com>
parents:
16551
diff
changeset
|
4009 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
|
4010 specifying custom templates. |
770190bff625
help: add reference to template help (issue3413)
A. S. Budden <abudden@gmail.com>
parents:
16551
diff
changeset
|
4011 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4012 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4013 """ |
17181
6f71167292f2
log: support --graph without graphlog extension
Patrick Mezard <patrick@mezard.eu>
parents:
17168
diff
changeset
|
4014 if opts.get('graph'): |
6f71167292f2
log: support --graph without graphlog extension
Patrick Mezard <patrick@mezard.eu>
parents:
17168
diff
changeset
|
4015 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
|
4016 |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
4017 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
|
4018 limit = cmdutil.loglimit(opts) |
1756
f29857aaa053
add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1747
diff
changeset
|
4019 count = 0 |
f29857aaa053
add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1747
diff
changeset
|
4020 |
16175
280e834c9d15
log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents:
16163
diff
changeset
|
4021 getrenamed, endrev = None, None |
280e834c9d15
log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents:
16163
diff
changeset
|
4022 if opts.get('copies'): |
280e834c9d15
log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents:
16163
diff
changeset
|
4023 if opts.get('rev'): |
280e834c9d15
log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents:
16163
diff
changeset
|
4024 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
|
4025 getrenamed = templatekw.getrenamedfn(repo, endrev=endrev) |
3197 | 4026 |
3813 | 4027 df = False |
17308
2e0805f59736
log: make opts entries optional (issue2423)
Patrick Mezard <patrick@mezard.eu>
parents:
17299
diff
changeset
|
4028 if opts.get("date"): |
3813 | 4029 df = util.matchdate(opts["date"]) |
4030 | |
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
|
4031 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
|
4032 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
|
4033 |
11488
f786fc4b8764
log: follow filenames through renames (issue647)
Mads Kiilerich <mads@kiilerich.com>
parents:
11459
diff
changeset
|
4034 displayer = cmdutil.show_changeset(ui, repo, opts, True) |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4035 def prep(ctx, fns): |
9655
6d7d3f849062
walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents:
9654
diff
changeset
|
4036 rev = ctx.rev() |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4037 parents = [p for p in repo.changelog.parentrevs(rev) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4038 if p != nullrev] |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4039 if opts.get('no_merges') and len(parents) == 2: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4040 return |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4041 if opts.get('only_merges') and len(parents) != 2: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4042 return |
10957
0d5f139b23c1
commands: Add 'hg log --branch' and deprecate 'hg log --only-branch'
Steve Losh <steve@stevelosh.com>
parents:
10934
diff
changeset
|
4043 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
|
4044 return |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4045 if df and not df(ctx.date()[0]): |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4046 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
|
4047 |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4048 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
|
4049 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
|
4050 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
|
4051 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
|
4052 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
|
4053 break |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4054 else: |
988409e44a76
i18n: use "encoding.lower()" to normalize specified keywords for log searching
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15717
diff
changeset
|
4055 return |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4056 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
|
4057 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
|
4058 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
|
4059 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
|
4060 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
|
4061 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
|
4062 break |
9663
4164a17e7126
log: tidy up some filter tests
Matt Mackall <mpm@selenic.com>
parents:
9662
diff
changeset
|
4063 else: |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4064 return |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4065 |
10060
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10021
diff
changeset
|
4066 copies = None |
16175
280e834c9d15
log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents:
16163
diff
changeset
|
4067 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
|
4068 copies = [] |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4069 for fn in ctx.files(): |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4070 rename = getrenamed(fn, rev) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4071 if rename: |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4072 copies.append((fn, rename[0])) |
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4073 |
11488
f786fc4b8764
log: follow filenames through renames (issue647)
Mads Kiilerich <mads@kiilerich.com>
parents:
11459
diff
changeset
|
4074 revmatchfn = None |
f786fc4b8764
log: follow filenames through renames (issue647)
Mads Kiilerich <mads@kiilerich.com>
parents:
11459
diff
changeset
|
4075 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
|
4076 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
|
4077 # 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
|
4078 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
|
4079 else: |
28ddf67198b2
log: include unmodified-in-merge files in log diff/stat (issue2383)
Mads Kiilerich <mads@kiilerich.com>
parents:
12129
diff
changeset
|
4080 revmatchfn = matchfn |
11488
f786fc4b8764
log: follow filenames through renames (issue647)
Mads Kiilerich <mads@kiilerich.com>
parents:
11459
diff
changeset
|
4081 |
f786fc4b8764
log: follow filenames through renames (issue647)
Mads Kiilerich <mads@kiilerich.com>
parents:
11459
diff
changeset
|
4082 displayer.show(ctx, copies=copies, matchfn=revmatchfn) |
9662
f3d60543924f
walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents:
9656
diff
changeset
|
4083 |
9665
1de5ebfa5585
walkchangerevs: drop ui arg
Matt Mackall <mpm@selenic.com>
parents:
9663
diff
changeset
|
4084 for ctx in cmdutil.walkchangerevs(repo, matchfn, opts, prep): |
18711
6b786dc88612
commands: exit from the log loop at the right time
Bryan O'Sullivan <bryano@fb.com>
parents:
18703
diff
changeset
|
4085 if displayer.flush(ctx.rev()): |
6b786dc88612
commands: exit from the log loop at the right time
Bryan O'Sullivan <bryano@fb.com>
parents:
18703
diff
changeset
|
4086 count += 1 |
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
|
4087 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
|
4088 break |
10152
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
4089 displayer.close() |
255 | 4090 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4091 @command('manifest', |
14399
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4092 [('r', 'rev', '', _('revision to display'), _('REV')), |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4093 ('', '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
|
4094 _('[-r REV]')) |
14399
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4095 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
|
4096 """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
|
4097 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4098 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
|
4099 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
|
4100 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
|
4101 |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4102 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
|
4103 With --debug, print file revision hashes. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4104 |
14399
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4105 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
|
4106 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
|
4107 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4108 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4109 """ |
17911
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4110 |
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4111 fm = ui.formatter('manifest', opts) |
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4112 |
14399
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4113 if opts.get('all'): |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4114 if rev or node: |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4115 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
|
4116 |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4117 res = [] |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4118 prefix = "data/" |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4119 suffix = ".i" |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4120 plen = len(prefix) |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4121 slen = len(suffix) |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4122 lock = repo.lock() |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4123 try: |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4124 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
|
4125 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
|
4126 res.append(fn[plen:-slen]) |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4127 finally: |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4128 lock.release() |
17376
3738d6254bd3
manifest: remove redundant sorted() call for --all
Adrian Buehlmann <adrian@cadifra.com>
parents:
17370
diff
changeset
|
4129 for f in res: |
17911
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4130 fm.startitem() |
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4131 fm.write("path", '%s\n', f) |
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4132 fm.end() |
14399
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14382
diff
changeset
|
4133 return |
3736 | 4134 |
5155
13d23d66a6cd
manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents:
5148
diff
changeset
|
4135 if rev and node: |
13d23d66a6cd
manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents:
5148
diff
changeset
|
4136 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
|
4137 |
13d23d66a6cd
manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents:
5148
diff
changeset
|
4138 if not node: |
13d23d66a6cd
manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents:
5148
diff
changeset
|
4139 node = rev |
13d23d66a6cd
manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents:
5148
diff
changeset
|
4140 |
17911
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4141 char = {'l': '@', 'x': '*', '': ''} |
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4142 mode = {'l': '644', 'x': '755', '': '644'} |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
4143 ctx = scmutil.revsingle(repo, node) |
17911
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4144 mf = ctx.manifest() |
6749
51b0e799352f
manifest: remove execf/linkf methods
Matt Mackall <mpm@selenic.com>
parents:
6748
diff
changeset
|
4145 for f in ctx: |
17911
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4146 fm.startitem() |
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4147 fl = ctx[f].flags() |
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4148 fm.condwrite(ui.debugflag, 'hash', '%s ', hex(mf[f])) |
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4149 fm.condwrite(ui.verbose, 'mode type', '%s %1s ', mode[fl], char[fl]) |
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4150 fm.write('path', '%s\n', f) |
8a8d1a2fd19d
manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17910
diff
changeset
|
4151 fm.end() |
255 | 4152 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4153 @command('^merge', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4154 [('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
|
4155 ('r', 'rev', '', _('revision to merge'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4156 ('P', 'preview', None, |
14852
cac04f2f475b
commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents:
14840
diff
changeset
|
4157 _('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
|
4158 ] + mergetoolopts, |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4159 _('[-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
|
4160 def merge(ui, repo, node=None, **opts): |
4014
509342f95564
various doc fixes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
4013
diff
changeset
|
4161 """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
|
4162 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4163 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
|
4164 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
|
4165 |
1cd3775e097c
commands: better merge help text
Martin Geisler <mg@daimi.au.dk>
parents:
7976
diff
changeset
|
4166 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
|
4167 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
|
4168 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
|
4169 two parents. |
2915
013921c753bd
merge with other head by default, not tip.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2911
diff
changeset
|
4170 |
12750
05bd2658bbb3
merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents:
12727
diff
changeset
|
4171 ``--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
|
4172 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
|
4173 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
|
4174 |
2915
013921c753bd
merge with other head by default, not tip.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2911
diff
changeset
|
4175 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
|
4176 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
|
4177 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
|
4178 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
|
4179 |
12750
05bd2658bbb3
merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents:
12727
diff
changeset
|
4180 :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
|
4181 |
11452
eac141407b85
merge: document how to 'undo' a merge
Matt Mackall <mpm@selenic.com>
parents:
11442
diff
changeset
|
4182 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
|
4183 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
|
4184 all changes. |
eac141407b85
merge: document how to 'undo' a merge
Matt Mackall <mpm@selenic.com>
parents:
11442
diff
changeset
|
4185 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4186 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
|
4187 """ |
2806
0bf22c109cc3
Factor doupdate into _lookup + hg.update
Matt Mackall <mpm@selenic.com>
parents:
2803
diff
changeset
|
4188 |
8387
50b6af595e0c
merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8366
diff
changeset
|
4189 if opts.get('rev') and node: |
4450
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
4190 raise util.Abort(_("please specify just one revision")) |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
4191 if not node: |
8387
50b6af595e0c
merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8366
diff
changeset
|
4192 node = opts.get('rev') |
4450
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
4193 |
16708
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4194 if node: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4195 node = scmutil.revsingle(repo, node).node() |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4196 |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4197 if not node and repo._bookmarkcurrent: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4198 bmheads = repo.bookmarkheads(repo._bookmarkcurrent) |
18122
730b769fb634
bookmarks: fix head selection for merge with two bookmarked heads
Mads Kiilerich <mads@kiilerich.com>
parents:
17984
diff
changeset
|
4199 curhead = repo[repo._bookmarkcurrent].node() |
16708
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4200 if len(bmheads) == 2: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4201 if curhead == bmheads[0]: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4202 node = bmheads[1] |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4203 else: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4204 node = bmheads[0] |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4205 elif len(bmheads) > 2: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4206 raise util.Abort(_("multiple matching bookmarks to merge - " |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4207 "please merge with an explicit rev or bookmark"), |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4208 hint=_("run 'hg heads' to see all heads")) |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4209 elif len(bmheads) <= 1: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4210 raise util.Abort(_("no matching bookmark to merge - " |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4211 "please merge with an explicit rev or bookmark"), |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4212 hint=_("run 'hg heads' to see all heads")) |
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 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
|
4215 branch = repo[None].branch() |
6844
a38dff85d31f
merge: use correct branch name for counting heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6843
diff
changeset
|
4216 bheads = repo.branchheads(branch) |
16708
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4217 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
|
4218 |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4219 if len(nbhs) > 2: |
14198
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4220 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
|
4221 "please merge with an explicit rev") |
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4222 % (branch, len(bheads)), |
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4223 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
|
4224 |
13878
a8d13ee0ce68
misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents:
13855
diff
changeset
|
4225 parent = repo.dirstate.p1() |
17386
45b5eb2941d0
merge: handle case when heads are all bookmarks
John Li <jli@circularly.org>
parents:
17370
diff
changeset
|
4226 if len(nbhs) <= 1: |
16708
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4227 if len(bheads) > 1: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4228 raise util.Abort(_("heads are bookmarked - " |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4229 "please merge with an explicit rev"), |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4230 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
|
4231 if len(repo.heads()) > 1: |
14198
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4232 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
|
4233 "please merge with an explicit rev") |
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4234 % branch, |
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4235 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
|
4236 msg, hint = _('nothing to merge'), None |
15618
0aca2695a110
merge: remove excess creation of changectx
Kevin Bullock <kbullock@ringworld.org>
parents:
15614
diff
changeset
|
4237 if parent != repo.lookup(branch): |
15619
6c8573dd1b6b
merge: make 'nothing to merge' aborts consistent
Kevin Bullock <kbullock@ringworld.org>
parents:
15618
diff
changeset
|
4238 hint = _("use 'hg update' instead") |
6c8573dd1b6b
merge: make 'nothing to merge' aborts consistent
Kevin Bullock <kbullock@ringworld.org>
parents:
15618
diff
changeset
|
4239 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
|
4240 |
6723
1fe6f365df2e
merge: only in-branch merges can be implicit
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6686
diff
changeset
|
4241 if parent not in bheads: |
14198
8f11fd321014
commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents:
14197
diff
changeset
|
4242 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
|
4243 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
|
4244 "explicit revision")) |
16708
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4245 if parent == nbhs[0]: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4246 node = nbhs[-1] |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4247 else: |
4a02cf4fbb2e
merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents:
16705
diff
changeset
|
4248 node = nbhs[0] |
8387
50b6af595e0c
merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8366
diff
changeset
|
4249 |
8834
6d36fc70754e
merge: rename -S/--show option to -P/--preview
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8815
diff
changeset
|
4250 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
|
4251 # 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
|
4252 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
|
4253 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
|
4254 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
|
4255 |
8387
50b6af595e0c
merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8366
diff
changeset
|
4256 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
|
4257 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
|
4258 displayer.show(repo[node]) |
10152
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
4259 displayer.close() |
8387
50b6af595e0c
merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8366
diff
changeset
|
4260 return 0 |
50b6af595e0c
merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8366
diff
changeset
|
4261 |
12788
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4262 try: |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4263 # 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
|
4264 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
|
4265 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
|
4266 finally: |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4267 ui.setconfig('ui', 'forcemerge', '') |
2029
d436b21b20dc
rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2022
diff
changeset
|
4268 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4269 @command('outgoing|out', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4270 [('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
|
4271 ('r', 'rev', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4272 _('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
|
4273 ('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
|
4274 ('B', 'bookmarks', False, _('compare bookmarks')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4275 ('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
|
4276 _('BRANCH')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4277 ] + logopts + remoteopts + subrepoopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4278 _('[-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
|
4279 def outgoing(ui, repo, dest=None, **opts): |
10376 | 4280 """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
|
4281 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4282 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
|
4283 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
|
4284 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
|
4285 |
10376 | 4286 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
|
4287 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4288 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
|
4289 """ |
17182
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4290 if opts.get('graph'): |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4291 cmdutil.checkunsupportedgraphflags([], opts) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4292 o = hg._outgoing(ui, repo, dest, opts) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4293 if o is None: |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4294 return |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4295 |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4296 revdag = cmdutil.graphrevs(repo, o, opts) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4297 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
|
4298 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
|
4299 cmdutil.displaygraph(ui, revdag, displayer, showparents, |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4300 graphmod.asciiedges) |
cdf1532d89c6
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents:
17181
diff
changeset
|
4301 return 0 |
13366
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
4302 |
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
4303 if opts.get('bookmarks'): |
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
4304 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
|
4305 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
|
4306 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
|
4307 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
|
4308 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
|
4309 return 0 |
14076
924c82157d46
url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents:
14073
diff
changeset
|
4310 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
|
4311 return bookmarks.diff(ui, other, repo) |
c756e9166417
bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents:
13344
diff
changeset
|
4312 |
14360
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
4313 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
|
4314 try: |
14362
8c740a850ad7
commands: replace 'x = f(); return x' with 'return f()'
Martin Geisler <mg@lazybytes.net>
parents:
14361
diff
changeset
|
4315 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
|
4316 finally: |
ab687820c4cc
subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents:
14014
diff
changeset
|
4317 del repo._subtoppath |
920 | 4318 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4319 @command('parents', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4320 [('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
|
4321 ] + templateopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4322 _('[-r REV] [FILE]')) |
3658
d12c8668b102
remove legacy hg parents REV syntax
Matt Mackall <mpm@selenic.com>
parents:
3657
diff
changeset
|
4323 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
|
4324 """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
|
4325 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4326 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
|
4327 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
|
4328 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
|
4329 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
|
4330 argument to --rev if given) is printed. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4331 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4332 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4333 """ |
12925
6eab8f0df2ca
commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents:
12918
diff
changeset
|
4334 |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
4335 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
|
4336 |
4586
1fcc076fcb17
Make parents with a file but not a revision use working directory revision.
Brendan Cully <brendan@kublai.com>
parents:
4451
diff
changeset
|
4337 if file_: |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
4338 m = scmutil.match(ctx, (file_,), opts) |
6582
5acbdd3941c4
walk: remove remaining users of cmdutils.matchpats
Matt Mackall <mpm@selenic.com>
parents:
6579
diff
changeset
|
4339 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
|
4340 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
|
4341 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
|
4342 filenodes = [] |
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4343 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
|
4344 if not cp: |
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4345 continue |
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4346 try: |
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4347 filenodes.append(cp.filenode(file_)) |
7633 | 4348 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
|
4349 pass |
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4350 if not filenodes: |
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4351 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
|
4352 fl = repo.file(file_) |
7361
9fe97eea5510
linkrev: take a revision number rather than a hash
Matt Mackall <mpm@selenic.com>
parents:
7308
diff
changeset
|
4353 p = [repo.lookup(fl.linkrev(fl.rev(fn))) for fn in filenodes] |
255 | 4354 else: |
5298
cba2a689117d
parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents:
5230
diff
changeset
|
4355 p = [cp.node() for cp in ctx.parents()] |
255 | 4356 |
3643
b4ad640a3bcf
templates: move changeset templating bits to cmdutils
Matt Mackall <mpm@selenic.com>
parents:
3631
diff
changeset
|
4357 displayer = cmdutil.show_changeset(ui, repo, opts) |
255 | 4358 for n in p: |
1092 | 4359 if n != nullid: |
7743
ec9b726a9428
commands: fix paths command docstring indention
Martin Geisler <mg@daimi.au.dk>
parents:
7739
diff
changeset
|
4360 displayer.show(repo[n]) |
10152
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
4361 displayer.close() |
255 | 4362 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4363 @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
|
4364 def paths(ui, repo, search=None): |
7691
bcdc2fe3fd07
Clarified 'hg paths' command help
Bill Barry <after.fallout@gmail.com>
parents:
7684
diff
changeset
|
4365 """show aliases for remote repositories |
bcdc2fe3fd07
Clarified 'hg paths' command help
Bill Barry <after.fallout@gmail.com>
parents:
7684
diff
changeset
|
4366 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4367 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
|
4368 show definition of all available names. |
7743
ec9b726a9428
commands: fix paths command docstring indention
Martin Geisler <mg@daimi.au.dk>
parents:
7739
diff
changeset
|
4369 |
14331
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4370 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
|
4371 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
|
4372 |
12083
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
12067
diff
changeset
|
4373 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
|
4374 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
|
4375 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
|
4376 |
11007
a0102da324ab
commands: revised documentation of 'default' and 'default-push'
Faheem Mitha <faheem@email.unc.edu>
parents:
10948
diff
changeset
|
4377 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
|
4378 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
|
4379 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
|
4380 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
|
4381 ``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
|
4382 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
|
4383 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
|
4384 ``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
|
4385 :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
|
4386 :hg:`bundle`) operations. |
10933
e3396b218e10
Document 'default' and 'default-push' in paths docstring
Faheem Mitha <faheem@email.unc.edu>
parents:
10645
diff
changeset
|
4387 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
4388 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
|
4389 |
35e2d453cf0d
commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11488
diff
changeset
|
4390 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4391 """ |
779 | 4392 if search: |
4393 for name, path in ui.configitems("paths"): | |
4394 if name == search: | |
14331
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4395 ui.status("%s\n" % util.hidepassword(path)) |
779 | 4396 return |
14331
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4397 if not ui.quiet: |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4398 ui.warn(_("not found!\n")) |
779 | 4399 return 1 |
4400 else: | |
4401 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
|
4402 if ui.quiet: |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4403 ui.write("%s\n" % name) |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4404 else: |
3b9a896af09c
paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14326
diff
changeset
|
4405 ui.write("%s = %s\n" % (name, util.hidepassword(path))) |
779 | 4406 |
17981
e689b0d91546
command: remove phase from the list of basic command
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
17949
diff
changeset
|
4407 @command('phase', |
15849
513ca86b88ef
phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents:
15837
diff
changeset
|
4408 [('p', 'public', False, _('set changeset phase to public')), |
513ca86b88ef
phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents:
15837
diff
changeset
|
4409 ('d', 'draft', False, _('set changeset phase to draft')), |
513ca86b88ef
phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents:
15837
diff
changeset
|
4410 ('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
|
4411 ('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
|
4412 ('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
|
4413 ], |
15854
2260e6ed09c3
phase: the REV argument can be repeated
Martin Geisler <mg@aragost.com>
parents:
15853
diff
changeset
|
4414 _('[-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
|
4415 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
|
4416 """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
|
4417 |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4418 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
|
4419 |
15851
05ccad068313
phase: use standard syntax for command line flags
Martin Geisler <mg@aragost.com>
parents:
15850
diff
changeset
|
4420 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
|
4421 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
|
4422 |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4423 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
|
4424 lower phase to an higher phase. Phases are ordered as follows:: |
15832 | 4425 |
4426 public < draft < secret | |
15906
aad565319fa3
phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15877
diff
changeset
|
4427 |
16097
8dc573a9c5e5
phase: when phase cannot be reduced, hint at --force and return 1 (BC)
Patrick Mezard <patrick@mezard.eu>
parents:
16095
diff
changeset
|
4428 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
|
4429 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
|
4430 """ |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4431 # 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
|
4432 targetphase = None |
15853
fbb68b382040
commands: no need to rename merge and phases on import
Martin Geisler <mg@aragost.com>
parents:
15852
diff
changeset
|
4433 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
|
4434 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
|
4435 if targetphase is not None: |
15833
3cf2bb3a9fcc
phase: mark messages for i18n
Matt Mackall <mpm@selenic.com>
parents:
15832
diff
changeset
|
4436 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
|
4437 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
|
4438 |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4439 # 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
|
4440 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
|
4441 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
|
4442 if not revs: |
15958
0d2ac0299020
commands: drop exclamation mark in abort message
Idan Kamara <idankk86@gmail.com>
parents:
15957
diff
changeset
|
4443 raise util.Abort(_('no revisions specified')) |
15831
0ecaf1e72609
phase: drop reference to working directory phase
Matt Mackall <mpm@selenic.com>
parents:
15830
diff
changeset
|
4444 |
16024
7c967c4a6144
phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16023
diff
changeset
|
4445 revs = scmutil.revrange(repo, revs) |
7c967c4a6144
phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16023
diff
changeset
|
4446 |
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 lock = None |
15906
aad565319fa3
phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15877
diff
changeset
|
4448 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
|
4449 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
|
4450 # display |
16024
7c967c4a6144
phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16023
diff
changeset
|
4451 for r in revs: |
7c967c4a6144
phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16023
diff
changeset
|
4452 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
|
4453 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
|
4454 else: |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4455 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
|
4456 try: |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4457 # set phase |
16659
58edd786e96f
phase: make if abort on nullid for the good reason
Patrick Mezard <patrick@mezard.eu>
parents:
16657
diff
changeset
|
4458 if not revs: |
17299
e51d4aedace9
check-code: indent 4 spaces in py files
Mads Kiilerich <mads@kiilerich.com>
parents:
17292
diff
changeset
|
4459 raise util.Abort(_('empty revision set')) |
16659
58edd786e96f
phase: make if abort on nullid for the good reason
Patrick Mezard <patrick@mezard.eu>
parents:
16657
diff
changeset
|
4460 nodes = [repo[r].node() for r in revs] |
16657
b6081c2c4647
phases: introduce phasecache
Patrick Mezard <patrick@mezard.eu>
parents:
16648
diff
changeset
|
4461 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
|
4462 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
|
4463 if opts['force']: |
15853
fbb68b382040
commands: no need to rename merge and phases on import
Martin Geisler <mg@aragost.com>
parents:
15852
diff
changeset
|
4464 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
|
4465 finally: |
8ed112ed774a
phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15829
diff
changeset
|
4466 lock.release() |
18210
f730ed2e093d
phases: prepare phase command for filtering
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18209
diff
changeset
|
4467 # moving revision from public to draft may hide them |
f730ed2e093d
phases: prepare phase command for filtering
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18209
diff
changeset
|
4468 # We have to check result on an unfiltered repository |
f730ed2e093d
phases: prepare phase command for filtering
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18209
diff
changeset
|
4469 unfi = repo.unfiltered() |
f730ed2e093d
phases: prepare phase command for filtering
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18209
diff
changeset
|
4470 newdata = repo._phasecache.getphaserevs(unfi) |
16715
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4471 changes = sum(o != newdata[i] for i, o in enumerate(olddata)) |
18210
f730ed2e093d
phases: prepare phase command for filtering
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18209
diff
changeset
|
4472 cl = unfi.changelog |
16715
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4473 rejected = [n for n in nodes |
18209
6a91cbb67907
phases: avoid changectx creation while checking command result
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
18181
diff
changeset
|
4474 if newdata[cl.rev(n)] < targetphase] |
16715
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4475 if rejected: |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4476 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
|
4477 'phase, use --force\n') % len(rejected)) |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4478 ret = 1 |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4479 if changes: |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4480 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
|
4481 if ret: |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4482 ui.status(msg) |
15906
aad565319fa3
phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15877
diff
changeset
|
4483 else: |
16715
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4484 ui.note(msg) |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4485 else: |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4486 ui.warn(_('no phases changed\n')) |
1e24da6fcd67
phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents:
16713
diff
changeset
|
4487 ret = 1 |
15968
bf87b6b95ce5
phase: alway return a value
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15959
diff
changeset
|
4488 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
|
4489 |
5224
20817af258d8
pull -u: if "url#rev" was given, update to rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5222
diff
changeset
|
4490 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
|
4491 if modheads == 0: |
16107
a3dcc59054ca
pull: backout change to return code
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
4492 return |
2019
ced2d3620f95
add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1996
diff
changeset
|
4493 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
|
4494 movemarkfrom = repo['.'].node() |
14485
610873cf064a
Make pull -u behave like pull && update
Brendan Cully <brendan@kublai.com>
parents:
14466
diff
changeset
|
4495 try: |
16019
eb85d5f89fef
bookmarks: move current bookmark on update -u and bare pull -u (issue3222)
Matt Mackall <mpm@selenic.com>
parents:
16010
diff
changeset
|
4496 ret = hg.update(repo, checkout) |
14485
610873cf064a
Make pull -u behave like pull && update
Brendan Cully <brendan@kublai.com>
parents:
14466
diff
changeset
|
4497 except util.Abort, inst: |
16230
d4d35fd0889d
update: don't translate the abort message twice
Javi Merino <cibervicho@gmail.com>
parents:
16219
diff
changeset
|
4498 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
|
4499 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
|
4500 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
|
4501 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
|
4502 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
|
4503 return ret |
2019
ced2d3620f95
add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1996
diff
changeset
|
4504 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
|
4505 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
|
4506 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
|
4507 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
|
4508 elif currentbranchheads > 1: |
16683 | 4509 ui.status(_("(run 'hg heads .' to see heads, 'hg merge' to " |
4510 "merge)\n")) | |
2019
ced2d3620f95
add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1996
diff
changeset
|
4511 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
|
4512 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
|
4513 else: |
ced2d3620f95
add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1996
diff
changeset
|
4514 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
|
4515 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4516 @command('^pull', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4517 [('u', 'update', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4518 _('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
|
4519 ('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
|
4520 ('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
|
4521 ('B', 'bookmark', [], _("bookmark to pull"), _('BOOKMARK')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4522 ('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
|
4523 _('BRANCH')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4524 ] + remoteopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4525 _('[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]')) |
404 | 4526 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
|
4527 """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
|
4528 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4529 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
|
4530 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4531 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
|
4532 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
|
4533 -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
|
4534 project in the working directory. |
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
4535 |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11185
diff
changeset
|
4536 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
|
4537 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
|
4538 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
|
4539 -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
|
4540 |
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
|
4541 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
|
4542 See :hg:`help urls` for more information. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4543 |
16107
a3dcc59054ca
pull: backout change to return code
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
4544 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
|
4545 """ |
10379
a78bfaf988e1
add -b/--branch option to clone, bundle, incoming, outgoing, pull, push
Sune Foldager <cryo@cyanite.org>
parents:
10376
diff
changeset
|
4546 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
|
4547 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
|
4548 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
|
4549 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
|
4550 |
18851
a60963c02f92
pull: list bookmarks before pulling changesets (issue3873)
Siddharth Agarwal <sid0@fb.com>
parents:
18848
diff
changeset
|
4551 remotebookmarks = other.listkeys('bookmarks') |
a60963c02f92
pull: list bookmarks before pulling changesets (issue3873)
Siddharth Agarwal <sid0@fb.com>
parents:
18848
diff
changeset
|
4552 |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4553 if opts.get('bookmark'): |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4554 if not revs: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4555 revs = [] |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4556 for b in opts['bookmark']: |
18848
cc741817a49e
pull: rename local rb to remotebookmarks
Siddharth Agarwal <sid0@fb.com>
parents:
18828
diff
changeset
|
4557 if b not in remotebookmarks: |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4558 raise util.Abort(_('remote bookmark %s not found!') % b) |
18848
cc741817a49e
pull: rename local rb to remotebookmarks
Siddharth Agarwal <sid0@fb.com>
parents:
18828
diff
changeset
|
4559 revs.append(remotebookmarks[b]) |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4560 |
4478
b2b55acbacdd
Add support for url#id syntax
Matt Mackall <mpm@selenic.com>
parents:
4474
diff
changeset
|
4561 if revs: |
5259
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
5248
diff
changeset
|
4562 try: |
4478
b2b55acbacdd
Add support for url#id syntax
Matt Mackall <mpm@selenic.com>
parents:
4474
diff
changeset
|
4563 revs = [other.lookup(rev) for rev in revs] |
7637 | 4564 except error.CapabilityError: |
12128
090dc5eef746
pull: lowercase error message
Martin Geisler <mg@lazybytes.net>
parents:
12083
diff
changeset
|
4565 err = _("other repository doesn't support revision lookup, " |
7637 | 4566 "so a rev cannot be specified.") |
4567 raise util.Abort(err) | |
4478
b2b55acbacdd
Add support for url#id syntax
Matt Mackall <mpm@selenic.com>
parents:
4474
diff
changeset
|
4568 |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
4569 modheads = repo.pull(other, heads=revs, force=opts.get('force')) |
18851
a60963c02f92
pull: list bookmarks before pulling changesets (issue3873)
Siddharth Agarwal <sid0@fb.com>
parents:
18848
diff
changeset
|
4570 bookmarks.updatefromremote(ui, repo, remotebookmarks, source) |
9645
02f40b2ece3f
commands: use rev from remote repo when updating as part of a pull
timeless@mozdev.org
parents:
9644
diff
changeset
|
4571 if checkout: |
02f40b2ece3f
commands: use rev from remote repo when updating as part of a pull
timeless@mozdev.org
parents:
9644
diff
changeset
|
4572 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
|
4573 repo._subtoppath = source |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4574 try: |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4575 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
|
4576 |
12852
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4577 finally: |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4578 del repo._subtoppath |
246
96cde50a746f
Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents:
245
diff
changeset
|
4579 |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4580 # update specified bookmarks |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4581 if opts.get('bookmark'): |
17922
7f5dab94e48c
bookmarks: introduce a bmstore to manage bookmark persistence
Augie Fackler <raf@durin42.com>
parents:
17912
diff
changeset
|
4582 marks = repo._bookmarks |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4583 for b in opts['bookmark']: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4584 # 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
|
4585 ui.status(_("importing bookmark %s\n") % b) |
18848
cc741817a49e
pull: rename local rb to remotebookmarks
Siddharth Agarwal <sid0@fb.com>
parents:
18828
diff
changeset
|
4586 marks[b] = repo[remotebookmarks[b]].node() |
17922
7f5dab94e48c
bookmarks: introduce a bmstore to manage bookmark persistence
Augie Fackler <raf@durin42.com>
parents:
17912
diff
changeset
|
4587 marks.write() |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4588 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4589 return ret |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4590 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4591 @command('^push', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4592 [('f', 'force', None, _('force push')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4593 ('r', 'rev', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4594 _('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
|
4595 _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4596 ('B', 'bookmark', [], _("bookmark to push"), _('BOOKMARK')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4597 ('b', 'branch', [], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4598 _('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
|
4599 ('', '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
|
4600 ] + remoteopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4601 _('[-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
|
4602 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
|
4603 """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
|
4604 |
11217
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4605 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
|
4606 destination. |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4607 |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4608 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
|
4609 in the destination repository from the current one. |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4610 |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4611 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
|
4612 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
|
4613 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
|
4614 before pushing. |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4615 |
11219
39a7f69a0a9a
commands: document --new-branch flag for push
Martin Geisler <mg@aragost.com>
parents:
11218
diff
changeset
|
4616 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
|
4617 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
|
4618 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
|
4619 |
11217
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4620 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
|
4621 changesets on all branches. |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4622 |
1b8aa9ffa7dc
commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents:
11103
diff
changeset
|
4623 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
|
4624 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
|
4625 |
17190
d99d0b559084
bookmarks: document behavior of -B/--bookmark in help
Augie Fackler <raf@durin42.com>
parents:
17188
diff
changeset
|
4626 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
|
4627 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
|
4628 repository. |
d99d0b559084
bookmarks: document behavior of -B/--bookmark in help
Augie Fackler <raf@durin42.com>
parents:
17188
diff
changeset
|
4629 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
4630 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
|
4631 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
|
4632 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4633 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
|
4634 """ |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4635 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4636 if opts.get('bookmark'): |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4637 for b in opts['bookmark']: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4638 # 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
|
4639 if b in repo._bookmarks: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4640 opts.setdefault('rev', []).append(b) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4641 else: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4642 # 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
|
4643 # 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
|
4644 opts.setdefault('rev', []).append("null") |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4645 |
10365
d757bc0c7865
interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents:
10364
diff
changeset
|
4646 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
|
4647 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
|
4648 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
|
4649 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
|
4650 other = hg.peer(repo, opts, dest) |
4478
b2b55acbacdd
Add support for url#id syntax
Matt Mackall <mpm@selenic.com>
parents:
4474
diff
changeset
|
4651 if revs: |
17168
e058f4eec69c
push: accept revset argument for --rev
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
17149
diff
changeset
|
4652 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
|
4653 |
12852
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4654 repo._subtoppath = dest |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4655 try: |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4656 # 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
|
4657 c = repo[''] |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4658 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
|
4659 for s in sorted(subs): |
16022
04604d1a9fc3
push: more precise failure check on subrepo push
Matt Mackall <mpm@selenic.com>
parents:
16021
diff
changeset
|
4660 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
|
4661 return False |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4662 finally: |
5dbff89cf107
subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents:
12831
diff
changeset
|
4663 del repo._subtoppath |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4664 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
|
4665 newbranch=opts.get('new_branch')) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4666 |
16023
90f8b8dd0326
push: return 1 if no changes found (issue3228)
Matt Mackall <mpm@selenic.com>
parents:
16022
diff
changeset
|
4667 result = not result |
13368
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4668 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4669 if opts.get('bookmark'): |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4670 rb = other.listkeys('bookmarks') |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4671 for b in opts['bookmark']: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4672 # 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
|
4673 if b in repo._bookmarks: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4674 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
|
4675 new = repo[b].hex() |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4676 elif b in rb: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4677 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
|
4678 new = '' # delete |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4679 else: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4680 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
|
4681 'or remote repository!\n') % b) |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4682 return 2 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4683 old = rb.get(b, '') |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4684 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
|
4685 if not r: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4686 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
|
4687 if not result: |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4688 result = 2 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4689 |
d4ab9486e514
bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents:
13367
diff
changeset
|
4690 return result |
319 | 4691 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4692 @command('recover', []) |
245 | 4693 def recover(ui, repo): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4694 """roll back an interrupted transaction |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4695 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4696 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
|
4697 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4698 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
|
4699 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
|
4700 suggests it. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4701 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4702 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
|
4703 """ |
1516
0b1b029b4de3
Automatically run "verify" whenever we run "recover"
Matt Mackall <mpm@selenic.com>
parents:
1514
diff
changeset
|
4704 if repo.recover(): |
2778 | 4705 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
|
4706 return 1 |
245 | 4707 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4708 @command('^remove|rm', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4709 [('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
|
4710 ('f', 'force', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4711 _('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
|
4712 ] + walkopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4713 _('[OPTION]... FILE...')) |
2179
520dd3d28e9b
add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2175
diff
changeset
|
4714 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
|
4715 """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
|
4716 |
15114 | 4717 Schedule the indicated files for removal from the current branch. |
4718 | |
4719 This command schedules the files to be removed at the next commit. | |
4720 To undo a remove before that, see :hg:`revert`. To undo added | |
4721 files, see :hg:`forget`. | |
4722 | |
4723 .. container:: verbose | |
4724 | |
4725 -A/--after can be used to remove only files that have already | |
4726 been deleted, -f/--force can be used to force deletion, and -Af | |
4727 can be used to remove files from the next revision without | |
4728 deleting them from the working directory. | |
4729 | |
4730 The following table details the behavior of remove for different | |
4731 file states (columns) and option combinations (rows). The file | |
4732 states are Added [A], Clean [C], Modified [M] and Missing [!] | |
4733 (as reported by :hg:`status`). The actions are Warn, Remove | |
4734 (from branch) and Delete (from disk): | |
15037
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4735 |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4736 ======= == == == == |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4737 A C M ! |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4738 ======= == == == == |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4739 none W RD W R |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4740 -f R RD RD R |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4741 -A W W W R |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4742 -Af R R R R |
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
15023
diff
changeset
|
4743 ======= == == == == |
2309
b2f37c7026ca
remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2301
diff
changeset
|
4744 |
15114 | 4745 Note that remove never deletes files in Added [A] state from the |
4746 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
|
4747 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4748 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
|
4749 """ |
6346
8e3b651382f5
improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6336
diff
changeset
|
4750 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4751 ret = 0 |
6346
8e3b651382f5
improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6336
diff
changeset
|
4752 after, force = opts.get('after'), opts.get('force') |
8e3b651382f5
improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6336
diff
changeset
|
4753 if not pats and not after: |
2179
520dd3d28e9b
add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2175
diff
changeset
|
4754 raise util.Abort(_('no files specified')) |
6346
8e3b651382f5
improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6336
diff
changeset
|
4755 |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
4756 m = scmutil.match(repo[None], pats, opts) |
6761
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4757 s = repo.status(match=m, clean=True) |
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4758 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
|
4759 |
17848
66f0c78350ab
remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents:
17837
diff
changeset
|
4760 # warn about failure to delete explicit files/dirs |
66f0c78350ab
remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents:
17837
diff
changeset
|
4761 wctx = repo[None] |
8533
6062c6362b2e
remove: warn if unversionned files are specified (issue1454)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
8464
diff
changeset
|
4762 for f in m.files(): |
17848
66f0c78350ab
remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents:
17837
diff
changeset
|
4763 if f in repo.dirstate or f in wctx.dirs(): |
66f0c78350ab
remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents:
17837
diff
changeset
|
4764 continue |
66f0c78350ab
remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents:
17837
diff
changeset
|
4765 if os.path.exists(m.rel(f)): |
66f0c78350ab
remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents:
17837
diff
changeset
|
4766 if os.path.isdir(m.rel(f)): |
66f0c78350ab
remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents:
17837
diff
changeset
|
4767 ui.warn(_('not removing %s: no tracked files\n') % m.rel(f)) |
66f0c78350ab
remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents:
17837
diff
changeset
|
4768 else: |
14604
b1a534335548
forget, remove: don't note on nonexistent file twice
Idan Kamara <idankk86@gmail.com>
parents:
14564
diff
changeset
|
4769 ui.warn(_('not removing %s: file is untracked\n') % m.rel(f)) |
17848
66f0c78350ab
remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents:
17837
diff
changeset
|
4770 # missing files will generate a warning elsewhere |
66f0c78350ab
remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents:
17837
diff
changeset
|
4771 ret = 1 |
8533
6062c6362b2e
remove: warn if unversionned files are specified (issue1454)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
8464
diff
changeset
|
4772 |
6761
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4773 if force: |
14450
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4774 list = modified + deleted + clean + added |
6761
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4775 elif after: |
14450
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4776 list = deleted |
12129
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4777 for f in modified + added + clean: |
18053
0c2f0048125d
rm: drop misleading 'use -f' hint for the rm --after 'not removing' warning
Mads Kiilerich <madski@unity3d.com>
parents:
18039
diff
changeset
|
4778 ui.warn(_('not removing %s: file still exists\n') % m.rel(f)) |
12129
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4779 ret = 1 |
6761
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4780 else: |
14450
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4781 list = deleted + clean |
12129
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4782 for f in modified: |
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4783 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
|
4784 ' 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
|
4785 ret = 1 |
07ac2a560fce
remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents:
12128
diff
changeset
|
4786 for f in added: |
15115
c84b3f42d5ae
remove: suggest forget to undo adds
Matt Mackall <mpm@selenic.com>
parents:
15114
diff
changeset
|
4787 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
|
4788 ' (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
|
4789 ret = 1 |
6761
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4790 |
14450
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4791 for f in sorted(list): |
6761
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4792 if ui.verbose or not m.exact(f): |
cb981fc955fb
remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents:
6760
diff
changeset
|
4793 ui.status(_('removing %s\n') % m.rel(f)) |
6346
8e3b651382f5
improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6336
diff
changeset
|
4794 |
14450
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4795 wlock = repo.wlock() |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4796 try: |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4797 if not after: |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4798 for f in list: |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4799 if f in added: |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4800 continue # we never unlink added files on remove |
18143
242d2f4ec01c
util: fold ENOENT check into unlinkpath, controlled by new ignoremissing flag
Mads Kiilerich <madski@unity3d.com>
parents:
18133
diff
changeset
|
4801 util.unlinkpath(repo.wjoin(f), ignoremissing=True) |
14450
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4802 repo[None].forget(list) |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4803 finally: |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4804 wlock.release() |
d1a1578c5f78
commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents:
14435
diff
changeset
|
4805 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4806 return ret |
245 | 4807 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4808 @command('rename|move|mv', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4809 [('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
|
4810 ('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
|
4811 ] + walkopts + dryrunopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4812 _('[OPTION]... SOURCE... DEST')) |
1253
a45e717c61a8
Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1250
diff
changeset
|
4813 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
|
4814 """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
|
4815 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
4816 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
|
4817 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
|
4818 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
|
4819 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4820 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
|
4821 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
|
4822 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
|
4823 |
7807
bd8f44638847
help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents:
7765
diff
changeset
|
4824 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
|
4825 before that, see :hg:`revert`. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4826 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4827 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
|
4828 """ |
4914 | 4829 wlock = repo.wlock(False) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4914
diff
changeset
|
4830 try: |
5610
2493a478f395
copy: handle rename internally
Matt Mackall <mpm@selenic.com>
parents:
5589
diff
changeset
|
4831 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
|
4832 finally: |
8109
496ae1ea4698
switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents:
8088
diff
changeset
|
4833 wlock.release() |
1253
a45e717c61a8
Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1250
diff
changeset
|
4834 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4835 @command('resolve', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4836 [('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
|
4837 ('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
|
4838 ('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
|
4839 ('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
|
4840 ('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
|
4841 + mergetoolopts + walkopts, |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4842 _('[OPTION]... [FILE]...')) |
6518 | 4843 def resolve(ui, repo, *pats, **opts): |
11836
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4844 """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
|
4845 |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4846 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
|
4847 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
|
4848 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
|
4849 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
|
4850 :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
|
4851 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
|
4852 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
|
4853 |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4854 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
|
4855 |
12809
e5922564ab01
help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents:
12803
diff
changeset
|
4856 - :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
|
4857 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
|
4858 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
|
4859 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
|
4860 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
|
4861 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
|
4862 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
|
4863 |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4864 - :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
|
4865 (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
|
4866 to mark all unresolved files. |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4867 |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4868 - :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
|
4869 default is to mark all resolved files. |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4870 |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4871 - :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
|
4872 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
|
4873 |
53fdc0989047
resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents:
11777
diff
changeset
|
4874 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
|
4875 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
|
4876 commit after a conflicting merge. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4877 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4878 Returns 0 on success, 1 if any files fail a resolve attempt. |
6518 | 4879 """ |
4880 | |
9646
5b001f534452
commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents:
9645
diff
changeset
|
4881 all, mark, unmark, show, nostatus = \ |
5b001f534452
commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents:
9645
diff
changeset
|
4882 [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
|
4883 |
5a14a8f3b909
resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents:
7449
diff
changeset
|
4884 if (show and (mark or unmark)) or (mark and unmark): |
6518 | 4885 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
|
4886 if pats and all: |
5a14a8f3b909
resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents:
7449
diff
changeset
|
4887 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
|
4888 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
|
4889 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
|
4890 'use --all to remerge all files')) |
6518 | 4891 |
15856
6bed6cc6d0d0
commands: partial backout of fbb68b382040
Martin Geisler <mg@aragost.com>
parents:
15855
diff
changeset
|
4892 ms = mergemod.mergestate(repo) |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
4893 m = scmutil.match(repo[None], pats, opts) |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4894 ret = 0 |
6518 | 4895 |
4896 for f in ms: | |
6594 | 4897 if m(f): |
7527
5a14a8f3b909
resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents:
7449
diff
changeset
|
4898 if show: |
9646
5b001f534452
commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents:
9645
diff
changeset
|
4899 if nostatus: |
5b001f534452
commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents:
9645
diff
changeset
|
4900 ui.write("%s\n" % f) |
5b001f534452
commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents:
9645
diff
changeset
|
4901 else: |
10817
2096496b40ec
status: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10816
diff
changeset
|
4902 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
|
4903 label='resolve.' + |
2096496b40ec
status: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10816
diff
changeset
|
4904 {'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
|
4905 elif mark: |
6518 | 4906 ms.mark(f, "r") |
7527
5a14a8f3b909
resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents:
7449
diff
changeset
|
4907 elif unmark: |
6518 | 4908 ms.mark(f, "u") |
4909 else: | |
6747
f6c00b17387c
use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents:
6746
diff
changeset
|
4910 wctx = repo[None] |
6518 | 4911 mctx = wctx.parents()[-1] |
7847 | 4912 |
4913 # backup pre-resolve (merge uses .orig for its own purposes) | |
4914 a = repo.wjoin(f) | |
4915 util.copyfile(a, a + ".resolve") | |
4916 | |
12788
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4917 try: |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4918 # resolve file |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4919 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
|
4920 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
|
4921 ret = 1 |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4922 finally: |
de793925862e
merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents:
12765
diff
changeset
|
4923 ui.setconfig('ui', 'forcemerge', '') |
17668
28c43957f8b4
resolve: commit the changes after each item resolve (issue3638)
Sergey Kishchenko <voidwrk@gmail.com>
parents:
17537
diff
changeset
|
4924 ms.commit() |
6518 | 4925 |
7847 | 4926 # replace filemerge's .orig file with our resolve file |
4927 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
|
4928 |
6f0d9d79111f
merge: delay writing the mergestate during until commit is called
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
12323
diff
changeset
|
4929 ms.commit() |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4930 return ret |
7847 | 4931 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4932 @command('revert', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4933 [('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
|
4934 ('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
|
4935 ('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
|
4936 ('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
|
4937 ] + walkopts + dryrunopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
4938 _('[OPTION]... [-r REV] [NAME]...')) |
1472
3c909a747d7f
make revert use standard matcher
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1470
diff
changeset
|
4939 def revert(ui, repo, *pats, **opts): |
14540
944d9088da96
revert: rewrite help summary
Matt Mackall <mpm@selenic.com>
parents:
14532
diff
changeset
|
4940 """restore files to their checkout state |
5574 | 4941 |
12390
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
4942 .. note:: |
14541
07ee46a2ece3
revert: simplify usage note
Matt Mackall <mpm@selenic.com>
parents:
14540
diff
changeset
|
4943 To check out earlier revisions, you should use :hg:`update REV`. |
19217
2b4344f23b44
help: fix role/option confusion in RST
Matt Mackall <mpm@selenic.com>
parents:
19197
diff
changeset
|
4944 To cancel an uncommitted merge (and lose your changes), |
2b4344f23b44
help: fix role/option confusion in RST
Matt Mackall <mpm@selenic.com>
parents:
19197
diff
changeset
|
4945 use :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
|
4946 |
14544
586f33cc3cb9
revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents:
14543
diff
changeset
|
4947 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
|
4948 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
|
4949 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
|
4950 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
|
4951 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
|
4952 revision. |
1811
6cb548cffdf5
resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1804
diff
changeset
|
4953 |
14544
586f33cc3cb9
revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents:
14543
diff
changeset
|
4954 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
|
4955 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
|
4956 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
|
4957 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
|
4958 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
|
4959 related method. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4960 |
5574 | 4961 Modified files are saved with a .orig suffix before reverting. |
4962 To disable these backups, use --no-backup. | |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4963 |
14544
586f33cc3cb9
revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents:
14543
diff
changeset
|
4964 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
|
4965 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
4966 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
4967 """ |
2982
890e285c52a1
revert: require --all to revert all files.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2963
diff
changeset
|
4968 |
11941 | 4969 if opts.get("date"): |
4970 if opts.get("rev"): | |
3814
120be84f33de
Add --date support to update and revert
Matt Mackall <mpm@selenic.com>
parents:
3813
diff
changeset
|
4971 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
|
4972 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
|
4973 |
13022
3fd4e4e81382
revert: improve merge advice and favor its error over all
timeless <timeless@gmail.com>
parents:
12968
diff
changeset
|
4974 parent, p2 = repo.dirstate.parents() |
14903
a934b9249574
revert: restore check for uncommitted merge (issue2915) (BC)
Matt Mackall <mpm@selenic.com>
parents:
14849
diff
changeset
|
4975 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
|
4976 # 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
|
4977 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
|
4978 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
|
4979 |
14726
e0039716f3ea
revert: mention update in hint of abort when reverting to non-parent
Adrian Buehlmann <adrian@cadifra.com>
parents:
14725
diff
changeset
|
4980 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
|
4981 |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
4982 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
|
4983 msg = _("no files or directories specified") |
4fcde634f5e0
revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents:
14713
diff
changeset
|
4984 if p2 != nullid: |
4fcde634f5e0
revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents:
14713
diff
changeset
|
4985 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
|
4986 " 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
|
4987 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
|
4988 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
|
4989 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
|
4990 if node != parent: |
6ba51c81ff75
revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents:
14742
diff
changeset
|
4991 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
|
4992 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
|
4993 " 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
|
4994 else: |
e0039716f3ea
revert: mention update in hint of abort when reverting to non-parent
Adrian Buehlmann <adrian@cadifra.com>
parents:
14725
diff
changeset
|
4995 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
|
4996 " 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
|
4997 elif dirty: |
6ba51c81ff75
revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents:
14742
diff
changeset
|
4998 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
|
4999 else: |
6ba51c81ff75
revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents:
14742
diff
changeset
|
5000 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
|
5001 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
|
5002 |
16304
a740fa28d718
revert: move bulk of revert command from commands to cmdutil
Angel Ezquerra <angel.ezquerra@gmail.com>
parents:
16274
diff
changeset
|
5003 return cmdutil.revert(ui, repo, ctx, (parent, p2), *pats, **opts) |
588 | 5004 |
15183
59e8bc22506e
rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents:
15179
diff
changeset
|
5005 @command('rollback', dryrunopts + |
59e8bc22506e
rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents:
15179
diff
changeset
|
5006 [('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
|
5007 def rollback(ui, repo, **opts): |
10889
e25c450c351e
commands: improve some command summaries
Matt Mackall <mpm@selenic.com>
parents:
10882
diff
changeset
|
5008 """roll back the last transaction (dangerous) |
5575
8788ff630c26
imported patch rollback-help
Matt Mackall <mpm@selenic.com>
parents:
5574
diff
changeset
|
5009 |
8788ff630c26
imported patch rollback-help
Matt Mackall <mpm@selenic.com>
parents:
5574
diff
changeset
|
5010 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
|
5011 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
|
5012 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
|
5013 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
|
5014 the working directory. |
2227
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5015 |
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5016 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
|
5017 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
|
5018 repository. |
b558c9fa39c1
rollback: split off command example paragraph in help
Adrian Buehlmann <adrian@cadifra.com>
parents:
17045
diff
changeset
|
5019 |
17142
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5020 .. container:: verbose |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5021 |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5022 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
|
5023 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
|
5024 |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5025 - commit |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5026 - import |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5027 - pull |
3e66d00b3026
rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17141
diff
changeset
|
5028 - 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
|
5029 - unbundle |
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 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
|
5032 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
|
5033 override this protection. |
15183
59e8bc22506e
rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents:
15179
diff
changeset
|
5034 |
2227
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5035 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
|
5036 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
|
5037 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
|
5038 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
|
5039 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
|
5040 may fail if a rollback is performed. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5041 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5042 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
|
5043 """ |
15183
59e8bc22506e
rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents:
15179
diff
changeset
|
5044 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
|
5045 force=opts.get('force')) |
2227
4f072bb06e89
deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2212
diff
changeset
|
5046 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5047 @command('root', []) |
468 | 5048 def root(ui, repo): |
8026
683d8ebcf434
expand "dir" to "directory" in help texts
Martin Geisler <mg@lazybytes.net>
parents:
8021
diff
changeset
|
5049 """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
|
5050 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5051 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
|
5052 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5053 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5054 """ |
468 | 5055 ui.write(repo.root + "\n") |
5056 | |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5057 @command('^serve', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5058 [('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
|
5059 _('FILE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5060 ('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
|
5061 ('', '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
|
5062 ('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
|
5063 # 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
|
5064 ('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
|
5065 ('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
|
5066 _('ADDR')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5067 ('', '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
|
5068 _('PREFIX')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5069 ('n', 'name', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5070 _('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
|
5071 ('', 'web-conf', '', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5072 _('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
|
5073 ('', '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
|
5074 _('FILE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5075 ('', '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
|
5076 ('', '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
|
5077 ('', 'cmdserver', '', _('for remote clients'), _('MODE')), |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5078 ('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
|
5079 ('', 'style', '', _('template style to use'), _('STYLE')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5080 ('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
|
5081 ('', 'certificate', '', _('SSL certificate file'), _('FILE'))], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5082 _('[OPTION]...')) |
245 | 5083 def serve(ui, repo, **opts): |
10889
e25c450c351e
commands: improve some command summaries
Matt Mackall <mpm@selenic.com>
parents:
10882
diff
changeset
|
5084 """start stand-alone webserver |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5085 |
11102
275198bc904a
commands: explain that "hg serve" is mostly for ad-hoc sharing
Martin Geisler <mg@lazybytes.net>
parents:
11089
diff
changeset
|
5086 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
|
5087 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
|
5088 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
|
5089 longer periods of time. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5090 |
11103
d29bd98ebff6
commands: explain that "hg serve" does not do authentication
Martin Geisler <mg@lazybytes.net>
parents:
11102
diff
changeset
|
5091 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
|
5092 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
|
5093 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
|
5094 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
|
5095 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
|
5096 |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5097 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
|
5098 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
|
5099 files. |
10629
d3f27d15c9cb
serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents:
10617
diff
changeset
|
5100 |
d3f27d15c9cb
serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents:
10617
diff
changeset
|
5101 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
|
5102 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
|
5103 number it uses. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5104 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5105 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5106 """ |
624
876333a295ff
Add an sshrepository class and hg serve --stdio
Matt Mackall <mpm@selenic.com>
parents:
618
diff
changeset
|
5107 |
14647
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5108 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
|
5109 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
|
5110 |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5111 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
|
5112 if repo is None: |
16935
f635c476fa3f
serve: lowercase "no repo here" message
Martin Geisler <mg@aragost.com>
parents:
16934
diff
changeset
|
5113 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
|
5114 " (.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
|
5115 |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5116 if opts["stdio"]: |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5117 checkrepo() |
2396
8d44649df03b
refactor ssh server.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2392
diff
changeset
|
5118 s = sshserver.sshserver(ui, repo) |
8d44649df03b
refactor ssh server.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2392
diff
changeset
|
5119 s.serve_forever() |
2363
fa4c11751367
Give a response to unknown SSH commands
Matt Mackall <mpm@selenic.com>
parents:
2362
diff
changeset
|
5120 |
14647
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5121 if opts["cmdserver"]: |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5122 checkrepo() |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5123 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
|
5124 return s.serve() |
2e9f379de0ac
serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents:
14645
diff
changeset
|
5125 |
10635
27027bee318e
serve: fix port config
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10632
diff
changeset
|
5126 # 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
|
5127 if opts.get('port'): |
12076
49463314c24f
mail/hgweb: support service names for ports (issue2350)
Brodie Rao <brodie@bitheap.org>
parents:
12070
diff
changeset
|
5128 opts['port'] = util.getport(opts.get('port')) |
10635
27027bee318e
serve: fix port config
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10632
diff
changeset
|
5129 |
8190
9b8ac5fb7760
ui: kill most users of parentui name and arg, replace with .copy()
Matt Mackall <mpm@selenic.com>
parents:
8189
diff
changeset
|
5130 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
|
5131 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
|
5132 " accesslog errorlog certificate encoding") |
987 | 5133 for o in optlist.split(): |
10630
9947e6b008bb
serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10629
diff
changeset
|
5134 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
|
5135 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
|
5136 continue |
9947e6b008bb
serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10629
diff
changeset
|
5137 baseui.setconfig("web", o, val) |
9947e6b008bb
serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10629
diff
changeset
|
5138 if repo and repo.ui != baseui: |
9947e6b008bb
serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10629
diff
changeset
|
5139 repo.ui.setconfig("web", o, val) |
987 | 5140 |
11003
aca9a7cf2c9a
serve: webdir_conf -> webconf
Matt Mackall <mpm@selenic.com>
parents:
10993
diff
changeset
|
5141 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
|
5142 if not o: |
7bb10d3dbcd6
hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents:
11003
diff
changeset
|
5143 if not repo: |
16935
f635c476fa3f
serve: lowercase "no repo here" message
Martin Geisler <mg@aragost.com>
parents:
16934
diff
changeset
|
5144 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
|
5145 " here (.hg not found)")) |
18828
b718999f2e0b
serve: pass on the repo instad of recreating it in hgweb
Simon Heimberg <simohe@besonet.ch>
parents:
18827
diff
changeset
|
5146 o = repo |
11004
7bb10d3dbcd6
hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents:
11003
diff
changeset
|
5147 |
18827
6793ae6e36dc
serve: pass the prepared baseui to hgweb
Simon Heimberg <simohe@besonet.ch>
parents:
18799
diff
changeset
|
5148 app = hgweb.hgweb(o, baseui=baseui) |
2127
8a85dbbadddf
Allow 'hg serve --webdir-conf foo' to be run outside a repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
2125
diff
changeset
|
5149 |
8778
c5f36402daad
use new style classes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
8761
diff
changeset
|
5150 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
|
5151 def init(self): |
14237
4d684d8210a1
rename util.set_signal_handler to setsignalhandler
Adrian Buehlmann <adrian@cadifra.com>
parents:
14220
diff
changeset
|
5152 util.setsignalhandler() |
11004
7bb10d3dbcd6
hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents:
11003
diff
changeset
|
5153 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
|
5154 |
10629
d3f27d15c9cb
serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents:
10617
diff
changeset
|
5155 if opts['port'] and not ui.verbose: |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10270
diff
changeset
|
5156 return |
4380
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5157 |
5970
f25070ecf334
hgweb: fixes to make hg serve prefix handling more robust
Michele Cella <michele.cella@gmail.com>
parents:
5953
diff
changeset
|
5158 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
|
5159 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
|
5160 else: |
f25070ecf334
hgweb: fixes to make hg serve prefix handling more robust
Michele Cella <michele.cella@gmail.com>
parents:
5953
diff
changeset
|
5161 prefix = '' |
f25070ecf334
hgweb: fixes to make hg serve prefix handling more robust
Michele Cella <michele.cella@gmail.com>
parents:
5953
diff
changeset
|
5162 |
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
|
5163 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
|
5164 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
|
5165 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
|
5166 |
6419
7c36aee46bf5
hg serve: add clearer message when starting the server with --verbose
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
6405
diff
changeset
|
5167 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
|
5168 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
|
5169 bindaddr = '*' |
7c36aee46bf5
hg serve: add clearer message when starting the server with --verbose
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
6405
diff
changeset
|
5170 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
|
5171 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
|
5172 |
7c36aee46bf5
hg serve: add clearer message when starting the server with --verbose
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
6405
diff
changeset
|
5173 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
|
5174 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
|
5175 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
|
5176 if opts['port']: |
10630
9947e6b008bb
serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10629
diff
changeset
|
5177 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
|
5178 else: |
d3f27d15c9cb
serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents:
10617
diff
changeset
|
5179 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
|
5180 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
|
5181 (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
|
5182 |
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5183 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
|
5184 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
|
5185 |
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5186 service = service() |
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5187 |
e89f9afc462b
Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4376
diff
changeset
|
5188 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
|
5189 |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5190 @command('showconfig|debugconfig', |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5191 [('u', 'untrusted', None, _('show untrusted configuration options'))], |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5192 _('[-u] [NAME]...')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5193 def showconfig(ui, repo, *values, **opts): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5194 """show combined config settings from all hgrc files |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5195 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5196 With no arguments, print names and values of all config items. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5197 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5198 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
|
5199 of that config item. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5200 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5201 With multiple arguments, print names and values of all config |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5202 items with matching section names. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5203 |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5204 With --debug, the source (filename and line number) is printed |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5205 for each config item. |
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 Returns 0 on success. |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5208 """ |
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 for f in scmutil.rcpath(): |
14708
8083f4d00bd1
i18n: remove translation of debug messages
David Soria Parra <dsp@php.net>
parents:
14673
diff
changeset
|
5211 ui.debug('read config from: %s\n' % f) |
14302
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5212 untrusted = bool(opts.get('untrusted')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5213 if values: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5214 sections = [v for v in values if '.' not in v] |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5215 items = [v for v in values if '.' in v] |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5216 if len(items) > 1 or items and sections: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5217 raise util.Abort(_('only one config item permitted')) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5218 for section, name, value in ui.walkconfig(untrusted=untrusted): |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5219 value = str(value).replace('\n', '\\n') |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5220 sectname = section + '.' + name |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5221 if values: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5222 for v in values: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5223 if v == section: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5224 ui.debug('%s: ' % |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5225 ui.configsource(section, name, untrusted)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5226 ui.write('%s=%s\n' % (sectname, value)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5227 elif v == sectname: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5228 ui.debug('%s: ' % |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5229 ui.configsource(section, name, untrusted)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5230 ui.write(value, '\n') |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5231 else: |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5232 ui.debug('%s: ' % |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5233 ui.configsource(section, name, untrusted)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5234 ui.write('%s=%s\n' % (sectname, value)) |
b0f97b2589cc
order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents:
14297
diff
changeset
|
5235 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5236 @command('^status|st', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5237 [('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
|
5238 ('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
|
5239 ('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
|
5240 ('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
|
5241 ('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
|
5242 ('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
|
5243 ('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
|
5244 ('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
|
5245 ('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
|
5246 ('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
|
5247 ('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
|
5248 ('', 'rev', [], _('show difference from revision'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5249 ('', '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
|
5250 ] + walkopts + subrepoopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5251 _('[OPTION]... [FILE]...')) |
731
91ca3afab8e8
Add name matching to status command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
729
diff
changeset
|
5252 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
|
5253 """show changed files in the working directory |
213 | 5254 |
6448
cd3d49ffc6f6
Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents:
6442
diff
changeset
|
5255 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
|
5256 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
|
5257 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
|
5258 -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
|
5259 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
|
5260 options -mardu are used. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5261 |
6201
305d4450036a
Extend/correct acc40572da5b regarding -qA and ignored files.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6200
diff
changeset
|
5262 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
|
5263 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
|
5264 |
12390
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
5265 .. note:: |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12389
diff
changeset
|
5266 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
|
5267 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
|
5268 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
|
5269 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
|
5270 |
3467
2b3b703b3a2b
Add --rev option to status
Brendan Cully <brendan@kublai.com>
parents:
3465
diff
changeset
|
5271 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
|
5272 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
|
5273 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
|
5274 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
|
5275 |
9157
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5276 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
|
5277 |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5278 M = modified |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5279 A = added |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5280 R = removed |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5281 C = clean |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5282 ! = 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
|
5283 ? = not tracked |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5284 I = ignored |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9142
diff
changeset
|
5285 = 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
|
5286 |
15119
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5287 .. container:: verbose |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5288 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5289 Examples: |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5290 |
15633
dc5d1394ecd1
status: add missing ":" to help text
Martin Geisler <mg@lazybytes.net>
parents:
15615
diff
changeset
|
5291 - 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
|
5292 changeset:: |
15119
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5293 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5294 hg status --rev 9353 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5295 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5296 - show all changes including copies in an existing changeset:: |
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 hg status --copies --change 9353 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5299 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5300 - 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
|
5301 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5302 hg status -an0 |
ac46a9cdf6e6
status: add some help examples
Matt Mackall <mpm@selenic.com>
parents:
15118
diff
changeset
|
5303 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5304 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5305 """ |
312 | 5306 |
10014
54cd28258ea7
status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents:
9983
diff
changeset
|
5307 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
|
5308 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
|
5309 |
54cd28258ea7
status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents:
9983
diff
changeset
|
5310 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
|
5311 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
|
5312 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
|
5313 elif change: |
15578
db0e277bdd37
status: support revsets with --change
Patrick Mezard <pmezard@gmail.com>
parents:
15528
diff
changeset
|
5314 node2 = scmutil.revsingle(repo, change, None).node() |
13878
a8d13ee0ce68
misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents:
13855
diff
changeset
|
5315 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
|
5316 else: |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
5317 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
|
5318 |
1625
e1bcf7fa983f
correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1622
diff
changeset
|
5319 cwd = (pats and repo.getcwd()) or '' |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
5320 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
|
5321 copy = {} |
6605
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5322 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
|
5323 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
|
5324 if opts.get('all'): |
6605
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5325 show += ui.quiet and (states[:4] + ['clean']) or states |
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5326 if not show: |
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5327 show = ui.quiet and states[:4] or states[:5] |
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5328 |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14647
diff
changeset
|
5329 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
|
5330 '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
|
5331 opts.get('subrepos')) |
6605
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5332 changestates = zip(states, 'MAR!?IC', stat) |
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5333 |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
5334 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
|
5335 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
|
5336 |
16136
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5337 fm = ui.formatter('status', opts) |
17910
c8709ff57ff2
status: use condwrite to avoid zero-width format string hack
Matt Mackall <mpm@selenic.com>
parents:
17892
diff
changeset
|
5338 fmt = '%s' + end |
c8709ff57ff2
status: use condwrite to avoid zero-width format string hack
Matt Mackall <mpm@selenic.com>
parents:
17892
diff
changeset
|
5339 showchar = not opts.get('no_status') |
16136
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5340 |
6605
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5341 for state, char, files in changestates: |
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5342 if state in show: |
16136
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5343 label = 'status.' + state |
6605
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5344 for f in files: |
16136
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5345 fm.startitem() |
17910
c8709ff57ff2
status: use condwrite to avoid zero-width format string hack
Matt Mackall <mpm@selenic.com>
parents:
17892
diff
changeset
|
5346 fm.condwrite(showchar, 'status', '%s ', char, label=label) |
c8709ff57ff2
status: use condwrite to avoid zero-width format string hack
Matt Mackall <mpm@selenic.com>
parents:
17892
diff
changeset
|
5347 fm.write('path', fmt, repo.pathto(f, cwd), label=label) |
6605
bf2bf986ff87
status: refactor status command
Matt Mackall <mpm@selenic.com>
parents:
6603
diff
changeset
|
5348 if f in copy: |
16136
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5349 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
|
5350 label='status.copied') |
16136
68007f0557de
formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents:
16109
diff
changeset
|
5351 fm.end() |
213 | 5352 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5353 @command('^summary|sum', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5354 [('', 'remote', None, _('check for push and pull'))], '[--remote]') |
9620 | 5355 def summary(ui, repo, **opts): |
9603 | 5356 """summarize working directory state |
5357 | |
5358 This generates a brief summary of the working directory state, | |
5359 including parents, branch, commit status, and available updates. | |
9620 | 5360 |
5361 With the --remote option, this will check the default paths for | |
5362 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
|
5363 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5364 Returns 0 on success. |
9603 | 5365 """ |
5366 | |
5367 ctx = repo[None] | |
5368 parents = ctx.parents() | |
5369 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
|
5370 marks = [] |
9603 | 5371 |
5372 for p in parents: | |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5373 # 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
|
5374 # shows a working directory parent *changeset*: |
17892
ba0a1701c81a
i18n: add "i18n" comment to column positioning messages of "hg summary"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17887
diff
changeset
|
5375 # i18n: column positioning for "hg summary" |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5376 ui.write(_('parent: %d:%s ') % (p.rev(), str(p)), |
17788
9912baaae7df
color: add additional changeset.phase label to log.changeset and log.parent
Sean Farley <sean.michael.farley@gmail.com>
parents:
17773
diff
changeset
|
5377 label='log.changeset changeset.%s' % p.phasestr()) |
10833
d7b601f1e02c
commands: retrieve tags from context object
Martin Geisler <mg@lazybytes.net>
parents:
10832
diff
changeset
|
5378 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
|
5379 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
|
5380 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
|
5381 if p.rev() == -1: |
d75a309a24b1
summary: add empty repository and no revision checked out hints
Matt Mackall <mpm@selenic.com>
parents:
9617
diff
changeset
|
5382 if not len(repo): |
10834
4ab459a6c25c
commands: small refactoring in summary
Martin Geisler <mg@lazybytes.net>
parents:
10833
diff
changeset
|
5383 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
|
5384 else: |
10834
4ab459a6c25c
commands: small refactoring in summary
Martin Geisler <mg@lazybytes.net>
parents:
10833
diff
changeset
|
5385 ui.write(_(' (no revision checked out)')) |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5386 ui.write('\n') |
9618
d75a309a24b1
summary: add empty repository and no revision checked out hints
Matt Mackall <mpm@selenic.com>
parents:
9617
diff
changeset
|
5387 if p.description(): |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5388 ui.status(' ' + p.description().splitlines()[0].strip() + '\n', |
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5389 label='log.summary') |
9603 | 5390 |
5391 branch = ctx.branch() | |
5392 bheads = repo.branchheads(branch) | |
17892
ba0a1701c81a
i18n: add "i18n" comment to column positioning messages of "hg summary"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17887
diff
changeset
|
5393 # i18n: column positioning for "hg summary" |
9873
541218fbad2a
summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents:
9857
diff
changeset
|
5394 m = _('branch: %s\n') % branch |
541218fbad2a
summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents:
9857
diff
changeset
|
5395 if branch != 'default': |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5396 ui.write(m, label='log.branch') |
9873
541218fbad2a
summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents:
9857
diff
changeset
|
5397 else: |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5398 ui.status(m, label='log.branch') |
9603 | 5399 |
14906
7c3c8f37e84f
summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents:
14874
diff
changeset
|
5400 if marks: |
7c3c8f37e84f
summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents:
14874
diff
changeset
|
5401 current = repo._bookmarkcurrent |
17892
ba0a1701c81a
i18n: add "i18n" comment to column positioning messages of "hg summary"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17887
diff
changeset
|
5402 # i18n: column positioning for "hg summary" |
14907
84af56cc673b
summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents:
14906
diff
changeset
|
5403 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
|
5404 if current is not None: |
18622
f9eebf5629fa
summary: show active bookmark even if not at current changeset
Kevin Bullock <kbullock@ringworld.org>
parents:
18621
diff
changeset
|
5405 if current in marks: |
14907
84af56cc673b
summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents:
14906
diff
changeset
|
5406 ui.write(' *' + current, label='bookmarks.current') |
18622
f9eebf5629fa
summary: show active bookmark even if not at current changeset
Kevin Bullock <kbullock@ringworld.org>
parents:
18621
diff
changeset
|
5407 marks.remove(current) |
f9eebf5629fa
summary: show active bookmark even if not at current changeset
Kevin Bullock <kbullock@ringworld.org>
parents:
18621
diff
changeset
|
5408 else: |
18623
0027a5cec9d0
summary: add missing space for updated active bookmark display
Matt Mackall <mpm@selenic.com>
parents:
18622
diff
changeset
|
5409 ui.write(' [%s]' % current, label='bookmarks.current') |
14907
84af56cc673b
summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents:
14906
diff
changeset
|
5410 for m in marks: |
17299
e51d4aedace9
check-code: indent 4 spaces in py files
Mads Kiilerich <mads@kiilerich.com>
parents:
17292
diff
changeset
|
5411 ui.write(' ' + m, label='log.bookmark') |
14907
84af56cc673b
summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents:
14906
diff
changeset
|
5412 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
|
5413 |
10390
f163775e36e0
summary: various fixes, add a test
Matt Mackall <mpm@selenic.com>
parents:
10389
diff
changeset
|
5414 st = list(repo.status(unknown=True))[:6] |
11088
c4347e48b0d0
summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
5415 |
11331
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5416 c = repo.dirstate.copies() |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5417 copied, renamed = [], [] |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5418 for d, s in c.iteritems(): |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5419 if s in st[2]: |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5420 st[2].remove(s) |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5421 renamed.append(d) |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5422 else: |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5423 copied.append(d) |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5424 if d in st[1]: |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5425 st[1].remove(d) |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5426 st.insert(3, renamed) |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5427 st.insert(4, copied) |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5428 |
15856
6bed6cc6d0d0
commands: partial backout of fbb68b382040
Martin Geisler <mg@aragost.com>
parents:
15855
diff
changeset
|
5429 ms = mergemod.mergestate(repo) |
10390
f163775e36e0
summary: various fixes, add a test
Matt Mackall <mpm@selenic.com>
parents:
10389
diff
changeset
|
5430 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
|
5431 |
c4347e48b0d0
summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
5432 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
|
5433 st.append(subs) |
c4347e48b0d0
summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
5434 |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5435 labels = [ui.label(_('%d modified'), 'status.modified'), |
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5436 ui.label(_('%d added'), 'status.added'), |
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5437 ui.label(_('%d removed'), 'status.removed'), |
11331
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5438 ui.label(_('%d renamed'), 'status.copied'), |
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5439 ui.label(_('%d copied'), 'status.copied'), |
10832
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5440 ui.label(_('%d deleted'), 'status.deleted'), |
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5441 ui.label(_('%d unknown'), 'status.unknown'), |
420bc8124904
summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents:
10830
diff
changeset
|
5442 ui.label(_('%d ignored'), 'status.ignored'), |
11088
c4347e48b0d0
summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
5443 ui.label(_('%d unresolved'), 'resolve.unresolved'), |
c4347e48b0d0
summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
5444 ui.label(_('%d subrepos'), 'status.modified')] |
9603 | 5445 t = [] |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10270
diff
changeset
|
5446 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
|
5447 if s: |
8e0e0d854b60
commands: do not split a translated string
Martin Geisler <mg@lazybytes.net>
parents:
9603
diff
changeset
|
5448 t.append(l % len(s)) |
9603 | 5449 |
5450 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
|
5451 cleanworkdir = False |
9603 | 5452 |
5453 if len(parents) > 1: | |
11310
ac873ecfc3c2
Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents:
11302
diff
changeset
|
5454 t += _(' (merge)') |
9603 | 5455 elif branch != parents[0].branch(): |
11310
ac873ecfc3c2
Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents:
11302
diff
changeset
|
5456 t += _(' (new branch)') |
16720
e825a89de5d7
context: add changectx.closesbranch() method
Brodie Rao <brodie@sf.io>
parents:
16719
diff
changeset
|
5457 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
|
5458 pnode in repo.branchheads(branch, closed=True)): |
11310
ac873ecfc3c2
Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents:
11302
diff
changeset
|
5459 t += _(' (head closed)') |
11331
997ab9af81df
summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents:
11321
diff
changeset
|
5460 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
|
5461 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
|
5462 cleanworkdir = True |
9603 | 5463 elif pnode not in bheads: |
11310
ac873ecfc3c2
Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents:
11302
diff
changeset
|
5464 t += _(' (new branch head)') |
9603 | 5465 |
10269
acf001ee5ef8
summary: L10N messages hide clean-ness of workdir from 'hg summary'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
10263
diff
changeset
|
5466 if cleanworkdir: |
17892
ba0a1701c81a
i18n: add "i18n" comment to column positioning messages of "hg summary"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17887
diff
changeset
|
5467 # i18n: column positioning for "hg summary" |
11310
ac873ecfc3c2
Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents:
11302
diff
changeset
|
5468 ui.status(_('commit: %s\n') % t.strip()) |
9605 | 5469 else: |
17892
ba0a1701c81a
i18n: add "i18n" comment to column positioning messages of "hg summary"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17887
diff
changeset
|
5470 # i18n: column positioning for "hg summary" |
11310
ac873ecfc3c2
Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents:
11302
diff
changeset
|
5471 ui.write(_('commit: %s\n') % t.strip()) |
9603 | 5472 |
5473 # all ancestors of branch heads - all ancestors of parent = new csets | |
5474 new = [0] * len(repo) | |
5475 cl = repo.changelog | |
10390
f163775e36e0
summary: various fixes, add a test
Matt Mackall <mpm@selenic.com>
parents:
10389
diff
changeset
|
5476 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
|
5477 new[a] = 1 |
16866
91f3ac205816
revlog: ancestors(*revs) becomes ancestors(revs) (API)
Bryan O'Sullivan <bryano@fb.com>
parents:
16864
diff
changeset
|
5478 for a in cl.ancestors([cl.rev(n) for n in bheads]): |
9603 | 5479 new[a] = 1 |
10390
f163775e36e0
summary: various fixes, add a test
Matt Mackall <mpm@selenic.com>
parents:
10389
diff
changeset
|
5480 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
|
5481 if a >= 0: |
f163775e36e0
summary: various fixes, add a test
Matt Mackall <mpm@selenic.com>
parents:
10389
diff
changeset
|
5482 new[a] = 0 |
16866
91f3ac205816
revlog: ancestors(*revs) becomes ancestors(revs) (API)
Bryan O'Sullivan <bryano@fb.com>
parents:
16864
diff
changeset
|
5483 for a in cl.ancestors([p.rev() for p in parents]): |
9603 | 5484 new[a] = 0 |
5485 new = sum(new) | |
5486 | |
5487 if new == 0: | |
17892
ba0a1701c81a
i18n: add "i18n" comment to column positioning messages of "hg summary"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17887
diff
changeset
|
5488 # i18n: column positioning for "hg summary" |
9605 | 5489 ui.status(_('update: (current)\n')) |
9603 | 5490 elif pnode not in bheads: |
17892
ba0a1701c81a
i18n: add "i18n" comment to column positioning messages of "hg summary"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17887
diff
changeset
|
5491 # i18n: column positioning for "hg summary" |
9603 | 5492 ui.write(_('update: %d new changesets (update)\n') % new) |
5493 else: | |
17892
ba0a1701c81a
i18n: add "i18n" comment to column positioning messages of "hg summary"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17887
diff
changeset
|
5494 # i18n: column positioning for "hg summary" |
9603 | 5495 ui.write(_('update: %d new changesets, %d branch heads (merge)\n') % |
5496 (new, len(bheads))) | |
5497 | |
19211
3bfd7f1e7485
summary: augment output with info from extensions
Bryan O'Sullivan <bryano@fb.com>
parents:
19209
diff
changeset
|
5498 cmdutil.summaryhooks(ui, repo) |
3bfd7f1e7485
summary: augment output with info from extensions
Bryan O'Sullivan <bryano@fb.com>
parents:
19209
diff
changeset
|
5499 |
9620 | 5500 if opts.get('remote'): |
5501 t = [] | |
10389
6dc25b01e170
fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents:
10384
diff
changeset
|
5502 source, branches = hg.parseurl(ui.expandpath('default')) |
18997
4cf09a1bf5b2
summary: clear "commonincoming" also if branches are different
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
18996
diff
changeset
|
5503 sbranch = branches[0] |
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')) | |
18996
160d8416e286
summary: make "incoming" information sensitive to branch in URL (issue3830)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
18994
diff
changeset
|
5507 if revs: |
160d8416e286
summary: make "incoming" information sensitive to branch in URL (issue3830)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
18994
diff
changeset
|
5508 revs = [other.lookup(rev) for rev in revs] |
14076
924c82157d46
url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents:
14073
diff
changeset
|
5509 ui.debug('comparing with %s\n' % util.hidepassword(source)) |
9620 | 5510 repo.ui.pushbuffer() |
18996
160d8416e286
summary: make "incoming" information sensitive to branch in URL (issue3830)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
18994
diff
changeset
|
5511 commoninc = discovery.findcommonincoming(repo, other, heads=revs) |
14214
c5db85676c38
summary: run discovery only once for in/out against same repo
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14213
diff
changeset
|
5512 _common, incoming, _rheads = commoninc |
9620 | 5513 repo.ui.popbuffer() |
5514 if incoming: | |
5515 t.append(_('1 or more incoming')) | |
5516 | |
10389
6dc25b01e170
fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents:
10384
diff
changeset
|
5517 dest, branches = hg.parseurl(ui.expandpath('default-push', 'default')) |
18997
4cf09a1bf5b2
summary: clear "commonincoming" also if branches are different
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
18996
diff
changeset
|
5518 dbranch = branches[0] |
10389
6dc25b01e170
fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents:
10384
diff
changeset
|
5519 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
|
5520 if source != dest: |
14556
517e1d88bf7e
hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents:
14553
diff
changeset
|
5521 other = hg.peer(repo, {}, dest) |
18997
4cf09a1bf5b2
summary: clear "commonincoming" also if branches are different
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
18996
diff
changeset
|
5522 ui.debug('comparing with %s\n' % util.hidepassword(dest)) |
4cf09a1bf5b2
summary: clear "commonincoming" also if branches are different
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
18996
diff
changeset
|
5523 if (source != dest or (sbranch is not None and sbranch != dbranch)): |
14214
c5db85676c38
summary: run discovery only once for in/out against same repo
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14213
diff
changeset
|
5524 commoninc = None |
18994
32843795e9b3
summary: make "outgoing" information sensitive to branch in URL (issue3829)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
18963
diff
changeset
|
5525 if revs: |
32843795e9b3
summary: make "outgoing" information sensitive to branch in URL (issue3829)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
18963
diff
changeset
|
5526 revs = [repo.lookup(rev) for rev in revs] |
9620 | 5527 repo.ui.pushbuffer() |
18994
32843795e9b3
summary: make "outgoing" information sensitive to branch in URL (issue3829)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
18963
diff
changeset
|
5528 outgoing = discovery.findcommonoutgoing(repo, other, onlyheads=revs, |
15837
cd956049fc14
discovery: introduce outgoing object for result of findcommonoutgoing
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15836
diff
changeset
|
5529 commoninc=commoninc) |
9620 | 5530 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
|
5531 o = outgoing.missing |
9620 | 5532 if o: |
5533 t.append(_('%d outgoing') % len(o)) | |
13454
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5534 if 'bookmarks' in other.listkeys('namespaces'): |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5535 lmarks = repo.listkeys('bookmarks') |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5536 rmarks = other.listkeys('bookmarks') |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5537 diff = set(rmarks) - set(lmarks) |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5538 if len(diff) > 0: |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5539 t.append(_('%d incoming bookmarks') % len(diff)) |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5540 diff = set(lmarks) - set(rmarks) |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5541 if len(diff) > 0: |
afc84a879ac8
summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents:
13453
diff
changeset
|
5542 t.append(_('%d outgoing bookmarks') % len(diff)) |
9620 | 5543 |
5544 if t: | |
17892
ba0a1701c81a
i18n: add "i18n" comment to column positioning messages of "hg summary"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17887
diff
changeset
|
5545 # i18n: column positioning for "hg summary" |
9620 | 5546 ui.write(_('remote: %s\n') % (', '.join(t))) |
5547 else: | |
17892
ba0a1701c81a
i18n: add "i18n" comment to column positioning messages of "hg summary"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17887
diff
changeset
|
5548 # i18n: column positioning for "hg summary" |
9620 | 5549 ui.status(_('remote: (synced)\n')) |
5550 | |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5551 @command('tag', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5552 [('f', 'force', None, _('force tag')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5553 ('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
|
5554 ('r', 'rev', '', _('revision to tag'), _('REV')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5555 ('', 'remove', None, _('remove a tag')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5556 # -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
|
5557 ('e', 'edit', None, _('edit commit message')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5558 ('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
|
5559 ] + commitopts2, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5560 _('[-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
|
5561 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
|
5562 """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
|
5563 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5564 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
|
5565 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5566 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
|
5567 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
|
5568 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
|
5569 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
|
5570 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
5571 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
|
5572 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
|
5573 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5574 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
|
5575 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
|
5576 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
|
5577 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
|
5578 ".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
|
5579 repositories). |
1c1ca9d393f4
tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents:
13134
diff
changeset
|
5580 |
1c1ca9d393f4
tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents:
13134
diff
changeset
|
5581 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
|
5582 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
|
5583 -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
|
5584 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
|
5585 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
5586 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
|
5587 |
eb23c876c111
tag: warn users about tag/branch possible name conflicts
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11061
diff
changeset
|
5588 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
|
5589 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
|
5590 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5591 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5592 """ |
15877
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5593 wlock = lock = None |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5594 try: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5595 wlock = repo.wlock() |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5596 lock = repo.lock() |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5597 rev_ = "." |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5598 names = [t.strip() for t in (name1,) + names] |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5599 if len(names) != len(set(names)): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5600 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
|
5601 for n in names: |
17821
361ab1e2086f
scmutil: add bad character checking to checknewlabel
Kevin Bullock <kbullock@ringworld.org>
parents:
17818
diff
changeset
|
5602 scmutil.checknewlabel(repo, n, 'tag') |
15877
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5603 if not n: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5604 raise util.Abort(_('tag names cannot consist entirely of ' |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5605 'whitespace')) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5606 if opts.get('rev') and opts.get('remove'): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5607 raise util.Abort(_("--rev and --remove are incompatible")) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5608 if opts.get('rev'): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5609 rev_ = opts['rev'] |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5610 message = opts.get('message') |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5611 if opts.get('remove'): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5612 expectedtype = opts.get('local') and 'local' or 'global' |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5613 for n in names: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5614 if not repo.tagtype(n): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5615 raise util.Abort(_("tag '%s' does not exist") % n) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5616 if repo.tagtype(n) != expectedtype: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5617 if expectedtype == 'global': |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5618 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
|
5619 else: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5620 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
|
5621 rev_ = nullid |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5622 if not message: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5623 # we don't translate commit messages |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5624 message = 'Removed tag %s' % ', '.join(names) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5625 elif not opts.get('force'): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5626 for n in names: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5627 if n in repo.tags(): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5628 raise util.Abort(_("tag '%s' already exists " |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5629 "(use -f to force)") % n) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5630 if not opts.get('local'): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5631 p1, p2 = repo.dirstate.parents() |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5632 if p2 != nullid: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5633 raise util.Abort(_('uncommitted merge')) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5634 bheads = repo.branchheads() |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5635 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
|
5636 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
|
5637 r = scmutil.revsingle(repo, rev_).node() |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5638 |
4213 | 5639 if not message: |
9183
d0225fa2f6c4
do not translate commit messages
Martin Geisler <mg@lazybytes.net>
parents:
9128
diff
changeset
|
5640 # we don't translate commit messages |
15877
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5641 message = ('Added tag %s for changeset %s' % |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5642 (', '.join(names), short(r))) |
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 date = opts.get('date') |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5645 if date: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5646 date = util.parsedate(date) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5647 |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5648 if opts.get('edit'): |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5649 message = ui.edit(message, ui.username()) |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5650 |
17260
e432fb4b4221
tag: don't allow tagging the null revision (issue1915)
Brad Hall <bhall@fb.com>
parents:
17255
diff
changeset
|
5651 # don't allow tagging the null rev |
e432fb4b4221
tag: don't allow tagging the null revision (issue1915)
Brad Hall <bhall@fb.com>
parents:
17255
diff
changeset
|
5652 if (not opts.get('remove') and |
e432fb4b4221
tag: don't allow tagging the null revision (issue1915)
Brad Hall <bhall@fb.com>
parents:
17255
diff
changeset
|
5653 scmutil.revsingle(repo, rev_).rev() == nullrev): |
18906
ef7068173a22
tag: clarify cryptic error message when tagging null revision
Mads Kiilerich <madski@unity3d.com>
parents:
18892
diff
changeset
|
5654 raise util.Abort(_("cannot tag null revision")) |
17260
e432fb4b4221
tag: don't allow tagging the null revision (issue1915)
Brad Hall <bhall@fb.com>
parents:
17255
diff
changeset
|
5655 |
15877
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5656 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
|
5657 finally: |
afd459933d5f
tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents:
15875
diff
changeset
|
5658 release(lock, wlock) |
401
af4848f83e68
From: Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
mpm@selenic.com
parents:
396
diff
changeset
|
5659 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5660 @command('tags', [], '') |
17912
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5661 def tags(ui, repo, **opts): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5662 """list repository tags |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5663 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
5664 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
|
5665 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
|
5666 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5667 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5668 """ |
477
520540fd6b64
Handle errors in .hgtags or hgrc [tags] section more gracefully.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
470
diff
changeset
|
5669 |
17912
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5670 fm = ui.formatter('tags', opts) |
2966
fb493241d7f6
Only show long hashes with --debug, not --verbose
Matt Mackall <mpm@selenic.com>
parents:
2963
diff
changeset
|
5671 hexfunc = ui.debugflag and hex or short |
5658
ae3089cefaab
Add --verbose support to tags command.
Osku Salerma <osku@iki.fi>
parents:
5657
diff
changeset
|
5672 tagtype = "" |
ae3089cefaab
Add --verbose support to tags command.
Osku Salerma <osku@iki.fi>
parents:
5657
diff
changeset
|
5673 |
8210
344751cd8cb8
replace various uses of list.reverse()
Matt Mackall <mpm@selenic.com>
parents:
8209
diff
changeset
|
5674 for t, n in reversed(repo.tagslist()): |
13893
1aea86673dee
tags: no need to check for valid nodes
Idan Kamara <idankk86@gmail.com>
parents:
13891
diff
changeset
|
5675 hn = hexfunc(n) |
17912
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5676 label = 'tags.normal' |
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5677 tagtype = '' |
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5678 if repo.tagtype(t) == 'local': |
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5679 label = 'tags.local' |
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5680 tagtype = 'local' |
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5681 |
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5682 fm.startitem() |
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5683 fm.write('tag', '%s', t, label=label) |
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5684 fmt = " " * (30 - encoding.colwidth(t)) + ' %5d:%s' |
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5685 fm.condwrite(not ui.quiet, 'rev id', fmt, |
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5686 repo.changelog.rev(n), hn, label=label) |
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5687 fm.condwrite(ui.verbose and tagtype, 'type', ' %s', |
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5688 tagtype, label=label) |
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5689 fm.plain('\n') |
7a3de6c23f6d
tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents:
17911
diff
changeset
|
5690 fm.end() |
248 | 5691 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5692 @command('tip', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5693 [('p', 'patch', None, _('show patch')), |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5694 ('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
|
5695 ] + templateopts, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5696 _('[-p] [-g]')) |
1731
251729df9cc6
add -p option to tip. for issue 64.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1728
diff
changeset
|
5697 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
|
5698 """show the tip revision |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5699 |
8779
708938509732
Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents:
8778
diff
changeset
|
5700 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
|
5701 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
|
5702 recently changed head). |
6364
b22b39059722
Make tip help more helpful
Patrick Mezard <pmezard@gmail.com>
parents:
6353
diff
changeset
|
5703 |
6367
51984a2413f2
Remove unexpected "Alternately" word from tip help.
Patrick Mezard <pmezard@gmail.com>
parents:
6364
diff
changeset
|
5704 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
|
5705 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
|
5706 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
|
5707 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
|
5708 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5709 Returns 0 on success. |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5710 """ |
10152
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
5711 displayer = cmdutil.show_changeset(ui, repo, opts) |
18464
a2e9fe93d9ea
changectx: fix the handling of `tip`
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
18458
diff
changeset
|
5712 displayer.show(repo['tip']) |
10152
56284451a22c
Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents:
10111
diff
changeset
|
5713 displayer.close() |
245 | 5714 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5715 @command('unbundle', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5716 [('u', 'update', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5717 _('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
|
5718 _('[-u] FILE...')) |
4699
a6b62584d0b2
unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
4697
diff
changeset
|
5719 def unbundle(ui, repo, fname1, *fnames, **opts): |
a6b62584d0b2
unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
4697
diff
changeset
|
5720 """apply one or more changegroup files |
a6b62584d0b2
unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
4697
diff
changeset
|
5721 |
a6b62584d0b2
unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
4697
diff
changeset
|
5722 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
|
5723 bundle command. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5724 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5725 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
|
5726 """ |
4699
a6b62584d0b2
unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents:
4697
diff
changeset
|
5727 fnames = (fname1,) + fnames |
6180
d98ef03893e6
commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents:
6178
diff
changeset
|
5728 |
8109
496ae1ea4698
switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents:
8088
diff
changeset
|
5729 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
|
5730 wc = repo['.'] |
6180
d98ef03893e6
commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents:
6178
diff
changeset
|
5731 try: |
d98ef03893e6
commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents:
6178
diff
changeset
|
5732 for fname in fnames: |
17887
0e2846b2482c
url: use open and not url.open for local files (issue3624)
Siddharth Agarwal <sid0@fb.com>
parents:
17875
diff
changeset
|
5733 f = hg.openpath(ui, fname) |
6180
d98ef03893e6
commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents:
6178
diff
changeset
|
5734 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
|
5735 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
|
5736 finally: |
8109
496ae1ea4698
switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents:
8088
diff
changeset
|
5737 lock.release() |
16690
de2267517841
unbundle: move bookmark update outside the lock
Mads Kiilerich <mads@kiilerich.com>
parents:
16689
diff
changeset
|
5738 bookmarks.updatecurrentbookmark(repo, wc.node(), wc.branch()) |
7131
23bd7383891c
commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7126
diff
changeset
|
5739 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
|
5740 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5741 @command('^update|up|checkout|co', |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5742 [('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
|
5743 ('c', 'check', None, |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5744 _('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
|
5745 ('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
|
5746 ('r', 'rev', '', _('revision'), _('REV'))], |
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5747 _('[-c] [-C] [-d DATE] [[-r] REV]')) |
8855 | 5748 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
|
5749 """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
|
5750 |
8004
d5b1b846f277
commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
5751 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
|
5752 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
|
5753 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
|
5754 bookmarks`). |
12688
8c034a825cfe
help: improve description of update --check
Kevin Bullock <kbullock@ringworld.org>
parents:
12618
diff
changeset
|
5755 |
17343
e560ecb755fe
update: fix typo in help text
Adrian Buehlmann <adrian@cadifra.com>
parents:
17322
diff
changeset
|
5756 Update sets the working directory's parent revision to the specified |
17143
c9e6c6ae4ea1
update: move help text about parent revision higher up
Adrian Buehlmann <adrian@cadifra.com>
parents:
17142
diff
changeset
|
5757 changeset (see :hg:`help parents`). |
c9e6c6ae4ea1
update: move help text about parent revision higher up
Adrian Buehlmann <adrian@cadifra.com>
parents:
17142
diff
changeset
|
5758 |
16877
6e578e77cbe6
update: fix help regarding update to ancestor
Kevin Bullock <kbullock@ringworld.org>
parents:
16869
diff
changeset
|
5759 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
|
5760 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
|
5761 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
|
5762 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
|
5763 changeset. |
fe1b19bfe75b
help: describe new cross-branch behavior in update help text, plus cleanups
Stuart W Marks <smarks@smarks.org>
parents:
9714
diff
changeset
|
5764 |
17218
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5765 .. container:: verbose |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5766 |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5767 The following rules apply when the working directory contains |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5768 uncommitted changes: |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5769 |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5770 1. If neither -c/--check nor -C/--clean is specified, and if |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5771 the requested changeset is an ancestor or descendant of |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5772 the working directory's parent, the uncommitted changes |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5773 are merged into the requested changeset and the merged |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5774 result is left uncommitted. If the requested changeset is |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5775 not an ancestor or descendant (that is, it is on another |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5776 branch), the update is aborted and the uncommitted changes |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5777 are preserved. |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5778 |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5779 2. With the -c/--check option, the update is aborted and the |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5780 uncommitted changes are preserved. |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5781 |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5782 3. With the -C/--clean option, uncommitted changes are discarded and |
b8661d7c940f
update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents:
17192
diff
changeset
|
5783 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
|
5784 |
17144
71e36b3d2cc4
update: mention how update can be used to cancel an uncommitted merge
Adrian Buehlmann <adrian@cadifra.com>
parents:
17143
diff
changeset
|
5785 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
|
5786 :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
|
5787 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
5788 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
|
5789 :hg:`clone -U`). |
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
5790 |
14729
94eea58da2a3
update: do not use the term 'update' when mentioning reverting one file
Adrian Buehlmann <adrian@cadifra.com>
parents:
14726
diff
changeset
|
5791 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
|
5792 :hg:`revert [-r REV] NAME`. |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
5793 |
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10963
diff
changeset
|
5794 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
|
5795 |
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5796 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
|
5797 """ |
4450
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
5798 if rev and node: |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
5799 raise util.Abort(_("please specify just one revision")) |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
5800 |
13568
0b79cf616e65
commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents:
13477
diff
changeset
|
5801 if rev is None or rev == '': |
4450
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
5802 rev = node |
8fa54b9c6c5a
accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents:
4445
diff
changeset
|
5803 |
15935
6c97eb445341
bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents:
15912
diff
changeset
|
5804 # 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
|
5805 movemarkfrom = None |
17807
b11d181b87ba
update: remove unnecessary argument check
Kevin Bullock <kbullock@ringworld.org>
parents:
17806
diff
changeset
|
5806 if rev is None: |
18471
2096e025a728
update: update to current bookmark if it moved out from under us (issue3682)
Kevin Bullock <kbullock@ringworld.org>
parents:
18464
diff
changeset
|
5807 curmark = repo._bookmarkcurrent |
2096e025a728
update: update to current bookmark if it moved out from under us (issue3682)
Kevin Bullock <kbullock@ringworld.org>
parents:
18464
diff
changeset
|
5808 if bookmarks.iscurrent(repo): |
2096e025a728
update: update to current bookmark if it moved out from under us (issue3682)
Kevin Bullock <kbullock@ringworld.org>
parents:
18464
diff
changeset
|
5809 movemarkfrom = repo['.'].node() |
2096e025a728
update: update to current bookmark if it moved out from under us (issue3682)
Kevin Bullock <kbullock@ringworld.org>
parents:
18464
diff
changeset
|
5810 elif curmark: |
2096e025a728
update: update to current bookmark if it moved out from under us (issue3682)
Kevin Bullock <kbullock@ringworld.org>
parents:
18464
diff
changeset
|
5811 ui.status(_("updating to active bookmark %s\n") % curmark) |
2096e025a728
update: update to current bookmark if it moved out from under us (issue3682)
Kevin Bullock <kbullock@ringworld.org>
parents:
18464
diff
changeset
|
5812 rev = curmark |
15935
6c97eb445341
bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents:
15912
diff
changeset
|
5813 |
13415
25b5694b9337
update: preserve possible bookmark name to set current bookmark correctly
David Soria Parra <dsp@php.net>
parents:
13407
diff
changeset
|
5814 # 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
|
5815 brev = rev |
14319
b33f3e35efb0
scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
5816 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
|
5817 |
9450
e78967d3dd6f
commands: forbid 'hg update --check --clean'
Stuart W Marks <smarks@smarks.org>
parents:
9429
diff
changeset
|
5818 if check and clean: |
9451
3e673c988c85
commands: expand -c and -C in update error message
Martin Geisler <mg@lazybytes.net>
parents:
9450
diff
changeset
|
5819 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
|
5820 |
16092
914bc95e227b
update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
5821 if date: |
914bc95e227b
update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
5822 if rev is not None: |
914bc95e227b
update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
5823 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
|
5824 rev = cmdutil.finddate(ui, repo, date) |
914bc95e227b
update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
5825 |
9450
e78967d3dd6f
commands: forbid 'hg update --check --clean'
Stuart W Marks <smarks@smarks.org>
parents:
9429
diff
changeset
|
5826 if check: |
8855 | 5827 c = repo[None] |
17849
6da47b655d97
update: check for missing files with --check (issue3595)
Matt Mackall <mpm@selenic.com>
parents:
17848
diff
changeset
|
5828 if c.dirty(merge=False, branch=False, missing=True): |
8855 | 5829 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
|
5830 if rev is None: |
16092
914bc95e227b
update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
5831 rev = repo[repo[None].branch()].rev() |
16095
3eab42088be4
update: just merge unknown file collisions
Matt Mackall <mpm@selenic.com>
parents:
16092
diff
changeset
|
5832 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
|
5833 |
914bc95e227b
update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents:
16039
diff
changeset
|
5834 if clean: |
13367
cef73cd9c268
bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents:
13366
diff
changeset
|
5835 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
|
5836 else: |
13367
cef73cd9c268
bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents:
13366
diff
changeset
|
5837 ret = hg.update(repo, rev) |
cef73cd9c268
bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents:
13366
diff
changeset
|
5838 |
15935
6c97eb445341
bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents:
15912
diff
changeset
|
5839 if not ret and movemarkfrom: |
16010
c7811ca6fb94
update: note updated bookmark
Kevin Bullock <kbullock@ringworld.org>
parents:
16009
diff
changeset
|
5840 if bookmarks.update(repo, [movemarkfrom], repo['.'].node()): |
c7811ca6fb94
update: note updated bookmark
Kevin Bullock <kbullock@ringworld.org>
parents:
16009
diff
changeset
|
5841 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
|
5842 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
|
5843 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
|
5844 elif brev: |
7c75924a6926
update: delete bookmarks.current when explicitly updating to a rev (issue3276)
Idan Kamara <idankk86@gmail.com>
parents:
16189
diff
changeset
|
5845 bookmarks.unsetcurrent(repo) |
13367
cef73cd9c268
bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents:
13366
diff
changeset
|
5846 |
cef73cd9c268
bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents:
13366
diff
changeset
|
5847 return ret |
254 | 5848 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5849 @command('verify', []) |
247 | 5850 def verify(ui, repo): |
1437
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5851 """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
|
5852 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5853 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
|
5854 |
ea51d296085f
import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1436
diff
changeset
|
5855 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
|
5856 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
|
5857 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
|
5858 integrity of their crosslinks and indices. |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5859 |
17717
009db477c9fb
help: add information about recovery from corruption to help of "verify"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17686
diff
changeset
|
5860 Please see http://mercurial.selenic.com/wiki/RepositoryCorruption |
009db477c9fb
help: add information about recovery from corruption to help of "verify"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17686
diff
changeset
|
5861 for more information about recovery from corruption of the |
009db477c9fb
help: add information about recovery from corruption to help of "verify"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17686
diff
changeset
|
5862 repository. |
009db477c9fb
help: add information about recovery from corruption to help of "verify"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17686
diff
changeset
|
5863 |
11177
6a64813276ed
commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents:
11173
diff
changeset
|
5864 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
|
5865 """ |
2778 | 5866 return hg.verify(repo) |
247 | 5867 |
14297
2daa5179e73f
commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents:
14291
diff
changeset
|
5868 @command('version', []) |
3651
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5869 def version_(ui): |
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5870 """output version and copyright information""" |
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5871 ui.write(_("Mercurial Distributed SCM (version %s)\n") |
7632 | 5872 % util.version()) |
3651
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5873 ui.status(_( |
12829
01145ee78c53
version: replace email address with url to reduce private mail
Matt Mackall <mpm@selenic.com>
parents:
12821
diff
changeset
|
5874 "(see http://mercurial.selenic.com for more information)\n" |
15834
65f7e986a0d0
commands: bump copyright year
Martin Geisler <mg@aragost.com>
parents:
15833
diff
changeset
|
5875 "\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
|
5876 "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
|
5877 "There is NO\nwarranty; " |
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5878 "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
|
5879 )) |
6389205291c6
move show_version to version_
Matt Mackall <mpm@selenic.com>
parents:
3650
diff
changeset
|
5880 |
12131
c061f9882ff7
debugdata: try to access filelogs through repo, if possible
Sune Foldager <cryo@cyanite.org>
parents:
12130
diff
changeset
|
5881 norepo = ("clone init version help debugcommands debugcomplete" |
13723
e615765fdcc7
wireproto: add known([id]) function
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13720
diff
changeset
|
5882 " debugdate debuginstall debugfsinfo debugpushkey debugwireargs" |
13741
b51bf961b3cb
wireproto: add getbundle() function
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
13727
diff
changeset
|
5883 " debugknown debuggetbundle debugbundle") |
12131
c061f9882ff7
debugdata: try to access filelogs through repo, if possible
Sune Foldager <cryo@cyanite.org>
parents:
12130
diff
changeset
|
5884 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
|
5885 " debugdata debugindex debugindexdot debugrevlog") |
17773
434e5bd615fc
commands: don't infer repo for commands like update (issue2748)
Siddharth Agarwal <sid0@fb.com>
parents:
17736
diff
changeset
|
5886 inferrepo = ("add addremove annotate cat commit diff grep forget log parents" |
434e5bd615fc
commands: don't infer repo for commands like update (issue2748)
Siddharth Agarwal <sid0@fb.com>
parents:
17736
diff
changeset
|
5887 " remove resolve status debugwalk") |