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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
249
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 248
diff changeset
1 # commands.py - command processing for mercurial
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 248
diff changeset
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
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 248
diff changeset
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
25e572394f5c Update license to GPLv2+
Matt Mackall <mpm@selenic.com>
parents: 10224
diff changeset
6 # GNU General Public License version 2 or any later version.
249
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 248
diff changeset
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
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
143 # Commands start here, listed alphabetically
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
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
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
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
d07d729ce306 Added --date option to annotate.
lupus@debian.org
parents: 1519
diff changeset
251
744
3d88f6dd1ed4 Handle empty file list for annotate
mpm@selenic.com
parents: 743
diff changeset
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
3d88f6dd1ed4 Handle empty file list for annotate
mpm@selenic.com
parents: 743
diff changeset
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
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
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
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
284 for abs in ctx.walk(m):
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
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
836667830fee Teach annotate about binary files
mpm@selenic.com
parents: 1015
diff changeset
288 continue
836667830fee Teach annotate about binary files
mpm@selenic.com
parents: 1015
diff changeset
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
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
292 pieces = []
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
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
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
301
771
0de223012086 Fixes for annotate
mpm@selenic.com
parents: 770
diff changeset
302 if pieces:
0de223012086 Fixes for annotate
mpm@selenic.com
parents: 770
diff changeset
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
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
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
a8f136f430da bisect: fix indent level
Yuya Nishihara <yuya@tcha.org>
parents: 14144
diff changeset
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
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
1066 If you omit the destination repository, then hg assumes the
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
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
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
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
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
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
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
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
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1240 Examples:
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1241
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1242 - clone a remote repository to a new directory named hg/::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1243
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1244 hg clone http://selenic.com/hg
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1245
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1246 - create a lightweight local clone::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1247
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1248 hg clone project/ project-feature/
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1249
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1250 - clone from an absolute path on an ssh server (note double-slash)::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1251
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1252 hg clone ssh://user@server//home/projects/alpha/
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1253
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1254 - do a high-speed clone over a LAN while checking out a
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1255 specified version::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1256
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1257 hg clone --uncompressed http://server/repo -u 1.5
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1258
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1259 - create a repository without changesets after a particular revision::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1260
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1261 hg clone -r 04e544 experimental/ good/
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1262
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1263 - clone (and track) a particular named branch::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1264
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1265 hg clone http://selenic.com/hg#stable
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
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
03f27b1381f9 Whitespace cleanups
mpm@selenic.com
parents: 513
diff changeset
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
593c5ca70a63 spelling: override
timeless@mozdev.org
parents: 17500
diff changeset
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
9a2a73ea6135 repo locks: use True/False
Matt Mackall <mpm@selenic.com>
parents: 4906
diff changeset
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
ae96b7e1318d Add hg copy
mpm@selenic.com
parents: 355
diff changeset
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
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
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
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1455 ui.write("%d:%s\n" % (r.rev(a), hex(a)))
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
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
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
1659 def debugcheckstate(ui, repo):
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
1660 """validate the correctness of the current dirstate"""
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
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
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
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
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
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
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1669 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
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
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1672 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
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
df8a5a0098d4 Remove all remaining print statements
mpm@selenic.com
parents: 580
diff changeset
1675 (f, state))
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1676 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
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
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
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
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1681 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
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
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
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
8ac8db8dc346 en-us: labeled
timeless@mozdev.org
parents: 17376
diff changeset
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
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
1742 yield 'n', (r, list(set(p for p in rlog.parentrevs(r)
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
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
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
1762 yield 'n', (r, list(set(p for p in cl.parentrevs(r)
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
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
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
1801 def debugdate(ui, date, range=None, **opts):
3805
299d6cce6c0b add debugdate command
Matt Mackall <mpm@selenic.com>
parents: 3804
diff changeset
1802 """parse and display a date"""
3812
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
1803 if opts["extended"]:
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
1804 d = util.parsedate(date, util.extendeddateformats)
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
1805 else:
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
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
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
1809 if range:
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
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
299d6cce6c0b add debugdate command
Matt Mackall <mpm@selenic.com>
parents: 3804
diff changeset
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
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
1821 remoteurl, branches = hg.parseurl(ui.expandpath(remoteurl),
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
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
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
1832 raise util.Abort('cannot use localheads with old style '
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
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
b0566467c492 fileset: drop matchfn
Matt Mackall <mpm@selenic.com>
parents: 14671
diff changeset
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
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
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
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
1969 " size " + basehdr + " link p1 p2"
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
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
74d3f5336b66 Implement revlogng.
mason@suse.com
parents: 2042
diff changeset
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
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
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
df8a5a0098d4 Remove all remaining print statements
mpm@selenic.com
parents: 580
diff changeset
2009 ui.write("}\n")
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
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
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2099 Every ID must be a full-length hex node id string. Returns a list of 0s
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
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
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2267 @command('debugpvec', [], _('A B'))
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2268 def debugpvec(ui, repo, a, b=None):
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2269 ca = scmutil.revsingle(repo, a)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2270 cb = scmutil.revsingle(repo, b)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2271 pa = pvec.ctxpvec(ca)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2272 pb = pvec.ctxpvec(cb)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2273 if pa == pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2274 rel = "="
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2275 elif pa > pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2276 rel = ">"
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2277 elif pa < pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2278 rel = "<"
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2279 elif pa | pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2280 rel = "|"
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2281 ui.write(_("a: %s\n") % pa)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2282 ui.write(_("b: %s\n") % pb)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2283 ui.write(_("depth(a): %d depth(b): %d\n") % (pa._depth, pb._depth))
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2284 ui.write(_("delta: %d hdist: %d distance: %d relation: %s\n") %
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2285 (abs(pa._depth - pb._depth), pvec._hamming(pa._vec, pb._vec),
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2286 pa.distance(pb), rel))
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
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
f4dece0f7016 refactor debugrenamed
Matt Mackall <mpm@selenic.com>
parents: 3651
diff changeset
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
f4dece0f7016 refactor debugrenamed
Matt Mackall <mpm@selenic.com>
parents: 3651
diff changeset
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
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
2318 for abs in ctx.walk(m):
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
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
f4dece0f7016 refactor debugrenamed
Matt Mackall <mpm@selenic.com>
parents: 3651
diff changeset
2324 else:
f4dece0f7016 refactor debugrenamed
Matt Mackall <mpm@selenic.com>
parents: 3651
diff changeset
2325 ui.write(_("%s not renamed\n") % rel)
1116
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
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
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
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
ec2aae8b375d revlog: drop base() again
Matt Mackall <mpm@selenic.com>
parents: 14363
diff changeset
2343 dbase = r.deltaparent(rev)
ec2aae8b375d revlog: drop base() again
Matt Mackall <mpm@selenic.com>
parents: 14363
diff changeset
2344 if dbase == -1:
ec2aae8b375d revlog: drop base() again
Matt Mackall <mpm@selenic.com>
parents: 14363
diff changeset
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
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2359 v = r.version
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2360 format = v & 0xFFFF
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2361 flags = []
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2362 gdelta = False
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2363 if v & revlog.REVLOGNGINLINEDATA:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2364 flags.append('inline')
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2365 if v & revlog.REVLOGGENERALDELTA:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2366 gdelta = True
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
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
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2370
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2371 nummerges = 0
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2372 numfull = 0
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2373 numprev = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2374 nump1 = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2375 nump2 = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2376 numother = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2377 nump1prev = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2378 nump2prev = 0
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2379 chainlengths = []
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2380
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
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
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2383 deltasize = [None, 0, 0L]
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2384
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2385 def addsize(size, l):
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2386 if l[0] is None or size < l[0]:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2387 l[0] = size
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2388 if size > l[1]:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2389 l[1] = size
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2390 l[2] += size
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2391
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2392 numrevs = len(r)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2393 for rev in xrange(numrevs):
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2394 p1, p2 = r.parentrevs(rev)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2395 delta = r.deltaparent(rev)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2396 if format > 0:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2397 addsize(r.rawsize(rev), datasize)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2398 if p2 != nullrev:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2399 nummerges += 1
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2400 size = r.length(rev)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
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
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2405 else:
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2406 chainlengths.append(chainlengths[delta] + 1)
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
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
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
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
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
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
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2470
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
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
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
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
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2478 % tuple(deltasize))
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
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
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
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
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
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
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
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
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2498 numdeltas))
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
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
d3d1d39da2fa walk: remove cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents: 6584
diff changeset
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
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
2683 .. note::
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
2684 diff may generate unexpected results for merges, as it will
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
2685 default to comparing against the working directory's first
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
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
75361931884d commands: mention diff -c
timeless <timeless@mozdev.org>
parents: 10515
diff changeset
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
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2704 .. container:: verbose
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2705
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2706 Examples:
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2707
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2708 - compare a file in the current working directory to its parent::
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2709
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2710 hg diff foo.c
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2711
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2712 - compare two historical versions of a directory, with rename info::
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2713
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2714 hg diff --git -r 1.0:1.2 lib/
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2715
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2716 - get change stats relative to the last change on some date::
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2717
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2718 hg diff --stat -r "date('may 2')"
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2719
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2720 - diff all newly-added files that contain a keyword::
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2721
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2722 hg diff "set:added() and grep(GNU)"
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2723
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2724 - compare a revision and its parents::
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2725
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2726 hg diff -c 9353 # compare against first parent
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2727 hg diff -r 9353^:9353 # same using revset syntax
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
2728 hg diff -r 9353^2:9353 # compare against the second parent
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
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
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
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
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
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
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2800 .. container:: verbose
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2801
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2802 Examples:
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2803
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2804 - use export and import to transplant a bugfix to the current
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2805 branch::
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2806
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2807 hg export -r 9353 | hg import -
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2808
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2809 - export all the changesets between two revisions to a file with
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2810 rename information::
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2811
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2812 hg export --git -r 123:150 > changes.txt
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2813
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2814 - split outgoing changes into a series of patches with
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2815 descriptive names::
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2816
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
2817 hg export -r "outgoing()" -o "%n-%m.patch"
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
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
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
2848 .. container:: verbose
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
2849
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
2850 Examples:
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
2851
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
2852 - forget newly-added binary files::
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
2853
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
2854 hg forget "set:added() and binary()"
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
2855
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
2856 - forget files that would be excluded by .hgignore::
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
2857
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
2858 hg forget "set:hgignore()"
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
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
f5d9d0d0f588 graft: add --edit
Matt Mackall <mpm@selenic.com>
parents: 15238
diff changeset
2939 editor = None
f5d9d0d0f588 graft: add --edit
Matt Mackall <mpm@selenic.com>
parents: 15238
diff changeset
2940 if opts.get('edit'):
f5d9d0d0f588 graft: add --edit
Matt Mackall <mpm@selenic.com>
parents: 15238
diff changeset
2941 editor = cmdutil.commitforceeditor
f5d9d0d0f588 graft: add --edit
Matt Mackall <mpm@selenic.com>
parents: 15238
diff changeset
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
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
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
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3125
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
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
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
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
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3141 def __init__(self, line, linenum, colstart, colend):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3142 self.line = line
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3143 self.linenum = linenum
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3144 self.colstart = colstart
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
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
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3152
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3153 matches = {}
2870
8eaaf1321bfe grep: add --follow support.
Brendan Cully <brendan@kublai.com>
parents: 2869
diff changeset
3154 copies = {}
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
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
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3157 m = matches[rev][fn]
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3158 for lnum, cstart, cend, line in matchlines(body):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
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
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
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
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
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
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents: 7632
diff changeset
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
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
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
2bfe525ef6ca Beginning of multi-head support
mpm@selenic.com
parents: 220
diff changeset
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
833d1250ce00 help: update help
Matt Mackall <mpm@selenic.com>
parents: 7197
diff changeset
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
2bfe525ef6ca Beginning of multi-head support
mpm@selenic.com
parents: 220
diff changeset
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
269374b89b74 import: add --edit switch
Matt Mackall <mpm@selenic.com>
parents: 15212
diff changeset
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
20b91f91f9ca minor documentation improvements
timeless@mozdev.org
parents: 9646
diff changeset
3552 Import a list of patches and commit them individually (unless
20b91f91f9ca minor documentation improvements
timeless@mozdev.org
parents: 9646
diff changeset
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
47ba52121433 Add import --exact.
Brendan Cully <brendan@kublai.com>
parents: 4256
diff changeset
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
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3588 .. container:: verbose
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3589
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3590 Examples:
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3591
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3592 - import a traditional patch from a website and detect renames::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3593
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3594 hg import -s 80 http://example.com/bugfix.patch
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3595
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3596 - import a changeset from an hgweb server::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3597
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3598 hg import http://www.selenic.com/hg/rev/5ca8c111e9aa
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3599
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3600 - import all the patches in an Unix-style mbox::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3601
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3602 hg import incoming-patches.mbox
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3603
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3604 - attempt to exactly restore an exported changeset (not always
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3605 possible)::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3606
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
3607 hg import --exact proposed-fix.patch
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
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
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
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
269374b89b74 import: add --edit switch
Matt Mackall <mpm@selenic.com>
parents: 15212
diff changeset
3621 editor = cmdutil.commiteditor
269374b89b74 import: add --edit switch
Matt Mackall <mpm@selenic.com>
parents: 15212
diff changeset
3622 if opts.get('edit'):
269374b89b74 import: add --edit switch
Matt Mackall <mpm@selenic.com>
parents: 15212
diff changeset
3623 editor = cmdutil.commitforceeditor
269374b89b74 import: add --edit switch
Matt Mackall <mpm@selenic.com>
parents: 15212
diff changeset
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
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
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
269374b89b74 import: add --edit switch
Matt Mackall <mpm@selenic.com>
parents: 15212
diff changeset
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
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
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
1e091b3293d5 default path support with .hg/hgrc
mpm@selenic.com
parents: 335
diff changeset
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
b6c42714d900 Add locate command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 625
diff changeset
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
092937de2ad7 Refactor matchpats and walk
mpm@selenic.com
parents: 740
diff changeset
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
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
3899 for abs in repo[rev].walk(m):
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
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
b6c42714d900 Add locate command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 625
diff changeset
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
e18c3d08528d Show copies in hg log.
Brendan Cully <brendan@kublai.com>
parents: 3194
diff changeset
4026
3813
fc5ba0ab7f45 Add --date support to log
Matt Mackall <mpm@selenic.com>
parents: 3812
diff changeset
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
fc5ba0ab7f45 Add --date support to log
Matt Mackall <mpm@selenic.com>
parents: 3812
diff changeset
4029 df = util.matchdate(opts["date"])
fc5ba0ab7f45 Add --date support to log
Matt Mackall <mpm@selenic.com>
parents: 3812
diff changeset
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
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
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
ad3d5b4367cb make manifest friendlier
Matt Mackall <mpm@selenic.com>
parents: 3707
diff changeset
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
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
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
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
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
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
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
270756aa29d5 Add hg outgoing command
mpm@selenic.com
parents: 918
diff changeset
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
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents: 7632
diff changeset
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
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
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
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
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
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4358 for n in p:
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
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
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
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
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4392 if search:
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4393 for name, path in ui.configitems("paths"):
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
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
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
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
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4399 return 1
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4400 else:
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
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
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
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
b03388ffeb31 phase: fix up help string
Matt Mackall <mpm@selenic.com>
parents: 15831
diff changeset
4425
b03388ffeb31 phase: fix up help string
Matt Mackall <mpm@selenic.com>
parents: 15831
diff changeset
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
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
4509 ui.status(_("(run 'hg heads .' to see heads, 'hg merge' to "
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
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
a1ecef497721 [PATCH] Unintuive use
mpm@selenic.com
parents: 403
diff changeset
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
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7633
diff changeset
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
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7633
diff changeset
4566 "so a rev cannot be specified.")
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7633
diff changeset
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
9ab17e83bce3 stopgap hg push support
mpm@selenic.com
parents: 317
diff changeset
4691
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4692 @command('recover', [])
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
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
fdc232d8a193 Move repo.verify
Matt Mackall <mpm@selenic.com>
parents: 2776
diff changeset
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
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
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
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4717 Schedule the indicated files for removal from the current branch.
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4718
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4719 This command schedules the files to be removed at the next commit.
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4720 To undo a remove before that, see :hg:`revert`. To undo added
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4721 files, see :hg:`forget`.
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4722
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4723 .. container:: verbose
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4724
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4725 -A/--after can be used to remove only files that have already
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4726 been deleted, -f/--force can be used to force deletion, and -Af
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4727 can be used to remove files from the next revision without
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4728 deleting them from the working directory.
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4729
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4730 The following table details the behavior of remove for different
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4731 file states (columns) and option combinations (rows). The file
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4732 states are Added [A], Clean [C], Modified [M] and Missing [!]
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4733 (as reported by :hg:`status`). The actions are Warn, Remove
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
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
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
4745 Note that remove never deletes files in Added [A] state from the
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
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
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
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
9a2a73ea6135 repo locks: use True/False
Matt Mackall <mpm@selenic.com>
parents: 4906
diff changeset
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
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
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
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
4879 """
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
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
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
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
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
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
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
4895
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
4896 for f in ms:
6594
fca1688f0459 resolve: use cmdutil.match
Matt Mackall <mpm@selenic.com>
parents: 6586
diff changeset
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
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
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
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
4908 ms.mark(f, "u")
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
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
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
4911 mctx = wctx.parents()[-1]
7847
30cb79d84352 resolve: keep .orig files
Matt Mackall <mpm@selenic.com>
parents: 7829
diff changeset
4912
30cb79d84352 resolve: keep .orig files
Matt Mackall <mpm@selenic.com>
parents: 7829
diff changeset
4913 # backup pre-resolve (merge uses .orig for its own purposes)
30cb79d84352 resolve: keep .orig files
Matt Mackall <mpm@selenic.com>
parents: 7829
diff changeset
4914 a = repo.wjoin(f)
30cb79d84352 resolve: keep .orig files
Matt Mackall <mpm@selenic.com>
parents: 7829
diff changeset
4915 util.copyfile(a, a + ".resolve")
30cb79d84352 resolve: keep .orig files
Matt Mackall <mpm@selenic.com>
parents: 7829
diff changeset
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
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
4925
7847
30cb79d84352 resolve: keep .orig files
Matt Mackall <mpm@selenic.com>
parents: 7829
diff changeset
4926 # replace filemerge's .orig file with our resolve file
30cb79d84352 resolve: keep .orig files
Matt Mackall <mpm@selenic.com>
parents: 7829
diff changeset
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
30cb79d84352 resolve: keep .orig files
Matt Mackall <mpm@selenic.com>
parents: 7829
diff changeset
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
d4ec6d61b3ee imported patch rev-help
Matt Mackall <mpm@selenic.com>
parents: 5573
diff changeset
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
d4ec6d61b3ee imported patch rev-help
Matt Mackall <mpm@selenic.com>
parents: 5573
diff changeset
4961 Modified files are saved with a .orig suffix before reverting.
d4ec6d61b3ee imported patch rev-help
Matt Mackall <mpm@selenic.com>
parents: 5573
diff changeset
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
4532c44bb62d revert: use opts.get
Xavier Snelgrove <xs@wxs.ca>
parents: 11886
diff changeset
4969 if opts.get("date"):
4532c44bb62d revert: use opts.get
Xavier Snelgrove <xs@wxs.ca>
parents: 11886
diff changeset
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
0c3bae18403b [PATCH] hg revert
mpm@selenic.com
parents: 582
diff changeset
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
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
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
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
5055 ui.write(repo.root + "\n")
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
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
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
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
bfe12654764d hgweb: change startup argument processing
mpm@selenic.com
parents: 981
diff changeset
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
bfe12654764d hgweb: change startup argument processing
mpm@selenic.com
parents: 981
diff changeset
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
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
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
09375250eb31 Optimize diff and status in subdirectories
mpm@selenic.com
parents: 310
diff changeset
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
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
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
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5355 def summary(ui, repo, **opts):
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5356 """summarize working directory state
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5357
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5358 This generates a brief summary of the working directory state,
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5359 including parents, branch, commit status, and available updates.
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5360
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5361 With the --remote option, this will check the default paths for
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
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
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5365 """
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5366
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5367 ctx = repo[None]
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5368 parents = ctx.parents()
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5371
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5390
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5391 branch = ctx.branch()
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5449
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5452
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5453 if len(parents) > 1:
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5454 t += _(' (merge)')
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
3194227a4158 summary: quieter with -q
Matt Mackall <mpm@selenic.com>
parents: 9604
diff changeset
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
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5472
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5473 # all ancestors of branch heads - all ancestors of parent = new csets
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5474 new = [0] * len(repo)
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5484 new[a] = 0
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5485 new = sum(new)
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5486
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
3194227a4158 summary: quieter with -q
Matt Mackall <mpm@selenic.com>
parents: 9604
diff changeset
5489 ui.status(_('update: (current)\n'))
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5492 ui.write(_('update: %d new changesets (update)\n') % new)
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5495 ui.write(_('update: %d new changesets, %d branch heads (merge)\n') %
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5496 (new, len(bheads)))
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
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
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5500 if opts.get('remote'):
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
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
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
5505 revs, checkout = hg.addbranchrevs(repo, other, branches,
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
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
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
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
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5513 repo.ui.popbuffer()
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5514 if incoming:
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5515 t.append(_('1 or more incoming'))
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
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
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
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
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
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
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5532 if o:
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
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
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5543
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
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
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5546 ui.write(_('remote: %s\n') % (', '.join(t)))
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
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
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5549 ui.status(_('remote: (synced)\n'))
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
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
3be4785f8994 tags: add --remove
Matt Mackall <mpm@selenic.com>
parents: 4179
diff changeset
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
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
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
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
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
f331de880cbb update: add --check option
Matt Mackall <mpm@selenic.com>
parents: 8849
diff changeset
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
f331de880cbb update: add --check option
Matt Mackall <mpm@selenic.com>
parents: 8849
diff changeset
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
f331de880cbb update: add --check option
Matt Mackall <mpm@selenic.com>
parents: 8849
diff changeset
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
c03f58e5fd2d unify checkout and resolve into update
mpm@selenic.com
parents: 252
diff changeset
5848
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5849 @command('verify', [])
247
863b508c5b36 migrate verify
mpm@selenic.com
parents: 246
diff changeset
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
fdc232d8a193 Move repo.verify
Matt Mackall <mpm@selenic.com>
parents: 2776
diff changeset
5866 return hg.verify(repo)
247
863b508c5b36 migrate verify
mpm@selenic.com
parents: 246
diff changeset
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
9626819b2e3d refactor version code
Matt Mackall <mpm@selenic.com>
parents: 7628
diff changeset
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")