annotate mercurial/commands.py @ 26241:eb97d49768cc

revlog: rename generic "i" variable to "indexdata" Increase readability.
author Gregory Szorc <gregory.szorc@gmail.com>
date Sat, 12 Sep 2015 12:47:00 -0700
parents 69da16b366ad
children 4b685712fa45
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 _
21957
2122b82b6987 debuginstall: handle quoted path for editor (issue4316)
Alexandre Garnier <zigarn@gmail.com>
parents: 21952
diff changeset
11 import os, re, difflib, time, tempfile, errno, shlex
22559
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
12 import sys, socket
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
13 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
14 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
15 import archival, changegroup, cmdutil, hbisect
25931
a0847285d207 commands: break import cycle
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25903
diff changeset
16 import sshserver, hgweb
21848
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
17 import extensions
19757
ff00839e8bb3 commands: import hgweb.server in a way that 2to3 can rewrite
Augie Fackler <raf@durin42.com>
parents: 19616
diff changeset
18 from hgweb import server as hgweb_server
15856
6bed6cc6d0d0 commands: partial backout of fbb68b382040
Martin Geisler <mg@aragost.com>
parents: 15855
diff changeset
19 import merge as mergemod
14511
30506b894359 filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents: 14509
diff changeset
20 import minirst, revset, fileset
22901
722117c8e023 duplicatecopies: move from cmdutil to copies
Matt Mackall <mpm@selenic.com>
parents: 22899
diff changeset
21 import dagparser, context, simplemerge, graphmod, copies
20034
1e5b38a919dd cleanup: move stdlib imports to their own import statement
Augie Fackler <raf@durin42.com>
parents: 20026
diff changeset
22 import random
1e5b38a919dd cleanup: move stdlib imports to their own import statement
Augie Fackler <raf@durin42.com>
parents: 20026
diff changeset
23 import setdiscovery, treediscovery, dagutil, pvec, localrepo
25744
e78a80f8f51e bookmarks: change bookmark within a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25735
diff changeset
24 import phases, obsolete, exchange, bundle2, repair, lock as lockmod
22837
2be7d5ebd4d0 config: use the same hgrc for a cloned repo as for an uninitted repo
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 22824
diff changeset
25 import ui as uimod
2731
ad4155e757da Kill ui.setconfig_remoteopts
Matt Mackall <mpm@selenic.com>
parents: 2718
diff changeset
26
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
27 table = {}
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
28
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
29 command = cmdutil.command(table)
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
30
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
31 # Space delimited list of commands that don't require local repositories.
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
32 # This should be populated by passing norepo=True into the @command decorator.
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
33 norepo = ''
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
34 # Space delimited list of commands that optionally require local repositories.
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
35 # This should be populated by passing optionalrepo=True into the @command
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
36 # decorator.
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
37 optionalrepo = ''
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
38 # Space delimited list of commands that will examine arguments looking for
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
39 # a repository. This should be populated by passing inferrepo=True into the
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
40 # @command decorator.
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
41 inferrepo = ''
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
42
25347
ceec79b5657a bookmarks: name label for active bookmark correctly
Ryan McElroy <rmcelroy@fb.com>
parents: 25304
diff changeset
43 # label constants
ceec79b5657a bookmarks: name label for active bookmark correctly
Ryan McElroy <rmcelroy@fb.com>
parents: 25304
diff changeset
44 # until 3.5, bookmarks.current was the advertised name, not
ceec79b5657a bookmarks: name label for active bookmark correctly
Ryan McElroy <rmcelroy@fb.com>
parents: 25304
diff changeset
45 # bookmarks.active, so we must use both to avoid breaking old
ceec79b5657a bookmarks: name label for active bookmark correctly
Ryan McElroy <rmcelroy@fb.com>
parents: 25304
diff changeset
46 # custom styles
ceec79b5657a bookmarks: name label for active bookmark correctly
Ryan McElroy <rmcelroy@fb.com>
parents: 25304
diff changeset
47 activebookmarklabel = 'bookmarks.active bookmarks.current'
ceec79b5657a bookmarks: name label for active bookmark correctly
Ryan McElroy <rmcelroy@fb.com>
parents: 25304
diff changeset
48
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
49 # common command options
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
50
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
51 globalopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
52 ('R', 'repository', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
53 _('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
54 _('REPO')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
55 ('', 'cwd', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
56 _('change working directory'), _('DIR')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
57 ('y', 'noninteractive', None,
14849
d87814992728 commands: improve help for -y/--noninteractive
Martin Geisler <mg@aragost.com>
parents: 14755
diff changeset
58 _('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
59 ('q', 'quiet', None, _('suppress output')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
60 ('v', 'verbose', None, _('enable additional output')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
61 ('', 'config', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
62 _('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
63 _('CONFIG')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
64 ('', 'debug', None, _('enable debugging output')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
65 ('', 'debugger', None, _('start debugger')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
66 ('', '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
67 _('ENCODE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
68 ('', 'encodingmode', encoding.encodingmode,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
69 _('set the charset encoding mode'), _('MODE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
70 ('', '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
71 ('', '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
72 ('', 'profile', None, _('print command execution profile')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
73 ('', '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
74 ('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
75 ('', 'hidden', False, _('consider hidden changesets')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
76 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
77
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
78 dryrunopts = [('n', 'dry-run', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
79 _('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
80
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
81 remoteopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
82 ('e', 'ssh', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
83 _('specify ssh command to use'), _('CMD')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
84 ('', 'remotecmd', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
85 _('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
86 ('', 'insecure', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
87 _('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
88 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
89
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
90 walkopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
91 ('I', 'include', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
92 _('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
93 ('X', 'exclude', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
94 _('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
95 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
96
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
97 commitopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
98 ('m', 'message', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
99 _('use text as commit message'), _('TEXT')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
100 ('l', 'logfile', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
101 _('read commit message from file'), _('FILE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
102 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
103
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
104 commitopts2 = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
105 ('d', 'date', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
106 _('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
107 ('u', 'user', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
108 _('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
109 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
110
22429
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
111 # hidden for now
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
112 formatteropts = [
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
113 ('T', 'template', '',
24906
a4ee6f774f14 commands: hide formatter option as EXPERIMENTAL, not as DEPRECATED
Yuya Nishihara <yuya@tcha.org>
parents: 24891
diff changeset
114 _('display with template (EXPERIMENTAL)'), _('TEMPLATE')),
22429
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
115 ]
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
116
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
117 templateopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
118 ('', 'style', '',
20669
870d60294b04 templater: deprecate --style now that -T exists
Matt Mackall <mpm@selenic.com>
parents: 20665
diff changeset
119 _('display using template map file (DEPRECATED)'), _('STYLE')),
20665
945bc5497e6d commands: add -T alternative to --template
Matt Mackall <mpm@selenic.com>
parents: 20664
diff changeset
120 ('T', 'template', '',
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
121 _('display with template'), _('TEMPLATE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
122 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
123
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
124 logopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
125 ('p', 'patch', None, _('show patch')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
126 ('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
127 ('l', 'limit', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
128 _('limit number of changes displayed'), _('NUM')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
129 ('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
130 ('', '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
131 ('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
132 ] + templateopts
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
133
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
134 diffopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
135 ('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
136 ('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
137 ('', '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
138 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
139
15528
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
140 diffwsopts = [
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
141 ('w', 'ignore-all-space', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
142 _('ignore white space when comparing lines')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
143 ('b', 'ignore-space-change', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
144 _('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
145 ('B', 'ignore-blank-lines', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
146 _('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
147 ]
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
148
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
149 diffopts2 = [
23298
dc4d0c7b7d94 diff: add a --noprefix option
Siddharth Agarwal <sid0@fb.com>
parents: 23289
diff changeset
150 ('', 'noprefix', None, _('omit a/ and b/ prefixes from filenames')),
15528
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
151 ('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
152 ('', '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
153 ] + diffwsopts + [
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
154 ('U', 'unified', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
155 _('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
156 ('', 'stat', None, _('output diffstat-style summary of changes')),
24455
16961d43dc89 diff: rename --relative option to --root
Sean Farley <sean@farley.io>
parents: 24432
diff changeset
157 ('', 'root', '', _('produce diffs relative to subdirectory'), _('DIR')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
158 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
159
14852
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
160 mergetoolopts = [
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
161 ('t', 'tool', '', _('specify merge tool')),
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
162 ]
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
163
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
164 similarityopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
165 ('s', 'similarity', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
166 _('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
167 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
168
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
169 subrepoopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
170 ('S', 'subrepos', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
171 _('recurse into subrepositories'))
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
172 ]
2731
ad4155e757da Kill ui.setconfig_remoteopts
Matt Mackall <mpm@selenic.com>
parents: 2718
diff changeset
173
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
174 # Commands start here, listed alphabetically
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
175
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
176 @command('^add',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
177 walkopts + subrepoopts + dryrunopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
178 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
179 inferrepo=True)
724
1c0c413cccdd Get add and locate to use new repo and dirstate walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 723
diff changeset
180 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
181 """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
182
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
183 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
184 repository.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
185
3829
531c116b2028 Add doc notes about revert and hg status vs diff
Matt Mackall <mpm@selenic.com>
parents: 3822
diff changeset
186 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
187 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
188
7807
bd8f44638847 help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents: 7765
diff changeset
189 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
190
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
191 .. container:: verbose
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
192
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
193 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
194 automatically by :hg:`add`::
10446
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
195
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
196 $ ls
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
197 foo.c
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
198 $ hg status
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
199 ? foo.c
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
200 $ hg add
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
201 adding foo.c
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
202 $ hg status
10448
6e5a47398fc5 commands: correct example in add help text
Martin Geisler <mg@lazybytes.net>
parents: 10446
diff changeset
203 A foo.c
11507
35e2d453cf0d commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11488
diff changeset
204
35e2d453cf0d commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11488
diff changeset
205 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
206 """
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
207
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
208 m = scmutil.match(repo[None], pats, opts)
23885
9994f45ba714 add: pass options via keyword args
Matt Harbison <matt_harbison@yahoo.com>
parents: 23877
diff changeset
209 rejected = cmdutil.add(ui, repo, m, "", False, **opts)
12269
877236cdd437 add: move main part to cmdutil to make it easier to reuse
Martin Geisler <mg@lazybytes.net>
parents: 12266
diff changeset
210 return rejected and 1 or 0
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
211
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
212 @command('addremove',
23538
ccfb56450f21 addremove: add support for the -S flag
Matt Harbison <matt_harbison@yahoo.com>
parents: 23537
diff changeset
213 similarityopts + subrepoopts + walkopts + dryrunopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
214 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
215 inferrepo=True)
766
b444a7e053f1 Get addremove to use new walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 764
diff changeset
216 def addremove(ui, repo, *pats, **opts):
3181
3637d5d17cbc Documentation fixes for addremove.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3172
diff changeset
217 """add all new files, delete all missing files
2181
690da72b0b16 deprecate addremove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2179
diff changeset
218
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
219 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
220 repository.
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
221
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
222 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
223 ``.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
224 commit.
2958
ff3ea21a981a addremove: add -s/--similarity option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2956
diff changeset
225
17266
4e35dea77e31 addremove: mention --similarity defaults to 100 (issue3430)
Patrick Mezard <patrick@mezard.eu>
parents: 17264
diff changeset
226 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
227 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
228 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
229 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
230 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
231 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
232 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
233 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
234 identical files are detected.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
235
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
236 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
237 """
4966
8d982aef0be1 addremove: print meaningful error message if --similar not numeric
Bryan O'Sullivan <bos@serpentine.com>
parents: 4950
diff changeset
238 try:
11551
4484a7b661f2 commands: addremove does similarity 100 by default
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 11525
diff changeset
239 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
240 except ValueError:
8d982aef0be1 addremove: print meaningful error message if --similar not numeric
Bryan O'Sullivan <bos@serpentine.com>
parents: 4950
diff changeset
241 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
242 if sim < 0 or sim > 100:
ff3ea21a981a addremove: add -s/--similarity option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2956
diff changeset
243 raise util.Abort(_('similarity must be between 0 and 100'))
23533
891aaa7c0c70 scmutil: pass a matcher to scmutil.addremove() instead of a list of patterns
Matt Harbison <matt_harbison@yahoo.com>
parents: 23508
diff changeset
244 matcher = scmutil.match(repo[None], pats, opts)
23537
f1b06a8aad42 commit: propagate --addremove to subrepos if -S is specified (issue3759)
Matt Harbison <matt_harbison@yahoo.com>
parents: 23533
diff changeset
245 return scmutil.addremove(repo, matcher, "", opts, similarity=sim / 100.0)
219
8ff4532376a4 hg checkout: refuse to checkout if there are outstanding changes
mpm@selenic.com
parents: 214
diff changeset
246
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
247 @command('^annotate|blame',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
248 [('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
249 ('', 'follow', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
250 _('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
251 ('', '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
252 ('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
253 ('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
254 ('f', 'file', None, _('list the filename')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
255 ('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
256 ('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
257 ('c', 'changeset', None, _('list the changeset')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
258 ('l', 'line-number', None, _('show line number at the first appearance'))
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
259 ] + diffwsopts + walkopts + formatteropts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
260 _('[-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FILE...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
261 inferrepo=True)
733
1966c553f652 Convert annotate over to walk interface.
Bryan O'Sullivan <bos@serpentine.com>
parents: 732
diff changeset
262 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
263 """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
264
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
265 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
266 each line
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
267
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
268 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
269 by whom.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
270
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
271 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
272 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
273 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
274 nor desirable.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
275
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
276 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
277 """
22266
711de9dcb1d3 annotate: abort early if no file is specified
Yuya Nishihara <yuya@tcha.org>
parents: 22248
diff changeset
278 if not pats:
711de9dcb1d3 annotate: abort early if no file is specified
Yuya Nishihara <yuya@tcha.org>
parents: 22248
diff changeset
279 raise util.Abort(_('at least one filename or pattern is required'))
711de9dcb1d3 annotate: abort early if no file is specified
Yuya Nishihara <yuya@tcha.org>
parents: 22248
diff changeset
280
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
281 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
282 # --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
283 # 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
284 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
285
24421
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
286 ctx = scmutil.revsingle(repo, opts.get('rev'))
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
287
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
288 fm = ui.formatter('annotate', opts)
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
289 if ui.quiet:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
290 datefunc = util.shortdate
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
291 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
292 datefunc = util.datestr
24421
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
293 if ctx.rev() is None:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
294 def hexfn(node):
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
295 if node is None:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
296 return None
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
297 else:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
298 return fm.hexfunc(node)
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
299 if opts.get('changeset'):
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
300 # omit "+" suffix which is appended to node hex
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
301 def formatrev(rev):
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
302 if rev is None:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
303 return '%d' % ctx.p1().rev()
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
304 else:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
305 return '%d' % rev
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
306 else:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
307 def formatrev(rev):
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
308 if rev is None:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
309 return '%d+' % ctx.p1().rev()
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
310 else:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
311 return '%d ' % rev
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
312 def formathex(hex):
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
313 if hex is None:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
314 return '%s+' % fm.hexfunc(ctx.p1().node())
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
315 else:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
316 return '%s ' % hex
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
317 else:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
318 hexfn = fm.hexfunc
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
319 formatrev = formathex = str
15631
e5fd140a4e69 annotate: show full changeset hash when invoked with --debug and -c
Ion Savin <comp_@gmx.net>
parents: 15623
diff changeset
320
22479
5d9e46d93c1d annotate: split functions to get data without applying text formatting
Yuya Nishihara <yuya@tcha.org>
parents: 22478
diff changeset
321 opmap = [('user', ' ', lambda x: x[0].user(), ui.shortuser),
24421
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
322 ('number', ' ', lambda x: x[0].rev(), formatrev),
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
323 ('changeset', ' ', lambda x: hexfn(x[0].node()), formathex),
22479
5d9e46d93c1d annotate: split functions to get data without applying text formatting
Yuya Nishihara <yuya@tcha.org>
parents: 22478
diff changeset
324 ('date', ' ', lambda x: x[0].date(), util.cachefunc(datefunc)),
5d9e46d93c1d annotate: split functions to get data without applying text formatting
Yuya Nishihara <yuya@tcha.org>
parents: 22478
diff changeset
325 ('file', ' ', lambda x: x[0].path(), str),
5d9e46d93c1d annotate: split functions to get data without applying text formatting
Yuya Nishihara <yuya@tcha.org>
parents: 22478
diff changeset
326 ('line_number', ':', lambda x: x[1], str),
4857
2192001e4bb4 Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4849
diff changeset
327 ]
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
328 fieldnamemap = {'number': 'rev', 'changeset': 'node'}
4857
2192001e4bb4 Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4849
diff changeset
329
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10270
diff changeset
330 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
331 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
332 opts['number'] = True
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
333
4857
2192001e4bb4 Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4849
diff changeset
334 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
335 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
336 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
337
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
338 if fm:
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
339 def makefunc(get, fmt):
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
340 return get
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
341 else:
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
342 def makefunc(get, fmt):
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
343 return lambda x: fmt(get(x))
22479
5d9e46d93c1d annotate: split functions to get data without applying text formatting
Yuya Nishihara <yuya@tcha.org>
parents: 22478
diff changeset
344 funcmap = [(makefunc(get, fmt), sep) for op, sep, get, fmt in opmap
5d9e46d93c1d annotate: split functions to get data without applying text formatting
Yuya Nishihara <yuya@tcha.org>
parents: 22478
diff changeset
345 if opts.get(op)]
14358
bf93e78f2638 annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14331
diff changeset
346 funcmap[0] = (funcmap[0][0], '') # no separator in front of first column
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
347 fields = ' '.join(fieldnamemap.get(op, op) for op, sep, get, fmt in opmap
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
348 if opts.get(op))
4857
2192001e4bb4 Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4849
diff changeset
349
13697
eaee75036725 annotate: catch nonexistent files using match.bad callback (issue1590)
Matt Mackall <mpm@selenic.com>
parents: 13694
diff changeset
350 def bad(x, y):
eaee75036725 annotate: catch nonexistent files using match.bad callback (issue1590)
Matt Mackall <mpm@selenic.com>
parents: 13694
diff changeset
351 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
352
25468
72edd54de935 commands: use the optional badfn argument when building a matcher
Matt Harbison <matt_harbison@yahoo.com>
parents: 25446
diff changeset
353 m = scmutil.match(ctx, pats, opts, badfn=bad)
72edd54de935 commands: use the optional badfn argument when building a matcher
Matt Harbison <matt_harbison@yahoo.com>
parents: 25446
diff changeset
354
10369
98a0421b9e52 commands: annotate follows by default, separate -f/--file option
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10365
diff changeset
355 follow = not opts.get('no_follow')
23455
265034f4e27c annotate: explicitly only honor whitespace diffopts
Siddharth Agarwal <sid0@fb.com>
parents: 23426
diff changeset
356 diffopts = patch.difffeatureopts(ui, opts, section='annotate',
265034f4e27c annotate: explicitly only honor whitespace diffopts
Siddharth Agarwal <sid0@fb.com>
parents: 23426
diff changeset
357 whitespace=True)
6764
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
358 for abs in ctx.walk(m):
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
359 fctx = ctx[abs]
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
360 if not opts.get('text') and util.binary(fctx.data()):
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
361 fm.plain(_("%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
362 continue
836667830fee Teach annotate about binary files
mpm@selenic.com
parents: 1015
diff changeset
363
15528
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
364 lines = fctx.annotate(follow=follow, linenumber=linenumber,
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
365 diffopts=diffopts)
22477
3c8ae79eacb0 annotate: build format string separately from annotation data
Yuya Nishihara <yuya@tcha.org>
parents: 22452
diff changeset
366 formats = []
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
367 pieces = []
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
368
14358
bf93e78f2638 annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14331
diff changeset
369 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
370 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
371 if l:
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
372 if fm:
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
373 formats.append(['%s' for x in l])
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
374 else:
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
375 sizes = [encoding.colwidth(x) for x in l]
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
376 ml = max(sizes)
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
377 formats.append([sep + ' ' * (ml - w) + '%s' for w in sizes])
22477
3c8ae79eacb0 annotate: build format string separately from annotation data
Yuya Nishihara <yuya@tcha.org>
parents: 22452
diff changeset
378 pieces.append(l)
3c8ae79eacb0 annotate: build format string separately from annotation data
Yuya Nishihara <yuya@tcha.org>
parents: 22452
diff changeset
379
3c8ae79eacb0 annotate: build format string separately from annotation data
Yuya Nishihara <yuya@tcha.org>
parents: 22452
diff changeset
380 for f, p, l in zip(zip(*formats), zip(*pieces), lines):
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
381 fm.startitem()
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
382 fm.write(fields, "".join(f), *p)
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
383 fm.write('line', ": %s", l[1])
22452
75e166b82c7a annotate: remove redundant check for empty list of annotation data
Yuya Nishihara <yuya@tcha.org>
parents: 22433
diff changeset
384
75e166b82c7a annotate: remove redundant check for empty list of annotation data
Yuya Nishihara <yuya@tcha.org>
parents: 22433
diff changeset
385 if lines and not lines[-1][1].endswith('\n'):
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
386 fm.plain('\n')
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
387
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
388 fm.end()
15829
2c480532f36e annotate: append newline after non newline-terminated file listings
Ion Savin <ion.savin@tora.com>
parents: 15780
diff changeset
389
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
390 @command('archive',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
391 [('', '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
392 ('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
393 _('PREFIX')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
394 ('r', 'rev', '', _('revision to distribute'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
395 ('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
396 ] + subrepoopts + walkopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
397 _('[OPTION]... DEST'))
2112
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
398 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
399 '''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
400
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
401 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
402 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
403
10650
9ea7238ad935 archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents: 10649
diff changeset
404 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
405 extension (or override using -t/--type).
9ea7238ad935 archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents: 10649
diff changeset
406
15109
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
407 .. container:: verbose
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
408
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
409 Examples:
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
410
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
411 - create a zip file containing the 1.0 release::
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
412
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
413 hg archive -r 1.0 project-1.0.zip
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
414
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
415 - create a tarball excluding .hg files::
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
416
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
417 hg archive project.tar.gz -X ".hg*"
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
418
10650
9ea7238ad935 archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents: 10649
diff changeset
419 Valid types are:
9892
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
420
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
421 :``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
422 :``tar``: tar archive, uncompressed
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
423 :``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
424 :``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
425 :``uzip``: zip archive, uncompressed
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
426 :``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
427
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
428 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
429 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
430
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
431 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
432 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
433 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
434 removed.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
435
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
436 Returns 0 on success.
2112
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
437 '''
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
438
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
439 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
440 if not ctx:
7528
eadcc075967e archive: fix bogus error message with no working directory
Matt Mackall <mpm@selenic.com>
parents: 7527
diff changeset
441 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
442 node = ctx.node()
14290
86e70956da4f cmdutil: make_filename -> makefilename
Matt Mackall <mpm@selenic.com>
parents: 14289
diff changeset
443 dest = cmdutil.makefilename(repo, dest, node)
15381
c519cd8f0169 backout dbdb777502dc (issue3077) (issue3071)
Matt Mackall <mpm@selenic.com>
parents: 15373
diff changeset
444 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
445 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
446
11557
57bdc2239535 archival: move commands.archive.guess_type to archival.guesskind
Martin Geisler <mg@lazybytes.net>
parents: 11551
diff changeset
447 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
448 prefix = opts.get('prefix')
10650
9ea7238ad935 archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents: 10649
diff changeset
449
2476
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
450 if dest == '-':
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
451 if kind == 'files':
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
452 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
453 dest = cmdutil.makefileobj(repo, dest)
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10270
diff changeset
454 if not prefix:
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10270
diff changeset
455 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
456
14290
86e70956da4f cmdutil: make_filename -> makefilename
Matt Mackall <mpm@selenic.com>
parents: 14289
diff changeset
457 prefix = cmdutil.makefilename(repo, prefix, node)
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
458 matchfn = scmutil.match(ctx, [], opts)
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
459 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
460 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
461
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
462 @command('backout',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
463 [('', 'merge', None, _('merge with old dirstate parent after backout')),
23615
7cfe58983bff backout: add --commit option
Mateusz Kwapich <mitrandir@fb.com>
parents: 23547
diff changeset
464 ('', 'commit', None, _('commit if no conflicts were encountered')),
15211
1209de02034e backout: deprecate/hide support for backing out merges
Matt Mackall <mpm@selenic.com>
parents: 15210
diff changeset
465 ('', 'parent', '',
1209de02034e backout: deprecate/hide support for backing out merges
Matt Mackall <mpm@selenic.com>
parents: 15210
diff changeset
466 _('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
467 ('r', 'rev', '', _('revision to backout'), _('REV')),
21712
51035af2c0bf backout: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21689
diff changeset
468 ('e', 'edit', False, _('invoke editor on commit messages')),
14852
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
469 ] + mergetoolopts + walkopts + commitopts + commitopts2,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
470 _('[OPTION]... [-r] REV'))
23615
7cfe58983bff backout: add --commit option
Mateusz Kwapich <mitrandir@fb.com>
parents: 23547
diff changeset
471 def backout(ui, repo, node=None, rev=None, commit=False, **opts):
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
472 '''reverse effect of earlier changeset
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
473
13340
02aa06a021a0 backout: make help more explicit about what backout does
Jonathan Nieder <jrnieder@gmail.com>
parents: 13328
diff changeset
474 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
475 current working directory.
02aa06a021a0 backout: make help more explicit about what backout does
Jonathan Nieder <jrnieder@gmail.com>
parents: 13328
diff changeset
476
13473
bbdd858e3229 backout: clarify which changesets are new in help text
Jonathan Nieder <jrnieder@gmail.com>
parents: 13472
diff changeset
477 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
478 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
479 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
480
15210
9d8115c5fbda backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents: 15209
diff changeset
481 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
482
15210
9d8115c5fbda backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents: 15209
diff changeset
483 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
484 incorrect merge.
9d8115c5fbda backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents: 15209
diff changeset
485
15209
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
486 .. container:: verbose
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
487
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
488 By default, the pending changeset will have one parent,
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
489 maintaining a linear history. With --merge, the pending
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
490 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
491 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
492
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
493 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
494 to specifying --merge followed by :hg:`update --clean .` to
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
495 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
496 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
497
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
498 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
499
20872
3f83fc5cfe71 backout: correct commit status of no changes made (BC) (issue4190)
Yuya Nishihara <yuya@tcha.org>
parents: 20871
diff changeset
500 Returns 0 on success, 1 if nothing to backout or there are unresolved
3f83fc5cfe71 backout: correct commit status of no changes made (BC) (issue4190)
Yuya Nishihara <yuya@tcha.org>
parents: 20871
diff changeset
501 files.
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
502 '''
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
503 if rev and node:
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
504 raise util.Abort(_("please specify just one revision"))
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
505
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
506 if not rev:
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
507 rev = node
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
508
4726
f6e961c0155b Fix and test 'hg backout' without or with too many revisions.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4718
diff changeset
509 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
510 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
511
6139
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
512 date = opts.get('date')
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
513 if date:
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
514 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
515
19476
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
516 cmdutil.checkunfinished(repo)
14289
d68ddccf276b cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents: 14286
diff changeset
517 cmdutil.bailifchanged(repo)
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
518 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
519
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
520 op1, op2 = repo.dirstate.parents()
22381
392ae5cb8d62 revlog: introduce isancestor method for efficiently determining node lineage
Mads Kiilerich <madski@unity3d.com>
parents: 22367
diff changeset
521 if not repo.changelog.isancestor(node, op1):
20791
8dd867bd67e1 backout: improve confusing 'cannot backout change on a different branch' abort
Mads Kiilerich <madski@unity3d.com>
parents: 20790
diff changeset
522 raise util.Abort(_('cannot backout change that is not an ancestor'))
5568
de620356064f backout: disallow across branches (issue655)
Matt Mackall <mpm@selenic.com>
parents: 5542
diff changeset
523
2614
8ba1c31f6864 backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2613
diff changeset
524 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
525 if p1 == nullid:
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
526 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
527 if p2 != nullid:
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
528 if not opts.get('parent'):
15211
1209de02034e backout: deprecate/hide support for backing out merges
Matt Mackall <mpm@selenic.com>
parents: 15210
diff changeset
529 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
530 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
531 if p not in (p1, p2):
3679
2956948b81f3 fix warnings generated by pygettext.py.
Marcos Chaves <marcos.nospam@gmail.com>
parents: 3673
diff changeset
532 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
533 (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
534 parent = p
8ba1c31f6864 backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2613
diff changeset
535 else:
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
536 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
537 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
538 parent = p1
5568
de620356064f backout: disallow across branches (issue655)
Matt Mackall <mpm@selenic.com>
parents: 5542
diff changeset
539
6423
fb374b1b3911 backout: reverse changeset belongs on current branch
Matt Mackall <mpm@selenic.com>
parents: 6385
diff changeset
540 # 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
541 wlock = repo.wlock()
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
542 try:
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
543 branch = repo.dirstate.branch()
18689
12721a20ed30 backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents: 18688
diff changeset
544 bheads = repo.branchheads(branch)
18685
fafdff7e9c43 backout: use cmdutil.revert directly instead of commands.revert
Kevin Bullock <kbullock@ringworld.org>
parents: 18658
diff changeset
545 rctx = scmutil.revsingle(repo, hex(parent))
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
546 if not opts.get('merge') and op1 != node:
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
547 try:
20790
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
548 ui.setconfig('ui', 'forcemerge', opts.get('tool', ''),
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
549 'backout')
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
550 repo.dirstate.beginparentchange()
20276
6545770bd379 backout: add a message after backout that need manual commit
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20275
diff changeset
551 stats = mergemod.update(repo, parent, True, True, False,
6545770bd379 backout: add a message after backout that need manual commit
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20275
diff changeset
552 node, False)
20275
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
553 repo.setparents(op1, op2)
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
554 repo.dirstate.endparentchange()
20275
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
555 hg._showstats(repo, stats)
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
556 if stats[3]:
20276
6545770bd379 backout: add a message after backout that need manual commit
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20275
diff changeset
557 repo.ui.status(_("use 'hg resolve' to retry unresolved "
6545770bd379 backout: add a message after backout that need manual commit
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20275
diff changeset
558 "file merges\n"))
23615
7cfe58983bff backout: add --commit option
Mateusz Kwapich <mitrandir@fb.com>
parents: 23547
diff changeset
559 return 1
7cfe58983bff backout: add --commit option
Mateusz Kwapich <mitrandir@fb.com>
parents: 23547
diff changeset
560 elif not commit:
20276
6545770bd379 backout: add a message after backout that need manual commit
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20275
diff changeset
561 msg = _("changeset %s backed out, "
6545770bd379 backout: add a message after backout that need manual commit
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20275
diff changeset
562 "don't forget to commit.\n")
6545770bd379 backout: add a message after backout that need manual commit
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20275
diff changeset
563 ui.status(msg % short(node))
23615
7cfe58983bff backout: add --commit option
Mateusz Kwapich <mitrandir@fb.com>
parents: 23547
diff changeset
564 return 0
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
565 finally:
20790
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
566 ui.setconfig('ui', 'forcemerge', '', '')
20275
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
567 else:
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
568 hg.clean(repo, node, show_stats=False)
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
569 repo.dirstate.setbranch(branch)
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
570 cmdutil.revert(ui, repo, rctx, repo.dirstate.parents())
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
571
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
572
18689
12721a20ed30 backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents: 18688
diff changeset
573 def commitfunc(ui, repo, message, match, opts):
22007
a5bb0c4001ae backout: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21986
diff changeset
574 editform = 'backout'
a5bb0c4001ae backout: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21986
diff changeset
575 e = cmdutil.getcommiteditor(editform=editform, **opts)
21412
6f6ccb0bb6af backout: avoid redundant message examination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21404
diff changeset
576 if not message:
6f6ccb0bb6af backout: avoid redundant message examination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21404
diff changeset
577 # we don't translate commit messages
6f6ccb0bb6af backout: avoid redundant message examination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21404
diff changeset
578 message = "Backed out changeset %s" % short(node)
22007
a5bb0c4001ae backout: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21986
diff changeset
579 e = cmdutil.getcommiteditor(edit=True, editform=editform)
18689
12721a20ed30 backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents: 18688
diff changeset
580 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
581 match, editor=e)
12721a20ed30 backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents: 18688
diff changeset
582 newnode = cmdutil.commit(ui, repo, commitfunc, [], opts)
20872
3f83fc5cfe71 backout: correct commit status of no changes made (BC) (issue4190)
Yuya Nishihara <yuya@tcha.org>
parents: 20871
diff changeset
583 if not newnode:
3f83fc5cfe71 backout: correct commit status of no changes made (BC) (issue4190)
Yuya Nishihara <yuya@tcha.org>
parents: 20871
diff changeset
584 ui.status(_("nothing changed\n"))
3f83fc5cfe71 backout: correct commit status of no changes made (BC) (issue4190)
Yuya Nishihara <yuya@tcha.org>
parents: 20871
diff changeset
585 return 1
18689
12721a20ed30 backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents: 18688
diff changeset
586 cmdutil.commitstatus(repo, newnode, branch, bheads)
18687
1d183b33f007 backout: remove unnecessary dict copy
Kevin Bullock <kbullock@ringworld.org>
parents: 18686
diff changeset
587
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
588 def nice(node):
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
589 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
590 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
591 (nice(repo.changelog.tip()), nice(node)))
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
592 if opts.get('merge') and op1 != node:
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
593 hg.clean(repo, op1, show_stats=False)
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
594 ui.status(_('merging with changeset %s\n')
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
595 % nice(repo.changelog.tip()))
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
596 try:
20790
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
597 ui.setconfig('ui', 'forcemerge', opts.get('tool', ''),
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
598 'backout')
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
599 return hg.merge(repo, hex(repo.changelog.tip()))
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
600 finally:
20790
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
601 ui.setconfig('ui', 'forcemerge', '', '')
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
602 finally:
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
603 wlock.release()
12727
52971985be14 backout: provide linear backout as a default (without --merge option)
Gilles Moris <gilles.moris@free.fr>
parents: 12726
diff changeset
604 return 0
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
605
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
606 @command('bisect',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
607 [('r', 'reset', False, _('reset bisect state')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
608 ('g', 'good', False, _('mark changeset good')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
609 ('b', 'bad', False, _('mark changeset bad')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
610 ('s', 'skip', False, _('skip testing changeset')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
611 ('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
612 ('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
613 ('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
614 _("[-gbsr] [-U] [-c CMD] [REV]"))
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
615 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
616 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
617 noupdate=None):
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
618 """subdivision search of changesets
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
619
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
620 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
621 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
622 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
623 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
624 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
625 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
626 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
627 or announce that it has found the bad revision.
7184
380fda3eed13 clean up trailing spaces
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 7037
diff changeset
628
6928
1a4c66d741a2 bisect: expand help text to explain REV argument and --noupdate
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6858
diff changeset
629 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
630 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
631
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
632 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
633 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
634 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
635 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
636 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
637 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
638 is bad.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
639
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
640 .. 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
641
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
642 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
643
20151
734ff413eb7e help: fix backwards bisect help example
Santiago Pay=C3=A0 i Miralta <santiagopim@gmail.com>
parents: 20146
diff changeset
644 - start a bisection with known bad revision 34, and good revision 12::
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
645
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
646 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
647 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
648
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
649 - 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
650 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
651
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
652 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
653 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
654
17424
e7cfe3587ea4 fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents: 17393
diff changeset
655 - 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
656 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
657
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
658 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
659 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
660
19958
25b02c6f73a6 doc: end line preceding command line example with double colon
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19941
diff changeset
661 - skip all revisions that do not touch directories ``foo`` or ``bar``::
17969
6c67deb3d373 bisect: add example for limiting bisection to specified directories
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 17956
diff changeset
662
19959
9ef92384415c doc: use double quotation mark to quote arguments in examples for Windows users
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19958
diff changeset
663 hg bisect --skip "!( file('path:foo') & file('path:bar') )"
17969
6c67deb3d373 bisect: add example for limiting bisection to specified directories
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 17956
diff changeset
664
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
665 - 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
666
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
667 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
668
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
669 - 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
670 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
671
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
672 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
673 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
674 hg bisect --good 12
19959
9ef92384415c doc: use double quotation mark to quote arguments in examples for Windows users
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19958
diff changeset
675 hg bisect --command "make && make tests"
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
676
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
677 - 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
678 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
679
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
680 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
681
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
682 - 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
683 if running with -U/--noupdate)::
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
684
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
685 hg log -r "bisect(current)"
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
686
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
687 - 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
688
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
689 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
690
20146
aa192af94321 bisect: don't mention obsolete graphlog extension in help
Martin Geisler <martin@geisler.net>
parents: 20107
diff changeset
691 - you can even get a nice graph::
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
692
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
693 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
694
15147
395ca8cd2669 revset.bisect: add 'ignored' set to the bisect keyword
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 15145
diff changeset
695 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
696
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
697 Returns 0 on success.
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
698 """
13601
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
699 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
700 # 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
701 # 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
702 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
703 if len(parents) > 1:
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
704 if good:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
705 side = state['bad']
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
706 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
707 side = state['good']
13601
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
708 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
709 if num == 1:
14157
a8f136f430da bisect: fix indent level
Yuya Nishihara <yuya@tcha.org>
parents: 14144
diff changeset
710 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
711 return None
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
712
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
713 def print_result(nodes, good):
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
714 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
715 if len(nodes) == 1:
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
716 # 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
717 if good:
bdeb380a10de commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents: 8042
diff changeset
718 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
719 else:
bdeb380a10de commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents: 8042
diff changeset
720 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
721 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
722 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
723 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
724 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
725 ' 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
726 '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
727 % extendnode)
6858
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
728 else:
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
729 # multiple possible revisions
8088
bdeb380a10de commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents: 8042
diff changeset
730 if good:
bdeb380a10de commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents: 8042
diff changeset
731 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
732 "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
733 else:
bdeb380a10de commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents: 8042
diff changeset
734 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
735 "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
736 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
737 displayer.show(repo[n])
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
738 displayer.close()
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
739
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
740 def check_state(state, interactive=True):
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
741 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
742 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
743 return
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
744 if not state['good']:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
745 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
746 else:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
747 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
748 return True
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
749
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
750 # backward compatibility
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
751 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
752 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
753 cmd, rev, extra = rev, extra, None
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
754 if cmd == "good":
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
755 good = True
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
756 elif cmd == "bad":
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
757 bad = True
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
758 else:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
759 reset = True
13601
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
760 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
761 raise util.Abort(_('incompatible arguments'))
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
762
19476
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
763 cmdutil.checkunfinished(repo)
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
764
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
765 if reset:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
766 p = repo.join("bisect.state")
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
767 if os.path.exists(p):
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
768 os.unlink(p)
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
769 return
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
770
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
771 state = hbisect.load_state(repo)
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
772
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
773 if command:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
774 changesets = 1
20237
0d32dd60016c bisect: --command without --noupdate should flag the parent rev it tested
Mads Kiilerich <madski@unity3d.com>
parents: 20235
diff changeset
775 if noupdate:
0d32dd60016c bisect: --command without --noupdate should flag the parent rev it tested
Mads Kiilerich <madski@unity3d.com>
parents: 20235
diff changeset
776 try:
0d32dd60016c bisect: --command without --noupdate should flag the parent rev it tested
Mads Kiilerich <madski@unity3d.com>
parents: 20235
diff changeset
777 node = state['current'][0]
0d32dd60016c bisect: --command without --noupdate should flag the parent rev it tested
Mads Kiilerich <madski@unity3d.com>
parents: 20235
diff changeset
778 except LookupError:
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
779 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
780 'start a new bisect to fix'))
20237
0d32dd60016c bisect: --command without --noupdate should flag the parent rev it tested
Mads Kiilerich <madski@unity3d.com>
parents: 20235
diff changeset
781 else:
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
782 node, p2 = repo.dirstate.parents()
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
783 if p2 != nullid:
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
784 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
785 try:
7590
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
786 while changesets:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
787 # update state
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
788 state['current'] = [node]
16593
e462313ef1bd bisect: save current state before running a command
Bryan O'Sullivan <bryano@fb.com>
parents: 16591
diff changeset
789 hbisect.save_state(repo, state)
23270
41c03b7592ed util.system: use ui.system() in place of optional ui.fout parameter
Yuya Nishihara <yuya@tcha.org>
parents: 23254
diff changeset
790 status = ui.system(command, environ={'HG_NODE': hex(node)})
7590
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
791 if status == 125:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
792 transition = "skip"
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
793 elif status == 0:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
794 transition = "good"
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
795 # 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
796 elif status == 127:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
797 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
798 elif status < 0:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
799 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
800 else:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
801 transition = "bad"
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
802 ctx = scmutil.revsingle(repo, rev, node)
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
803 rev = None # clear for future iterations
8805
2726a6df11e9 bisect: improve --command output
Patrick Mezard <pmezard@gmail.com>
parents: 8802
diff changeset
804 state[transition].append(ctx.node())
16936
ee7dd2307031 bisect: lowercase status message
Martin Geisler <mg@aragost.com>
parents: 16935
diff changeset
805 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
806 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
807 # bisect
20052
79d3b6a45351 bisect: avoid confusing use of variables with same names in nested local scopes
Mads Kiilerich <madski@unity3d.com>
parents: 20035
diff changeset
808 nodes, changesets, bgood = hbisect.bisect(repo.changelog, state)
7590
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
809 # update to next check
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
810 node = nodes[0]
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
811 if not noupdate:
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
812 cmdutil.bailifchanged(repo)
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
813 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
814 finally:
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
815 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
816 hbisect.save_state(repo, state)
20052
79d3b6a45351 bisect: avoid confusing use of variables with same names in nested local scopes
Mads Kiilerich <madski@unity3d.com>
parents: 20035
diff changeset
817 print_result(nodes, bgood)
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
818 return
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
819
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
820 # update state
12177
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
821
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
822 if rev:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
823 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
824 else:
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
825 nodes = [repo.lookup('.')]
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
826
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
827 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
828 if good:
12177
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
829 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
830 elif bad:
12177
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
831 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
832 elif skip:
12177
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
833 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
834 hbisect.save_state(repo, state)
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
835
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
836 if not check_state(state):
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
837 return
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
838
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
839 # actually bisect
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
840 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
841 if extend:
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
842 if not changesets:
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
843 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
844 if extendnode is not None:
20868
5db105f216c3 i18n: fix "% inside _()" problems
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20772
diff changeset
845 ui.write(_("Extending search to changeset %d:%s\n")
5db105f216c3 i18n: fix "% inside _()" problems
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20772
diff changeset
846 % (extendnode.rev(), extendnode))
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
847 state['current'] = [extendnode.node()]
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
848 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
849 if noupdate:
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
850 return
14289
d68ddccf276b cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents: 14286
diff changeset
851 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
852 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
853 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
854
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
855 if changesets == 0:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
856 print_result(nodes, good)
6858
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
857 else:
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
858 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
859 node = nodes[0]
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
860 # compute the approximate number of remaining tests
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
861 tests, size = 0, 2
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
862 while size <= changesets:
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
863 tests, size = tests + 1, size * 2
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
864 rev = repo.changelog.rev(node)
9012
ada93c6bf554 bisect: fix format specifiers for integers
Cédric Duval <cedricduval@free.fr>
parents: 8995
diff changeset
865 ui.write(_("Testing changeset %d:%s "
ada93c6bf554 bisect: fix format specifiers for integers
Cédric Duval <cedricduval@free.fr>
parents: 8995
diff changeset
866 "(%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
867 % (rev, short(node), changesets, tests))
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
868 state['current'] = [node]
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
869 hbisect.save_state(repo, state)
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
870 if not noupdate:
14289
d68ddccf276b cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents: 14286
diff changeset
871 cmdutil.bailifchanged(repo)
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
872 return hg.clean(repo, node)
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
873
18075
2c1fc483efa4 commands: 'hg bookmark NAME' should work even with ui.strict=True
Kevin Bullock <kbullock@ringworld.org>
parents: 18068
diff changeset
874 @command('bookmarks|bookmark',
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
875 [('f', 'force', False, _('force')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
876 ('r', 'rev', '', _('revision'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
877 ('d', 'delete', False, _('delete a given bookmark')),
26190
29d29a82263f bookmark: improve ambiguous documentation for rename
timeless@mozdev.org
parents: 26159
diff changeset
878 ('m', 'rename', '', _('rename a given bookmark'), _('OLD')),
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
879 ('i', 'inactive', False, _('mark a bookmark inactive')),
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
880 ] + formatteropts,
19147
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
881 _('hg bookmarks [OPTIONS]... [NAME]...'))
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
882 def bookmark(ui, repo, *names, **opts):
21762
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
883 '''create a new bookmark or list existing bookmarks
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
884
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
885 Bookmarks are labels on changesets to help track lines of development.
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
886 Bookmarks are unversioned and can be moved, renamed and deleted.
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
887 Deleting or moving a bookmark has no effect on the associated changesets.
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
888
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
889 Creating or updating to a bookmark causes it to be marked as 'active'.
22314
6a8b8efb0641 bookmarks: refer to "the" active bookmark to clarify that there's only one
Kevin Bullock <kbullock@ringworld.org>
parents: 22302
diff changeset
890 The active bookmark is indicated with a '*'.
6a8b8efb0641 bookmarks: refer to "the" active bookmark to clarify that there's only one
Kevin Bullock <kbullock@ringworld.org>
parents: 22302
diff changeset
891 When a commit is made, the active bookmark will advance to the new commit.
21762
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
892 A plain :hg:`update` will also advance an active bookmark, if possible.
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
893 Updating away from a bookmark will cause it to be deactivated.
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
894
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
895 Bookmarks can be pushed and pulled between repositories (see
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
896 :hg:`help push` and :hg:`help pull`). If a shared bookmark has
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
897 diverged, a new 'divergent bookmark' of the form 'name@path' will
23114
0b7853f969ac help: use ":hg:`command`" instead of incorrect ":hg:'command'" notation
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23108
diff changeset
898 be created. Using :hg:`merge` will resolve the divergence.
21762
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
899
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
900 A bookmark named '@' has the special property that :hg:`clone` will
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
901 check it out by default if it exists.
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
902
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
903 .. container:: verbose
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
904
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
905 Examples:
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
906
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
907 - create an active bookmark for a new line of development::
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
908
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
909 hg book new-feature
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
910
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
911 - create an inactive bookmark as a place marker::
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
912
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
913 hg book -i reviewed
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
914
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
915 - create an inactive bookmark on another changeset::
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
916
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
917 hg book -r .^ tested
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
918
26190
29d29a82263f bookmark: improve ambiguous documentation for rename
timeless@mozdev.org
parents: 26159
diff changeset
919 - rename bookmark turkey to dinner::
29d29a82263f bookmark: improve ambiguous documentation for rename
timeless@mozdev.org
parents: 26159
diff changeset
920
29d29a82263f bookmark: improve ambiguous documentation for rename
timeless@mozdev.org
parents: 26159
diff changeset
921 hg book -m turkey dinner
29d29a82263f bookmark: improve ambiguous documentation for rename
timeless@mozdev.org
parents: 26159
diff changeset
922
21762
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
923 - move the '@' bookmark from another branch::
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
924
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
925 hg book -f @
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
926 '''
19147
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
927 force = opts.get('force')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
928 rev = opts.get('rev')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
929 delete = opts.get('delete')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
930 rename = opts.get('rename')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
931 inactive = opts.get('inactive')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
932
17789
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
933 def checkformat(mark):
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
934 mark = mark.strip()
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
935 if not mark:
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
936 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
937 "whitespace"))
17821
361ab1e2086f scmutil: add bad character checking to checknewlabel
Kevin Bullock <kbullock@ringworld.org>
parents: 17818
diff changeset
938 scmutil.checknewlabel(repo, mark, 'bookmark')
17789
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
939 return mark
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
940
20233
410193f11422 commands.bookmarks: pass cur in explicitly to checkconflict
Siddharth Agarwal <sid0@fb.com>
parents: 20232
diff changeset
941 def checkconflict(repo, mark, cur, force=False, target=None):
17789
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
942 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
943 if target:
18781
99b78269a2ec bookmarks: allow (re-)activating a bookmark on the current changeset
Kevin Bullock <kbullock@ringworld.org>
parents: 18773
diff changeset
944 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
945 # re-activating a bookmark
99b78269a2ec bookmarks: allow (re-)activating a bookmark on the current changeset
Kevin Bullock <kbullock@ringworld.org>
parents: 18773
diff changeset
946 return
18773
56dd55da2f7d bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents: 18746
diff changeset
947 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
948 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
949 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
950 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
951
6439d78e14fb bookmarks: resolve divergent bookmark when moving across a branch
Sean Farley <sean.michael.farley@gmail.com>
parents: 19109
diff changeset
952 # 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
953 # 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
954 # 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
955 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
956 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
957 return
6439d78e14fb bookmarks: resolve divergent bookmark when moving across a branch
Sean Farley <sean.michael.farley@gmail.com>
parents: 19109
diff changeset
958
19109
26c51e87e807 bookmarks: resolve divergent bookmarks when fowarding bookmark to descendant
Sean Farley <sean.michael.farley@gmail.com>
parents: 19026
diff changeset
959 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
960 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
961 bookmarks.deletedivergent(repo, deletefrom, mark)
20282
2cfb720592fe commands: use bookmarks.validdest instead of duplicating logic
Sean Farley <sean.michael.farley@gmail.com>
parents: 20276
diff changeset
962 if bookmarks.validdest(repo, bmctx, repo[target]):
18773
56dd55da2f7d bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents: 18746
diff changeset
963 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
964 (mark, short(bmctx.node())))
56dd55da2f7d bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents: 18746
diff changeset
965 return
17789
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
966 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
967 "(use -f to force)") % mark)
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
968 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
969 and not force):
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
970 raise util.Abort(
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
971 _("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
972
17790
0291e122fb05 bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents: 17789
diff changeset
973 if delete and rename:
0291e122fb05 bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents: 17789
diff changeset
974 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
975 if delete and rev:
0291e122fb05 bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents: 17789
diff changeset
976 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
977 if rename and rev:
0291e122fb05 bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents: 17789
diff changeset
978 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
979 if not names and (delete or rev):
17791
1e30c1bbd8c0 bookmarks: simplify code
Kevin Bullock <kbullock@ringworld.org>
parents: 17790
diff changeset
980 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
981
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
982 if delete or rename or names or inactive:
25744
e78a80f8f51e bookmarks: change bookmark within a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25735
diff changeset
983 wlock = lock = tr = None
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
984 try:
25744
e78a80f8f51e bookmarks: change bookmark within a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25735
diff changeset
985 wlock = repo.wlock()
e78a80f8f51e bookmarks: change bookmark within a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25735
diff changeset
986 lock = repo.lock()
20234
8a133190da89 commands.bookmarks: move cur initialization to inside wlock
Siddharth Agarwal <sid0@fb.com>
parents: 20233
diff changeset
987 cur = repo.changectx('.').node()
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
988 marks = repo._bookmarks
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
989 if delete:
25744
e78a80f8f51e bookmarks: change bookmark within a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25735
diff changeset
990 tr = repo.transaction('bookmark')
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
991 for mark in names:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
992 if mark not in marks:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
993 raise util.Abort(_("bookmark '%s' does not exist") %
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
994 mark)
24947
a02d293a1079 bookmarks: rename bookmarkcurrent to activebookmark (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24945
diff changeset
995 if mark == repo._activebookmark:
24944
08ec11e3ae4c bookmarks: rename unsetcurrent to deactivate (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24906
diff changeset
996 bookmarks.deactivate(repo)
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
997 del marks[mark]
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
998
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
999 elif rename:
25744
e78a80f8f51e bookmarks: change bookmark within a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25735
diff changeset
1000 tr = repo.transaction('bookmark')
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1001 if not names:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1002 raise util.Abort(_("new bookmark name required"))
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1003 elif len(names) > 1:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1004 raise util.Abort(_("only one new bookmark name allowed"))
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1005 mark = checkformat(names[0])
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1006 if rename not in marks:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1007 raise util.Abort(_("bookmark '%s' does not exist") % rename)
20233
410193f11422 commands.bookmarks: pass cur in explicitly to checkconflict
Siddharth Agarwal <sid0@fb.com>
parents: 20232
diff changeset
1008 checkconflict(repo, mark, cur, force)
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1009 marks[mark] = marks[rename]
24947
a02d293a1079 bookmarks: rename bookmarkcurrent to activebookmark (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24945
diff changeset
1010 if repo._activebookmark == rename and not inactive:
24945
e0b0fbd47491 bookmarks: rename setcurrent to activate (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24944
diff changeset
1011 bookmarks.activate(repo, mark)
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1012 del marks[rename]
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1013 elif names:
25744
e78a80f8f51e bookmarks: change bookmark within a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25735
diff changeset
1014 tr = repo.transaction('bookmark')
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1015 newact = None
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1016 for mark in names:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1017 mark = checkformat(mark)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1018 if newact is None:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1019 newact = mark
24947
a02d293a1079 bookmarks: rename bookmarkcurrent to activebookmark (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24945
diff changeset
1020 if inactive and mark == repo._activebookmark:
24944
08ec11e3ae4c bookmarks: rename unsetcurrent to deactivate (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24906
diff changeset
1021 bookmarks.deactivate(repo)
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1022 return
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1023 tgt = cur
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1024 if rev:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1025 tgt = scmutil.revsingle(repo, rev).node()
20233
410193f11422 commands.bookmarks: pass cur in explicitly to checkconflict
Siddharth Agarwal <sid0@fb.com>
parents: 20232
diff changeset
1026 checkconflict(repo, mark, cur, force, tgt)
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1027 marks[mark] = tgt
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1028 if not inactive and cur == marks[newact] and not rev:
24945
e0b0fbd47491 bookmarks: rename setcurrent to activate (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24944
diff changeset
1029 bookmarks.activate(repo, newact)
24947
a02d293a1079 bookmarks: rename bookmarkcurrent to activebookmark (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24945
diff changeset
1030 elif cur != tgt and newact == repo._activebookmark:
24944
08ec11e3ae4c bookmarks: rename unsetcurrent to deactivate (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24906
diff changeset
1031 bookmarks.deactivate(repo)
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1032 elif inactive:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1033 if len(marks) == 0:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1034 ui.status(_("no bookmarks set\n"))
24947
a02d293a1079 bookmarks: rename bookmarkcurrent to activebookmark (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24945
diff changeset
1035 elif not repo._activebookmark:
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1036 ui.status(_("no active bookmark\n"))
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1037 else:
24944
08ec11e3ae4c bookmarks: rename unsetcurrent to deactivate (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24906
diff changeset
1038 bookmarks.deactivate(repo)
25744
e78a80f8f51e bookmarks: change bookmark within a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25735
diff changeset
1039 if tr is not None:
e78a80f8f51e bookmarks: change bookmark within a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25735
diff changeset
1040 marks.recordchange(tr)
e78a80f8f51e bookmarks: change bookmark within a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25735
diff changeset
1041 tr.close()
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1042 finally:
25744
e78a80f8f51e bookmarks: change bookmark within a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25735
diff changeset
1043 lockmod.release(tr, lock, wlock)
17822
c284085d17a8 bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents: 17821
diff changeset
1044 else: # show bookmarks
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1045 fm = ui.formatter('bookmarks', opts)
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1046 hexfn = fm.hexfunc
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1047 marks = repo._bookmarks
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1048 if len(marks) == 0 and not fm:
20231
1053f5a7bbc6 commands.bookmarks: separate out 'no bookmarks set' status messages
Siddharth Agarwal <sid0@fb.com>
parents: 20227
diff changeset
1049 ui.status(_("no bookmarks set\n"))
22774
b17fd992d606 bookmarks: iterate bookmarks list even if it is known to be empty
Yuya Nishihara <yuya@tcha.org>
parents: 22705
diff changeset
1050 for bmark, n in sorted(marks.iteritems()):
25349
62da2d7745f9 commands: rename current to active in variables and comments
Ryan McElroy <rmcelroy@fb.com>
parents: 25347
diff changeset
1051 active = repo._activebookmark
62da2d7745f9 commands: rename current to active in variables and comments
Ryan McElroy <rmcelroy@fb.com>
parents: 25347
diff changeset
1052 if bmark == active:
25347
ceec79b5657a bookmarks: name label for active bookmark correctly
Ryan McElroy <rmcelroy@fb.com>
parents: 25304
diff changeset
1053 prefix, label = '*', activebookmarklabel
22774
b17fd992d606 bookmarks: iterate bookmarks list even if it is known to be empty
Yuya Nishihara <yuya@tcha.org>
parents: 22705
diff changeset
1054 else:
b17fd992d606 bookmarks: iterate bookmarks list even if it is known to be empty
Yuya Nishihara <yuya@tcha.org>
parents: 22705
diff changeset
1055 prefix, label = ' ', ''
b17fd992d606 bookmarks: iterate bookmarks list even if it is known to be empty
Yuya Nishihara <yuya@tcha.org>
parents: 22705
diff changeset
1056
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1057 fm.startitem()
22775
b59c2c8c45df bookmarks: split ui.write() so that it can be easily ported to formatter api
Yuya Nishihara <yuya@tcha.org>
parents: 22774
diff changeset
1058 if not ui.quiet:
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1059 fm.plain(' %s ' % prefix, label=label)
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1060 fm.write('bookmark', '%s', bmark, label=label)
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1061 pad = " " * (25 - encoding.colwidth(bmark))
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1062 fm.condwrite(not ui.quiet, 'rev node', pad + ' %d:%s',
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1063 repo.changelog.rev(n), hexfn(n), label=label)
25349
62da2d7745f9 commands: rename current to active in variables and comments
Ryan McElroy <rmcelroy@fb.com>
parents: 25347
diff changeset
1064 fm.data(active=(bmark == active))
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1065 fm.plain('\n')
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1066 fm.end()
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
1067
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1068 @command('branch',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1069 [('f', 'force', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1070 _('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
1071 ('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
1072 _('[-fC] [NAME]'))
4202
b2873c587b1a branch: require --force to shadow existing branches
Brendan Cully <brendan@kublai.com>
parents: 4200
diff changeset
1073 def branch(ui, repo, label=None, **opts):
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1074 """set or show the current branch name
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1075
15610
09b200396384 branch: move note about permanence to the top, add 'global'
Matt Mackall <mpm@selenic.com>
parents: 15511
diff changeset
1076 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
1077
15610
09b200396384 branch: move note about permanence to the top, add 'global'
Matt Mackall <mpm@selenic.com>
parents: 15511
diff changeset
1078 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
1079 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
1080 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
1081
4601
e69da61e467e Notify the user that hg branch does not create a branch until commit
Brendan Cully <brendan@kublai.com>
parents: 4593
diff changeset
1082 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
1083 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
1084 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
1085 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
1086 branch.
4202
b2873c587b1a branch: require --force to shadow existing branches
Brendan Cully <brendan@kublai.com>
parents: 4200
diff changeset
1087
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
1088 Unless -f/--force is specified, branch will not let you set a
23620
3d4aa20b775d branches: deprecate -a
Matt Mackall <mpm@selenic.com>
parents: 23615
diff changeset
1089 branch name that already exists.
5999
d1fe1a4eb2b7 Mention 'hg update' to switch branches in help for branch and branches.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 5998
diff changeset
1090
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
1091 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
1092 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
1093 change.
7006
92d44ec32430 branch: added more support for named branches
Sune Foldager <cryo@cyanite.org>
parents: 7003
diff changeset
1094
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
1095 Use the command :hg:`update` to switch to an existing branch. Use
25304
9bc11716bc86 commit: improve --close-branch documentation
Matt Mackall <mpm@selenic.com>
parents: 25295
diff changeset
1096 :hg:`commit --close-branch` to mark this branch head as closed.
9bc11716bc86 commit: improve --close-branch documentation
Matt Mackall <mpm@selenic.com>
parents: 25295
diff changeset
1097 When all heads of the branch are closed, the branch will be
9bc11716bc86 commit: improve --close-branch documentation
Matt Mackall <mpm@selenic.com>
parents: 25295
diff changeset
1098 considered closed.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1099
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1100 Returns 0 on success.
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1101 """
19180
12dbdd348bb0 branch: strip whitespace before testing known branch name
Yuya Nishihara <yuya@tcha.org>
parents: 19112
diff changeset
1102 if label:
12dbdd348bb0 branch: strip whitespace before testing known branch name
Yuya Nishihara <yuya@tcha.org>
parents: 19112
diff changeset
1103 label = label.strip()
12dbdd348bb0 branch: strip whitespace before testing known branch name
Yuya Nishihara <yuya@tcha.org>
parents: 19112
diff changeset
1104
16471
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1105 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
1106 ui.write("%s\n" % repo.dirstate.branch())
16471
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1107 return
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1108
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1109 wlock = repo.wlock()
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1110 try:
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1111 if opts.get('clean'):
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1112 label = repo[None].p1().branch()
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1113 repo.dirstate.setbranch(label)
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1114 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
1115 elif label:
16719
e7bf09acd410 localrepo: add branchtip() method for faster single-branch lookups
Brodie Rao <brodie@sf.io>
parents: 16715
diff changeset
1116 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
1117 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
1118 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
1119 ' exists'),
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1120 # i18n: "it" refers to an existing branch
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1121 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
1122 scmutil.checknewlabel(repo, label, 'branch')
16471
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1123 repo.dirstate.setbranch(label)
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1124 ui.status(_('marked working directory as branch %s\n') % label)
25295
701df761aa94 branch: don't warn about branches if repository has multiple branches already
Matt Mackall <mpm@selenic.com>
parents: 25255
diff changeset
1125
701df761aa94 branch: don't warn about branches if repository has multiple branches already
Matt Mackall <mpm@selenic.com>
parents: 25255
diff changeset
1126 # find any open named branches aside from default
701df761aa94 branch: don't warn about branches if repository has multiple branches already
Matt Mackall <mpm@selenic.com>
parents: 25255
diff changeset
1127 others = [n for n, h, t, c in repo.branchmap().iterbranches()
701df761aa94 branch: don't warn about branches if repository has multiple branches already
Matt Mackall <mpm@selenic.com>
parents: 25255
diff changeset
1128 if n != "default" and not c]
701df761aa94 branch: don't warn about branches if repository has multiple branches already
Matt Mackall <mpm@selenic.com>
parents: 25255
diff changeset
1129 if not others:
701df761aa94 branch: don't warn about branches if repository has multiple branches already
Matt Mackall <mpm@selenic.com>
parents: 25255
diff changeset
1130 ui.status(_('(branches are permanent and global, '
701df761aa94 branch: don't warn about branches if repository has multiple branches already
Matt Mackall <mpm@selenic.com>
parents: 25255
diff changeset
1131 'did you want a bookmark?)\n'))
16471
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1132 finally:
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1133 wlock.release()
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1134
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1135 @command('branches',
23620
3d4aa20b775d branches: deprecate -a
Matt Mackall <mpm@selenic.com>
parents: 23615
diff changeset
1136 [('a', 'active', False,
3d4aa20b775d branches: deprecate -a
Matt Mackall <mpm@selenic.com>
parents: 23615
diff changeset
1137 _('show only branches that have unmerged heads (DEPRECATED)')),
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1138 ('c', 'closed', False, _('show normal and closed branches')),
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1139 ] + formatteropts,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1140 _('[-ac]'))
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1141 def branches(ui, repo, active=False, closed=False, **opts):
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1142 """list repository named branches
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1143
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
1144 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
1145 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
1146 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
1147
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
1148 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
1149
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1150 Returns 0.
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1151 """
8991
7e0b31dfc66f branches: add --closed flag for consistency with heads
Matt Mackall <mpm@selenic.com>
parents: 8958
diff changeset
1152
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1153 fm = ui.formatter('branches', opts)
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1154 hexfunc = fm.hexfunc
16721
3e6d59ae4dc2 branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents: 16720
diff changeset
1155
20182
04036798ebed branches: avoid unnecessary changectx.branch() calls
Brodie Rao <brodie@sf.io>
parents: 20156
diff changeset
1156 allheads = set(repo.heads())
16721
3e6d59ae4dc2 branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents: 16720
diff changeset
1157 branches = []
20192
38fad5e76ee8 branches: simplify with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io>
parents: 20191
diff changeset
1158 for tag, heads, tip, isclosed in repo.branchmap().iterbranches():
38fad5e76ee8 branches: simplify with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io>
parents: 20191
diff changeset
1159 isactive = not isclosed and bool(set(heads) & allheads)
38fad5e76ee8 branches: simplify with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io>
parents: 20191
diff changeset
1160 branches.append((tag, repo[tip], isactive, not isclosed))
20182
04036798ebed branches: avoid unnecessary changectx.branch() calls
Brodie Rao <brodie@sf.io>
parents: 20156
diff changeset
1161 branches.sort(key=lambda i: (i[2], i[1].rev(), i[0], i[3]),
16721
3e6d59ae4dc2 branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents: 16720
diff changeset
1162 reverse=True)
3e6d59ae4dc2 branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents: 16720
diff changeset
1163
20182
04036798ebed branches: avoid unnecessary changectx.branch() calls
Brodie Rao <brodie@sf.io>
parents: 20156
diff changeset
1164 for tag, ctx, isactive, isopen in branches:
22639
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1165 if active and not isactive:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1166 continue
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1167 if isactive:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1168 label = 'branches.active'
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1169 notice = ''
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1170 elif not isopen:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1171 if not closed:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1172 continue
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1173 label = 'branches.closed'
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1174 notice = _(' (closed)')
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1175 else:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1176 label = 'branches.inactive'
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1177 notice = _(' (inactive)')
22705
d4869b280cd6 branches: include active, closed and current flags in template output
Yuya Nishihara <yuya@tcha.org>
parents: 22704
diff changeset
1178 current = (tag == repo.dirstate.branch())
d4869b280cd6 branches: include active, closed and current flags in template output
Yuya Nishihara <yuya@tcha.org>
parents: 22704
diff changeset
1179 if current:
22639
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1180 label = 'branches.current'
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1181
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1182 fm.startitem()
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1183 fm.write('branch', '%s', tag, label=label)
22702
08a4e70ed183 branches: format rev as integer that is necessary for generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22701
diff changeset
1184 rev = ctx.rev()
08a4e70ed183 branches: format rev as integer that is necessary for generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22701
diff changeset
1185 padsize = max(31 - len(str(rev)) - encoding.colwidth(tag), 0)
22704
386339ffe421 branches: merge white space to format string
Yuya Nishihara <yuya@tcha.org>
parents: 22703
diff changeset
1186 fmt = ' ' * padsize + ' %d:%s'
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1187 fm.condwrite(not ui.quiet, 'rev node', fmt, rev, hexfunc(ctx.node()),
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1188 label='log.changeset changeset.%s' % ctx.phasestr())
22705
d4869b280cd6 branches: include active, closed and current flags in template output
Yuya Nishihara <yuya@tcha.org>
parents: 22704
diff changeset
1189 fm.data(active=isactive, closed=not isopen, current=current)
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1190 if not ui.quiet:
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1191 fm.plain(notice)
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1192 fm.plain('\n')
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1193 fm.end()
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1194
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1195 @command('bundle',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1196 [('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
1197 ('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
1198 _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1199 ('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
1200 _('BRANCH')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1201 ('', 'base', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1202 _('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
1203 _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1204 ('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
1205 ('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
1206 ] + remoteopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1207 _('[-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
1208 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
1209 """create a changegroup file
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1210
3511
aa8f086cb141 Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3510
diff changeset
1211 Generate a compressed changegroup file collecting changesets not
7807
bd8f44638847 help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents: 7765
diff changeset
1212 known to be in another repository.
3511
aa8f086cb141 Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3510
diff changeset
1213
10376
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
1214 If you omit the destination repository, then hg assumes the
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
1215 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
1216 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
1217 -a/--all (or --base null).
d403cf4eb32d help: describe bundle compression methods (issue1523)
Henrik Stuart <hg@hstuart.dk>
parents: 8902
diff changeset
1218
8958
8358cf63f612 commands: improve bundle compression methods description
Stefano Mioli <jstevie@gmail.com>
parents: 8955
diff changeset
1219 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
1220 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
1221 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
1222
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
1223 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
1224 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
1225 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
1226 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
1227
aa8f086cb141 Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3510
diff changeset
1228 Applying bundles preserves all changeset contents including
aa8f086cb141 Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3510
diff changeset
1229 permissions, copy/rename information, and revision history.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1230
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1231 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
1232 """
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
1233 revs = None
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
1234 if 'rev' in opts:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
1235 revs = scmutil.revrange(repo, opts['rev'])
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
1236
16427
d54d4de56aa7 commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents: 16389
diff changeset
1237 bundletype = opts.get('type', 'bzip2').lower()
23896
becfecaf9087 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com>
parents: 23895
diff changeset
1238 btypes = {'none': 'HG10UN',
becfecaf9087 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com>
parents: 23895
diff changeset
1239 'bzip2': 'HG10BZ',
becfecaf9087 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com>
parents: 23895
diff changeset
1240 'gzip': 'HG10GZ',
24686
e0e28e910fa3 bundle2: rename format, parts and config to final names
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 24663
diff changeset
1241 'bundle2': 'HG20'}
16427
d54d4de56aa7 commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents: 16389
diff changeset
1242 bundletype = btypes.get(bundletype)
d54d4de56aa7 commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents: 16389
diff changeset
1243 if bundletype not in changegroup.bundletypes:
d54d4de56aa7 commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents: 16389
diff changeset
1244 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
1245
6171
73b1de288801 Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents: 6163
diff changeset
1246 if opts.get('all'):
73b1de288801 Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents: 6163
diff changeset
1247 base = ['null']
73b1de288801 Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents: 6163
diff changeset
1248 else:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
1249 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
1250 # 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
1251 bundlecaps = None
3284
d89e98840b08 add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3278
diff changeset
1252 if base:
d89e98840b08 add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3278
diff changeset
1253 if dest:
8669
6f0f69da003e commands: typo in bundle abort message
Martin Geisler <mg@lazybytes.net>
parents: 8664
diff changeset
1254 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
1255 "a destination"))
14073
72c84f24b420 discovery: drop findoutgoing and simplify findcommonincoming's api
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14064
diff changeset
1256 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
1257 heads = revs and map(repo.lookup, revs) or revs
22390
e2806b8613ca changegroup: rename bundle-related functions and classes
Sune Foldager <cryo@cyanite.org>
parents: 22383
diff changeset
1258 cg = changegroup.getchangegroup(repo, 'bundle', heads=heads,
e2806b8613ca changegroup: rename bundle-related functions and classes
Sune Foldager <cryo@cyanite.org>
parents: 22383
diff changeset
1259 common=common, bundlecaps=bundlecaps)
15993
0b05e0bfdc1c scmutil: unify some 'no changes found' messages
Matt Mackall <mpm@selenic.com>
parents: 15991
diff changeset
1260 outgoing = None
3284
d89e98840b08 add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3278
diff changeset
1261 else:
10365
d757bc0c7865 interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents: 10364
diff changeset
1262 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
1263 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
1264 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
1265 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
1266 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
1267 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
1268 onlyheads=heads,
16736
025b3b763ba9 bundle: make bundles more portable (isue3441)
Sune Foldager <cryo@cyanite.org>
parents: 16637
diff changeset
1269 force=opts.get('force'),
025b3b763ba9 bundle: make bundles more portable (isue3441)
Sune Foldager <cryo@cyanite.org>
parents: 16637
diff changeset
1270 portable=True)
22390
e2806b8613ca changegroup: rename bundle-related functions and classes
Sune Foldager <cryo@cyanite.org>
parents: 22383
diff changeset
1271 cg = changegroup.getlocalchangegroup(repo, 'bundle', outgoing,
e2806b8613ca changegroup: rename bundle-related functions and classes
Sune Foldager <cryo@cyanite.org>
parents: 22383
diff changeset
1272 bundlecaps)
14073
72c84f24b420 discovery: drop findoutgoing and simplify findcommonincoming's api
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14064
diff changeset
1273 if not cg:
17248
6ffb35b2284c discovery: add extinct changesets to outgoing.excluded
Patrick Mezard <patrick@mezard.eu>
parents: 17218
diff changeset
1274 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
1275 return 1
10616
65b178f30eae bundle: fix bundle generation for empty changegroup
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10596
diff changeset
1276
23895
cda18ded2c48 changegroup.writebundle: provide ui
Eric Sumner <ericsumner@fb.com>
parents: 23891
diff changeset
1277 changegroup.writebundle(ui, cg, fname, bundletype)
1218
cde6818e082a Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents: 1215
diff changeset
1278
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1279 @command('cat',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1280 [('o', 'output', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1281 _('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
1282 ('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
1283 ('', '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
1284 ] + walkopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
1285 _('[OPTION]... FILE...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
1286 inferrepo=True)
1254
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
1287 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
1288 """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
1289
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
1290 Print the specified files as they were at the given revision. If
19400
61c93ef8302e cat: remove incorrect reference to tip
Matt Mackall <mpm@selenic.com>
parents: 19394
diff changeset
1291 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
1292
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1293 Output may be to a file, in which case the name of the file is
21078
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1294 given using a format string. The formatting rules as follows:
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1295
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1296 :``%%``: literal "%" character
9892
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
1297 :``%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
1298 :``%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
1299 :``%p``: root-relative path name of file being printed
21078
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1300 :``%H``: changeset hash (40 hexadecimal digits)
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1301 :``%R``: changeset revision number
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1302 :``%h``: short-form changeset hash (12 hexadecimal digits)
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1303 :``%r``: zero-padded changeset revision number
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1304 :``%b``: basename of the exporting repository
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1305
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1306 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1307 """
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
1308 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
1309 m = scmutil.match(ctx, (file1,) + pats, opts)
20293
2f6b3900be64 cat: increase perf when catting single files
Durham Goode <durham@fb.com>
parents: 20282
diff changeset
1310
21041
a2cc3c08c3ac cat: support cat with explicit paths in subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 21040
diff changeset
1311 return cmdutil.cat(ui, repo, ctx, m, '', **opts)
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
1312
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1313 @command('^clone',
24364
135b23868f45 commands: replace "working copy" with "working directory" in help/messages
Yuya Nishihara <yuya@tcha.org>
parents: 24359
diff changeset
1314 [('U', 'noupdate', None, _('the clone will include an empty working '
135b23868f45 commands: replace "working copy" with "working directory" in help/messages
Yuya Nishihara <yuya@tcha.org>
parents: 24359
diff changeset
1315 'directory (only a repository)')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1316 ('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
1317 ('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
1318 ('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
1319 ('', '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
1320 ('', '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
1321 ] + remoteopts,
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1322 _('[OPTION]... SOURCE [DEST]'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1323 norepo=True)
698
df78d8ccac4c Use python function instead of external 'cp' command when cloning repos.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 697
diff changeset
1324 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
1325 """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
1326
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1327 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
1328
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1329 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
1330 basename of the source.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1331
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1332 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
1333 ``.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
1334
15177
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1335 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
1336 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
1337 ``.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
1338
15174
9f1a08c00931 clone: improve help on -r/-b and tags
Matt Mackall <mpm@selenic.com>
parents: 15147
diff changeset
1339 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
1340 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
1341 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
1342 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
1343 --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
1344 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
1345 containing the tag.
9714
2f1ab7f77ddc clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents: 9698
diff changeset
1346
18474
e031e10cdc06 help: document '@' bookmark in 'help bookmarks' and 'help clone'
Kevin Bullock <kbullock@ringworld.org>
parents: 18471
diff changeset
1347 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
1348 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
1349
15178
04e5449e25dc clone: add a note about -u/-U
Matt Mackall <mpm@selenic.com>
parents: 15177
diff changeset
1350 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
1351 -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
1352
15177
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1353 .. container:: verbose
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1354
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1355 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
1356 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
1357 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
1358 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
1359 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
1360 --pull option to avoid hardlinking.
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1361
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1362 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
1363 directory using full hardlinks with ::
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1364
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1365 $ cp -al REPO REPOCLONE
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1366
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1367 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
1368 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
1369 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
1370 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
1371 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
1372 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
1373
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1374 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
1375 revision from this list:
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1376
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1377 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
1378 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
1379 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
1380 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
1381 latest head of that branch)
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1382 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
1383 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
1384 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
1385 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
1386 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
1387 i) tip
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1388
15179
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1389 Examples:
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1390
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1391 - clone a remote repository to a new directory named hg/::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1392
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1393 hg clone http://selenic.com/hg
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1394
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1395 - create a lightweight local clone::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1396
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1397 hg clone project/ project-feature/
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1398
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1399 - 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
1400
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1401 hg clone ssh://user@server//home/projects/alpha/
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1402
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1403 - 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
1404 specified version::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1405
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1406 hg clone --uncompressed http://server/repo -u 1.5
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1407
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1408 - create a repository without changesets after a particular revision::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1409
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1410 hg clone -r 04e544 experimental/ good/
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1411
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1412 - clone (and track) a particular named branch::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1413
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1414 hg clone http://selenic.com/hg#stable
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1415
15175
282db9102c43 clone: move url crossref to bottom
Matt Mackall <mpm@selenic.com>
parents: 15174
diff changeset
1416 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
1417
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1418 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1419 """
9714
2f1ab7f77ddc clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents: 9698
diff changeset
1420 if opts.get('noupdate') and opts.get('updaterev'):
2f1ab7f77ddc clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents: 9698
diff changeset
1421 raise util.Abort(_("cannot specify both --noupdate and --updaterev"))
2f1ab7f77ddc clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents: 9698
diff changeset
1422
14553
d976542986d2 hg: add opts argument to clone for internal remoteui
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14551
diff changeset
1423 r = hg.clone(ui, opts, source, dest,
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1424 pull=opts.get('pull'),
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1425 stream=opts.get('uncompressed'),
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1426 rev=opts.get('rev'),
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1427 update=opts.get('updaterev') or not opts.get('noupdate'),
25761
0d37b9b21467 hg: support for auto sharing stores when cloning
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25744
diff changeset
1428 branch=opts.get('branch'),
0d37b9b21467 hg: support for auto sharing stores when cloning
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25744
diff changeset
1429 shareopts=opts.get('shareopts'))
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1430
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1431 return r is None
515
03f27b1381f9 Whitespace cleanups
mpm@selenic.com
parents: 513
diff changeset
1432
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1433 @command('^commit|ci',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1434 [('A', 'addremove', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1435 _('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
1436 ('', 'close-branch', None,
25304
9bc11716bc86 commit: improve --close-branch documentation
Matt Mackall <mpm@selenic.com>
parents: 25295
diff changeset
1437 _('mark a branch head as closed')),
24365
f1eaf03dd608 commands: say "working directory" in full spelling
Yuya Nishihara <yuya@tcha.org>
parents: 24364
diff changeset
1438 ('', 'amend', None, _('amend the parent of the working directory')),
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1439 ('s', 'secret', None, _('use the secret phase for committing')),
21952
3838b910fa6b doc: unify help text for "--edit" option
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21951
diff changeset
1440 ('e', 'edit', None, _('invoke editor on commit messages')),
24278
0b94b68aace9 record: add interactive option to the commit command
Laurent Charignon <lcharignon@fb.com>
parents: 24275
diff changeset
1441 ('i', 'interactive', None, _('use interactive mode')),
15321
e174353e8cda subrepos: abort commit by default if a subrepo is dirty (BC)
Martin Geisler <mg@lazybytes.net>
parents: 15307
diff changeset
1442 ] + walkopts + commitopts + commitopts2 + subrepoopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
1443 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
1444 inferrepo=True)
813
80fd2958235a Adapt commit to use file matching code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 812
diff changeset
1445 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
1446 """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
1447
7983
7b813bdbd5d0 Change double spaces to single spaces in help texts.
Martin Geisler <mg@daimi.au.dk>
parents: 7982
diff changeset
1448 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
1449 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
1450 :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
1451
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
1452 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
1453 will be committed.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1454
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
1455 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
1456 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
1457
11877
8f40125a0ed8 commit: explicitly document the existence of "last-message.txt"
Greg Ward <greg-hg@gerg.ca>
parents: 11836
diff changeset
1458 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
1459 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
1460 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
1461 ``.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
1462
25304
9bc11716bc86 commit: improve --close-branch documentation
Matt Mackall <mpm@selenic.com>
parents: 25295
diff changeset
1463 The --close-branch flag can be used to mark the current branch
9bc11716bc86 commit: improve --close-branch documentation
Matt Mackall <mpm@selenic.com>
parents: 25295
diff changeset
1464 head closed. When all heads of a branch are closed, the branch
9bc11716bc86 commit: improve --close-branch documentation
Matt Mackall <mpm@selenic.com>
parents: 25295
diff changeset
1465 will be considered closed and no longer listed.
9bc11716bc86 commit: improve --close-branch documentation
Matt Mackall <mpm@selenic.com>
parents: 25295
diff changeset
1466
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1467 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
1468 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
1469 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
1470 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
1471 ``.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
1472 on how to restore it).
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1473
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1474 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
1475 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
1476 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
1477
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1478 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
1479 or changesets that have children.
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1480
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
1481 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
1482
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1483 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
1484 """
24278
0b94b68aace9 record: add interactive option to the commit command
Laurent Charignon <lcharignon@fb.com>
parents: 24275
diff changeset
1485 if opts.get('interactive'):
0b94b68aace9 record: add interactive option to the commit command
Laurent Charignon <lcharignon@fb.com>
parents: 24275
diff changeset
1486 opts.pop('interactive')
25796
4eb8d8a44bf1 record: omit meaningless 'commit' suggestion at 'hg commit -i'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 25789
diff changeset
1487 cmdutil.dorecord(ui, repo, commit, None, False,
24309
fefcafda10b8 record: change interface of dorecord to accept new filters
Laurent Charignon <lcharignon@fb.com>
parents: 24306
diff changeset
1488 cmdutil.recordfilter, *pats, **opts)
24278
0b94b68aace9 record: add interactive option to the commit command
Laurent Charignon <lcharignon@fb.com>
parents: 24275
diff changeset
1489 return
0b94b68aace9 record: add interactive option to the commit command
Laurent Charignon <lcharignon@fb.com>
parents: 24275
diff changeset
1490
15321
e174353e8cda subrepos: abort commit by default if a subrepo is dirty (BC)
Martin Geisler <mg@lazybytes.net>
parents: 15307
diff changeset
1491 if opts.get('subrepos'):
19232
b592fd33233a amend: complain more comprehensibly about subrepos
Matt Mackall <mpm@selenic.com>
parents: 19217
diff changeset
1492 if opts.get('amend'):
b592fd33233a amend: complain more comprehensibly about subrepos
Matt Mackall <mpm@selenic.com>
parents: 19217
diff changeset
1493 raise util.Abort(_('cannot amend with --subrepos'))
17504
593c5ca70a63 spelling: override
timeless@mozdev.org
parents: 17500
diff changeset
1494 # Let --subrepos on the command line override config setting.
20790
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
1495 ui.setconfig('ui', 'commitsubrepos', True, 'commit')
15321
e174353e8cda subrepos: abort commit by default if a subrepo is dirty (BC)
Martin Geisler <mg@lazybytes.net>
parents: 15307
diff changeset
1496
19496
607191a45f8c checkunfinished: accommodate histedit quirk
Matt Mackall <mpm@selenic.com>
parents: 19493
diff changeset
1497 cmdutil.checkunfinished(repo, commit=True)
19253
e078ea9b4ce4 graft: refuse to commit an interrupted graft (issue3667)
Simon King <simon@simonking.org.uk>
parents: 19232
diff changeset
1498
19305
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1499 branch = repo[None].branch()
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1500 bheads = repo.branchheads(branch)
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1501
7655
cce37dab7ad6 branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents: 7643
diff changeset
1502 extra = {}
cce37dab7ad6 branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents: 7643
diff changeset
1503 if opts.get('close_branch'):
cce37dab7ad6 branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents: 7643
diff changeset
1504 extra['close'] = 1
6336
4b0c9c674707 warn about new heads on commit (issue842)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6321
diff changeset
1505
19305
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1506 if not bheads:
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1507 raise util.Abort(_('can only close branch heads'))
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1508 elif opts.get('amend'):
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1509 if repo.parents()[0].p1().branch() != branch and \
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1510 repo.parents()[0].p2().branch() != branch:
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1511 raise util.Abort(_('can only close branch heads'))
11173
5b48d819d5f9 commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents: 11169
diff changeset
1512
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1513 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
1514 if ui.configbool('ui', 'commitsubrepos'):
19232
b592fd33233a amend: complain more comprehensibly about subrepos
Matt Mackall <mpm@selenic.com>
parents: 19217
diff changeset
1515 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
1516
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1517 old = repo['.']
22417
ca854cd4a26a commit: correctly check commit mutability during commit --amend
Augie Fackler <raf@durin42.com>
parents: 22405
diff changeset
1518 if not old.mutable():
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1519 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
1520 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
1521 raise util.Abort(_('cannot amend while merging'))
22952
8792ac090e3b obsolete: add allowunstable option
Durham Goode <durham@fb.com>
parents: 22926
diff changeset
1522 allowunstable = obsolete.isenabled(repo, obsolete.allowunstableopt)
8792ac090e3b obsolete: add allowunstable option
Durham Goode <durham@fb.com>
parents: 22926
diff changeset
1523 if not allowunstable and old.children():
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1524 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
1525
20700
b0153cb8b64e commit: create new amend changeset as secret correctly for "--secret" option
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20633
diff changeset
1526 # commitfunc is used only for temporary amend commit by cmdutil.amend
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1527 def commitfunc(ui, repo, message, match, opts):
20700
b0153cb8b64e commit: create new amend changeset as secret correctly for "--secret" option
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20633
diff changeset
1528 return repo.commit(message,
b0153cb8b64e commit: create new amend changeset as secret correctly for "--secret" option
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20633
diff changeset
1529 opts.get('user') or old.user(),
b0153cb8b64e commit: create new amend changeset as secret correctly for "--secret" option
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20633
diff changeset
1530 opts.get('date') or old.date(),
b0153cb8b64e commit: create new amend changeset as secret correctly for "--secret" option
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20633
diff changeset
1531 match,
b0153cb8b64e commit: create new amend changeset as secret correctly for "--secret" option
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20633
diff changeset
1532 extra=extra)
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1533
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1534 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
1535 if node == old.node():
13899
a7cd0eee396b commit: note when files are missing
Martin Geisler <mg@aragost.com>
parents: 13893
diff changeset
1536 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
1537 return 1
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1538 else:
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1539 def commitfunc(ui, repo, message, match, opts):
22039
0aa2cb965f4c commit: update the --secret code to use backupconfig and restoreconfig
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22010
diff changeset
1540 backup = ui.backupconfig('phases', 'new-commit')
0aa2cb965f4c commit: update the --secret code to use backupconfig and restoreconfig
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22010
diff changeset
1541 baseui = repo.baseui
0aa2cb965f4c commit: update the --secret code to use backupconfig and restoreconfig
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22010
diff changeset
1542 basebackup = baseui.backupconfig('phases', 'new-commit')
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1543 try:
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1544 if opts.get('secret'):
20790
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
1545 ui.setconfig('phases', 'new-commit', 'secret', 'commit')
20772
03774a2b6991 commit: propagate --secret option to subrepos (issue4182)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 20767
diff changeset
1546 # Propagate to subrepos
22039
0aa2cb965f4c commit: update the --secret code to use backupconfig and restoreconfig
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22010
diff changeset
1547 baseui.setconfig('phases', 'new-commit', 'secret', 'commit')
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1548
22248
75618a223e18 commit: change "editform" to distinguish merge commits from others
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22218
diff changeset
1549 editform = cmdutil.mergeeditform(repo[None], 'commit.normal')
22010
41e969cb9468 commit: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22009
diff changeset
1550 editor = cmdutil.getcommiteditor(editform=editform, **opts)
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1551 return repo.commit(message, opts.get('user'), opts.get('date'),
21414
37a302f0e297 commit: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21413
diff changeset
1552 match,
22010
41e969cb9468 commit: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22009
diff changeset
1553 editor=editor,
21414
37a302f0e297 commit: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21413
diff changeset
1554 extra=extra)
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1555 finally:
22039
0aa2cb965f4c commit: update the --secret code to use backupconfig and restoreconfig
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22010
diff changeset
1556 ui.restoreconfig(backup)
0aa2cb965f4c commit: update the --secret code to use backupconfig and restoreconfig
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22010
diff changeset
1557 repo.baseui.restoreconfig(basebackup)
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1558
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1559
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1560 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
1561
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1562 if not node:
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1563 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
1564 if stat[3]:
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1565 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
1566 "'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
1567 else:
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1568 ui.status(_("nothing changed\n"))
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1569 return 1
11173
5b48d819d5f9 commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents: 11169
diff changeset
1570
18688
79107fad06aa commit: factor out status printing into a helper function
Kevin Bullock <kbullock@ringworld.org>
parents: 18687
diff changeset
1571 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
1572
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1573 @command('config|showconfig|debugconfig',
20572
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1574 [('u', 'untrusted', None, _('show untrusted configuration options')),
20782
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1575 ('e', 'edit', None, _('edit user config')),
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1576 ('l', 'local', None, _('edit repository config')),
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1577 ('g', 'global', None, _('edit global config'))],
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
1578 _('[-u] [NAME]...'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
1579 optionalrepo=True)
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1580 def config(ui, repo, *values, **opts):
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1581 """show combined config settings from all hgrc files
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1582
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1583 With no arguments, print names and values of all config items.
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1584
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1585 With one argument of the form section.name, print just the value
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1586 of that config item.
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1587
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1588 With multiple arguments, print names and values of all config
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1589 items with matching section names.
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1590
20783
43054dc84abd config: mention edit options and config topic in help
Matt Mackall <mpm@selenic.com>
parents: 20782
diff changeset
1591 With --edit, start an editor on the user-level config file. With
43054dc84abd config: mention edit options and config topic in help
Matt Mackall <mpm@selenic.com>
parents: 20782
diff changeset
1592 --global, edit the system-wide config file. With --local, edit the
43054dc84abd config: mention edit options and config topic in help
Matt Mackall <mpm@selenic.com>
parents: 20782
diff changeset
1593 repository-level config file.
43054dc84abd config: mention edit options and config topic in help
Matt Mackall <mpm@selenic.com>
parents: 20782
diff changeset
1594
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1595 With --debug, the source (filename and line number) is printed
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1596 for each config item.
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1597
20783
43054dc84abd config: mention edit options and config topic in help
Matt Mackall <mpm@selenic.com>
parents: 20782
diff changeset
1598 See :hg:`help config` for more information about config files.
43054dc84abd config: mention edit options and config topic in help
Matt Mackall <mpm@selenic.com>
parents: 20782
diff changeset
1599
22316
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1600 Returns 0 on success, 1 if NAME does not exist.
20783
43054dc84abd config: mention edit options and config topic in help
Matt Mackall <mpm@selenic.com>
parents: 20782
diff changeset
1601
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1602 """
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1603
20782
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1604 if opts.get('edit') or opts.get('local') or opts.get('global'):
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1605 if opts.get('local') and opts.get('global'):
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1606 raise util.Abort(_("can't use --local and --global together"))
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1607
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1608 if opts.get('local'):
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1609 if not repo:
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1610 raise util.Abort(_("can't use --local outside a repository"))
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1611 paths = [repo.join('hgrc')]
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1612 elif opts.get('global'):
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1613 paths = scmutil.systemrcpath()
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1614 else:
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1615 paths = scmutil.userrcpath()
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1616
20572
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1617 for f in paths:
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1618 if os.path.exists(f):
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1619 break
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1620 else:
22383
f58b41f6708b config: give more fine-tuned sample hgrcs to this command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 22381
diff changeset
1621 if opts.get('global'):
22837
2be7d5ebd4d0 config: use the same hgrc for a cloned repo as for an uninitted repo
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 22824
diff changeset
1622 samplehgrc = uimod.samplehgrcs['global']
22383
f58b41f6708b config: give more fine-tuned sample hgrcs to this command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 22381
diff changeset
1623 elif opts.get('local'):
22837
2be7d5ebd4d0 config: use the same hgrc for a cloned repo as for an uninitted repo
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 22824
diff changeset
1624 samplehgrc = uimod.samplehgrcs['local']
22383
f58b41f6708b config: give more fine-tuned sample hgrcs to this command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 22381
diff changeset
1625 else:
22837
2be7d5ebd4d0 config: use the same hgrc for a cloned repo as for an uninitted repo
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 22824
diff changeset
1626 samplehgrc = uimod.samplehgrcs['user']
22383
f58b41f6708b config: give more fine-tuned sample hgrcs to this command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 22381
diff changeset
1627
20572
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1628 f = paths[0]
20573
02d0d3aa42e3 config: add example config file when -e called with no config
Matt Mackall <mpm@selenic.com>
parents: 20572
diff changeset
1629 fp = open(f, "w")
22383
f58b41f6708b config: give more fine-tuned sample hgrcs to this command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 22381
diff changeset
1630 fp.write(samplehgrc)
20573
02d0d3aa42e3 config: add example config file when -e called with no config
Matt Mackall <mpm@selenic.com>
parents: 20572
diff changeset
1631 fp.close()
02d0d3aa42e3 config: add example config file when -e called with no config
Matt Mackall <mpm@selenic.com>
parents: 20572
diff changeset
1632
20572
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1633 editor = ui.geteditor()
23270
41c03b7592ed util.system: use ui.system() in place of optional ui.fout parameter
Yuya Nishihara <yuya@tcha.org>
parents: 23254
diff changeset
1634 ui.system("%s \"%s\"" % (editor, f),
41c03b7592ed util.system: use ui.system() in place of optional ui.fout parameter
Yuya Nishihara <yuya@tcha.org>
parents: 23254
diff changeset
1635 onerr=util.Abort, errprefix=_("edit failed"))
20572
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1636 return
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1637
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1638 for f in scmutil.rcpath():
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1639 ui.debug('read config from: %s\n' % f)
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1640 untrusted = bool(opts.get('untrusted'))
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1641 if values:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1642 sections = [v for v in values if '.' not in v]
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1643 items = [v for v in values if '.' in v]
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1644 if len(items) > 1 or items and sections:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1645 raise util.Abort(_('only one config item permitted'))
22316
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1646 matched = False
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1647 for section, name, value in ui.walkconfig(untrusted=untrusted):
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1648 value = str(value).replace('\n', '\\n')
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1649 sectname = section + '.' + name
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1650 if values:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1651 for v in values:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1652 if v == section:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1653 ui.debug('%s: ' %
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1654 ui.configsource(section, name, untrusted))
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1655 ui.write('%s=%s\n' % (sectname, value))
22316
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1656 matched = True
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1657 elif v == sectname:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1658 ui.debug('%s: ' %
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1659 ui.configsource(section, name, untrusted))
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1660 ui.write(value, '\n')
22316
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1661 matched = True
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1662 else:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1663 ui.debug('%s: ' %
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1664 ui.configsource(section, name, untrusted))
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1665 ui.write('%s=%s\n' % (sectname, value))
22316
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1666 matched = True
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1667 if matched:
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1668 return 0
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1669 return 1
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1670
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1671 @command('copy|cp',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1672 [('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
1673 ('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
1674 ] + walkopts + dryrunopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1675 _('[OPTION]... [SOURCE]... DEST'))
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
1676 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
1677 """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
1678
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
1679 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
1680 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
1681 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
1682
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1683 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
1684 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
1685 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
1686
7807
bd8f44638847 help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents: 7765
diff changeset
1687 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
1688 before that, see :hg:`revert`.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1689
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1690 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
1691 """
4914
9a2a73ea6135 repo locks: use True/False
Matt Mackall <mpm@selenic.com>
parents: 4906
diff changeset
1692 wlock = repo.wlock(False)
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
1693 try:
5610
2493a478f395 copy: handle rename internally
Matt Mackall <mpm@selenic.com>
parents: 5589
diff changeset
1694 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
1695 finally:
8109
496ae1ea4698 switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents: 8088
diff changeset
1696 wlock.release()
363
ae96b7e1318d Add hg copy
mpm@selenic.com
parents: 355
diff changeset
1697
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
1698 @command('debugancestor', [], _('[INDEX] REV1 REV2'), optionalrepo=True)
6189
81cbb5dfdec0 Make hg debugancestor accept -R by making it an optionalrepo command.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6188
diff changeset
1699 def debugancestor(ui, repo, *args):
1262
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1700 """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
1701 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
1702 index, rev1, rev2 = args
13970
d13913355390 move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents: 13965
diff changeset
1703 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
1704 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
1705 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
1706 if not repo:
12067
a4fbbe0fbc38 Lowercase error messages
Martin Geisler <mg@lazybytes.net>
parents: 11881
diff changeset
1707 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
1708 "(.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
1709 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
1710 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
1711 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
1712 else:
81afdd016867 debugancestor: make the index argument optional, defaulting to 00changelog.i
Bryan O'Sullivan <bos@serpentine.com>
parents: 6171
diff changeset
1713 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
1714 a = r.ancestor(lookup(rev1), lookup(rev2))
1262
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1715 ui.write("%d:%s\n" % (r.rev(a), hex(a)))
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1716
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1717 @command('debugbuilddag',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1718 [('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
1719 ('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
1720 ('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
1721 _('[OPTION]... [TEXT]'))
14283
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1722 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
1723 mergeable_file=False,
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1724 overwritten_file=False,
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1725 new_file=False):
14283
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1726 """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
1727
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1728 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
1729 command line.
11337
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1730
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1731 Elements:
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1732
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1733 - "+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
1734 - "." 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
1735 - "$" 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
1736 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
1737 - "<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
1738 - "*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
1739 - "*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
1740 - "/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
1741 - ":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
1742 - "@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
1743 - "#...\\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
1744
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1745 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
1746
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1747 A backref is either
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1748
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1749 - 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
1750 node, or
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1751 - 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
1752 - 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
1753
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1754 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
1755 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
1756 """
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1757
14283
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1758 if text is None:
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1759 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
1760 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
1761
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1762 cl = repo.changelog
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1763 if len(cl) > 0:
11342
aecabad8dd7a commands: get rid of generic exception in debugbuilddag
Martin Geisler <mg@aragost.com>
parents: 11338
diff changeset
1764 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
1765
14279
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1766 # determine number of revs in DAG
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1767 total = 0
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1768 for type, data in dagparser.parsedag(text):
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1769 if type == 'n':
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1770 total += 1
11337
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1771
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1772 if mergeable_file:
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1773 linesperrev = 2
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1774 # make a file with k lines per rev
14279
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1775 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
1776 initialmergedlines.append("")
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1777
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1778 tags = []
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1779
15875
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1780 lock = tr = None
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1781 try:
15875
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1782 lock = repo.lock()
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1783 tr = repo.transaction("builddag")
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1784
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1785 at = -1
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1786 atbranch = 'default'
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1787 nodeids = []
16219
28c5648771d1 debugbuilddag: fix starting a dag on a non-default branch
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 16191
diff changeset
1788 id = 0
28c5648771d1 debugbuilddag: fix starting a dag on a non-default branch
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 16191
diff changeset
1789 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
1790 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
1791 if type == 'n':
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
1792 ui.note(('node %s\n' % str(data)))
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1793 id, ps = data
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1794
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1795 files = []
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1796 fctxs = {}
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1797
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1798 p2 = None
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1799 if mergeable_file:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1800 fn = "mf"
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1801 p1 = repo[ps[0]]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1802 if len(ps) > 1:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1803 p2 = repo[ps[1]]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1804 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
1805 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
1806 p2)]
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1807 m3 = simplemerge.Merge3Text(base, local, other)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1808 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
1809 ml.append("")
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1810 elif at > 0:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1811 ml = p1[fn].data().split("\n")
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1812 else:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1813 ml = initialmergedlines
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1814 ml[id * linesperrev] += " r%i" % id
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1815 mergedtext = "\n".join(ml)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1816 files.append(fn)
21689
503bb3af70fe memfilectx: call super.__init__ instead of duplicating code
Sean Farley <sean.michael.farley@gmail.com>
parents: 21585
diff changeset
1817 fctxs[fn] = context.memfilectx(repo, fn, mergedtext)
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1818
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1819 if overwritten_file:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1820 fn = "of"
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1821 files.append(fn)
21689
503bb3af70fe memfilectx: call super.__init__ instead of duplicating code
Sean Farley <sean.michael.farley@gmail.com>
parents: 21585
diff changeset
1822 fctxs[fn] = context.memfilectx(repo, fn, "r%i\n" % id)
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1823
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1824 if new_file:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1825 fn = "nf%i" % id
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1826 files.append(fn)
21689
503bb3af70fe memfilectx: call super.__init__ instead of duplicating code
Sean Farley <sean.michael.farley@gmail.com>
parents: 21585
diff changeset
1827 fctxs[fn] = context.memfilectx(repo, fn, "r%i\n" % id)
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1828 if len(ps) > 1:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1829 if not p2:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1830 p2 = repo[ps[1]]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1831 for fn in p2:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1832 if fn.startswith("nf"):
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1833 files.append(fn)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1834 fctxs[fn] = p2[fn]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1835
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1836 def fctxfn(repo, cx, path):
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1837 return fctxs.get(path)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1838
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1839 if len(ps) == 0 or ps[0] < 0:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1840 pars = [None, None]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1841 elif len(ps) == 1:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1842 pars = [nodeids[ps[0]], None]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1843 else:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1844 pars = [nodeids[p] for p in ps]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1845 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
1846 date=(id, 0),
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1847 user="debugbuilddag",
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1848 extra={'branch': atbranch})
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1849 nodeid = repo.commitctx(cx)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1850 nodeids.append(nodeid)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1851 at = id
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1852 elif type == 'l':
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1853 id, name = data
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
1854 ui.note(('tag %s\n' % name))
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1855 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
1856 elif type == 'a':
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
1857 ui.note(('branch %s\n' % data))
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1858 atbranch = data
14279
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1859 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
1860 tr.close()
15875
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1861
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1862 if tags:
23877
7cc77030c557 localrepo: remove all external users of localrepo.opener
Angel Ezquerra <angel.ezquerra@gmail.com>
parents: 23840
diff changeset
1863 repo.vfs.write("localtags", "".join(tags))
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1864 finally:
14279
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1865 ui.progress(_('building'), None)
15875
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1866 release(tr, lock)
11337
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1867
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1868 @command('debugbundle',
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1869 [('a', 'all', None, _('show all details'))],
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1870 _('FILE'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1871 norepo=True)
13724
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1872 def debugbundle(ui, bundlepath, all=None, **opts):
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1873 """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
1874 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
1875 try:
21064
4d9d490d7bbe bundle2: add a ui argument to readbundle
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21063
diff changeset
1876 gen = exchange.readbundle(ui, f, bundlepath)
23888
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1877 if isinstance(gen, bundle2.unbundle20):
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1878 return _debugbundle2(ui, gen, all=all, **opts)
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1879 if all:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
1880 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
1881
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1882 def showchunks(named):
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1883 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
1884 chain = None
14494
1ffeeb91c55d check-code: flag 0/1 used as constant Boolean expression
Martin Geisler <mg@lazybytes.net>
parents: 14485
diff changeset
1885 while True:
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1886 chunkdata = gen.deltachunk(chain)
13724
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1887 if not chunkdata:
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1888 break
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1889 node = chunkdata['node']
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1890 p1 = chunkdata['p1']
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1891 p2 = chunkdata['p2']
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1892 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
1893 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
1894 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
1895 ui.write("%s %s %s %s %s %s\n" %
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1896 (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
1897 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
1898 chain = node
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1899
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1900 chunkdata = gen.changelogheader()
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1901 showchunks("changelog")
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1902 chunkdata = gen.manifestheader()
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1903 showchunks("manifest")
14494
1ffeeb91c55d check-code: flag 0/1 used as constant Boolean expression
Martin Geisler <mg@lazybytes.net>
parents: 14485
diff changeset
1904 while True:
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1905 chunkdata = gen.filelogheader()
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1906 if not chunkdata:
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1907 break
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1908 fname = chunkdata['filename']
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1909 showchunks(fname)
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1910 else:
23888
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1911 if isinstance(gen, bundle2.unbundle20):
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1912 raise util.Abort(_('use debugbundle2 for this file'))
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1913 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
1914 chain = None
14494
1ffeeb91c55d check-code: flag 0/1 used as constant Boolean expression
Martin Geisler <mg@lazybytes.net>
parents: 14485
diff changeset
1915 while True:
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1916 chunkdata = gen.deltachunk(chain)
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1917 if not chunkdata:
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1918 break
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1919 node = chunkdata['node']
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1920 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
1921 chain = node
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
1922 finally:
13724
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1923 f.close()
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1924
23888
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1925 def _debugbundle2(ui, gen, **opts):
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1926 """lists the contents of a bundle2"""
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1927 if not isinstance(gen, bundle2.unbundle20):
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1928 raise util.Abort(_('not a bundle2 file'))
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1929 ui.write(('Stream params: %s\n' % repr(gen.params)))
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1930 for part in gen.iterparts():
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1931 ui.write('%s -- %r\n' % (part.type, repr(part.params)))
24686
e0e28e910fa3 bundle2: rename format, parts and config to final names
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 24663
diff changeset
1932 if part.type == 'changegroup':
23888
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1933 version = part.params.get('version', '01')
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1934 cg = changegroup.packermap[version][1](part, 'UN')
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1935 chunkdata = cg.changelogheader()
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1936 chain = None
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1937 while True:
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1938 chunkdata = cg.deltachunk(chain)
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1939 if not chunkdata:
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1940 break
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1941 node = chunkdata['node']
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1942 ui.write(" %s\n" % hex(node))
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1943 chain = node
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1944
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1945 @command('debugcheckstate', [], '')
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
1946 def debugcheckstate(ui, repo):
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
1947 """validate the correctness of the current dirstate"""
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1948 parent1, parent2 = repo.dirstate.parents()
6747
f6c00b17387c use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents: 6746
diff changeset
1949 m1 = repo[parent1].manifest()
f6c00b17387c use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents: 6746
diff changeset
1950 m2 = repo[parent2].manifest()
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1951 errors = 0
4906
30847b8af7ca dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents: 4904
diff changeset
1952 for f in repo.dirstate:
30847b8af7ca dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents: 4904
diff changeset
1953 state = repo.dirstate[f]
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1954 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
1955 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
1956 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1957 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
1958 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
1959 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1960 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
1961 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
1962 (f, state))
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1963 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1964 for f in m1:
4906
30847b8af7ca dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents: 4904
diff changeset
1965 state = repo.dirstate[f]
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1966 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
1967 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
1968 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1969 if errors:
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
1970 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
1971 raise util.Abort(error)
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1972
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1973 @command('debugcommands', [], _('[COMMAND]'), norepo=True)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1974 def debugcommands(ui, cmd='', *args):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1975 """list all available commands and options"""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1976 for cmd, vals in sorted(table.iteritems()):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1977 cmd = cmd.split('|')[0].strip('^')
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1978 opts = ', '.join([i[1] for i in vals[1]])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1979 ui.write('%s: %s\n' % (cmd, opts))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1980
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1981 @command('debugcomplete',
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1982 [('o', 'options', None, _('show the command options'))],
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1983 _('[-o] CMD'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1984 norepo=True)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1985 def debugcomplete(ui, cmd='', **opts):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1986 """returns the completion list associated with the given command"""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1987
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1988 if opts.get('options'):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1989 options = []
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1990 otables = [globalopts]
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1991 if cmd:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1992 aliases, entry = cmdutil.findcmd(cmd, table, False)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1993 otables.append(entry[1])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1994 for t in otables:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1995 for o in t:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1996 if "(DEPRECATED)" in o[3]:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1997 continue
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1998 if o[0]:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1999 options.append('-%s' % o[0])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2000 options.append('--%s' % o[1])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2001 ui.write("%s\n" % "\n".join(options))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2002 return
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2003
24222
02d7b5cd373b dispatch: offer suggestions of similar-named commands
Augie Fackler <augie@google.com>
parents: 24191
diff changeset
2004 cmdlist, unused_allcmds = cmdutil.findpossible(cmd, table)
11276
f28b58e35768 revset: add a debugrevspec command
Matt Mackall <mpm@selenic.com>
parents: 11273
diff changeset
2005 if ui.verbose:
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2006 cmdlist = [' '.join(c[0]) for c in cmdlist.values()]
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2007 ui.write("%s\n" % "\n".join(sorted(cmdlist)))
8812
859f841937d0 subrepo: introduce basic state parsing
Matt Mackall <mpm@selenic.com>
parents: 8810
diff changeset
2008
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2009 @command('debugdag',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2010 [('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
2011 ('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
2012 ('', 'dots', None, _('use dots for runs')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2013 ('s', 'spaces', None, _('separate elements by spaces'))],
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2014 _('[OPTION]... [FILE [REV]...]'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2015 optionalrepo=True)
11336
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2016 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
2017 """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
2018
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2019 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
2020 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
2021
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2022 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
2023 """
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2024 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
2025 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
2026 if file_:
13970
d13913355390 move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents: 13965
diff changeset
2027 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
2028 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
2029 def events():
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2030 for r in rlog:
22310
aabf367306d5 debugdag: stop wrongly sorting parents
Henrik Stuart <hg@hstuart.dk>
parents: 22305
diff changeset
2031 yield 'n', (r, list(p for p in rlog.parentrevs(r)
aabf367306d5 debugdag: stop wrongly sorting parents
Henrik Stuart <hg@hstuart.dk>
parents: 22305
diff changeset
2032 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
2033 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
2034 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
2035 elif repo:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2036 cl = repo.changelog
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2037 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
2038 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
2039 if tags:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2040 labels = {}
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2041 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
2042 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
2043 def events():
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2044 b = "default"
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2045 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
2046 if branches:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2047 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
2048 if newb != b:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2049 yield 'a', newb
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2050 b = newb
22310
aabf367306d5 debugdag: stop wrongly sorting parents
Henrik Stuart <hg@hstuart.dk>
parents: 22305
diff changeset
2051 yield 'n', (r, list(p for p in cl.parentrevs(r)
aabf367306d5 debugdag: stop wrongly sorting parents
Henrik Stuart <hg@hstuart.dk>
parents: 22305
diff changeset
2052 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
2053 if tags:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2054 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
2055 if ls:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2056 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
2057 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
2058 else:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2059 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
2060
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2061 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
2062 addspaces=spaces,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2063 wraplabels=True,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2064 wrapannotations=True,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2065 wrapnonlinear=dots,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2066 usedots=dots,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2067 maxlinewidth=70):
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2068 ui.write(line)
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2069 ui.write("\n")
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2070
14323
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2071 @command('debugdata',
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2072 [('c', 'changelog', False, _('open changelog')),
25119
49c583ca48c4 treemanifest: add --dir option to debug{revlog,data,index}
Martin von Zweigbergk <martinvonz@google.com>
parents: 25111
diff changeset
2073 ('m', 'manifest', False, _('open manifest')),
49c583ca48c4 treemanifest: add --dir option to debug{revlog,data,index}
Martin von Zweigbergk <martinvonz@google.com>
parents: 25111
diff changeset
2074 ('', 'dir', False, _('open directory manifest'))],
14323
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2075 _('-c|-m|FILE REV'))
19872
681f7b9213a4 check-code: check for spaces around = for named parameters
Mads Kiilerich <madski@unity3d.com>
parents: 19801
diff changeset
2076 def debugdata(ui, repo, file_, rev=None, **opts):
4258
b11a2fb59cf5 revlog: simplify revlog version handling
Matt Mackall <mpm@selenic.com>
parents: 4257
diff changeset
2077 """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
2078 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
2079 file_, rev = None, file_
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2080 elif rev is None:
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2081 raise error.CommandError('debugdata', _('invalid arguments'))
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2082 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
2083 try:
1cc7c0cbc30b Fix traceback during invalid rev identifier for debugdata
Anupam Kapoor<anupam.kapoor@gmail.com>
parents: 1312
diff changeset
2084 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
2085 except KeyError:
3072
bc3fe3b5b785 Never apply string formatting to generated errors with util.Abort.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3071
diff changeset
2086 raise util.Abort(_('invalid revision identifier %s') % rev)
1039
4296754ba7b4 Add debugdata for dumping revlog revision data
mpm@selenic.com
parents: 1037
diff changeset
2087
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2088 @command('debugdate',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2089 [('e', 'extended', None, _('try extended date formats'))],
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2090 _('[-e] DATE [RANGE]'),
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2091 norepo=True, optionalrepo=True)
3812
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2092 def debugdate(ui, date, range=None, **opts):
3805
299d6cce6c0b add debugdate command
Matt Mackall <mpm@selenic.com>
parents: 3804
diff changeset
2093 """parse and display a date"""
3812
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2094 if opts["extended"]:
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2095 d = util.parsedate(date, util.extendeddateformats)
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2096 else:
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2097 d = util.parsedate(date)
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2098 ui.write(("internal: %s %s\n") % d)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2099 ui.write(("standard: %s\n") % util.datestr(d))
3812
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2100 if range:
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2101 m = util.matchdate(range)
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2102 ui.write(("match: %s\n") % m(d[0]))
3805
299d6cce6c0b add debugdate command
Matt Mackall <mpm@selenic.com>
parents: 3804
diff changeset
2103
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2104 @command('debugdiscovery',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2105 [('', 'old', None, _('use old-style discovery')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2106 ('', 'nonheads', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2107 _('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
2108 ] + remoteopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2109 _('[-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
2110 def debugdiscovery(ui, repo, remoteurl="default", **opts):
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2111 """runs the changeset discovery protocol in isolation"""
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2112 remoteurl, branches = hg.parseurl(ui.expandpath(remoteurl),
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2113 opts.get('branch'))
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
2114 remote = hg.peer(repo, opts, remoteurl)
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2115 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
2116
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2117 # make sure tests are repeatable
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2118 random.seed(12323)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2119
17191
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
2120 def doit(localheads, remoteheads, remote=remote):
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2121 if opts.get('old'):
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2122 if localheads:
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2123 raise util.Abort('cannot use localheads with old style '
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2124 'discovery')
17192
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17191
diff changeset
2125 if not util.safehasattr(remote, 'branches'):
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17191
diff changeset
2126 # enable in-client legacy support
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17191
diff changeset
2127 remote = localrepo.locallegacypeer(remote.local())
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2128 common, _in, hds = treediscovery.findcommonincoming(repo, remote,
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2129 force=True)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2130 common = set(common)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2131 if not opts.get('nonheads'):
18254
2dfe519d435d debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents: 18210
diff changeset
2132 ui.write(("unpruned common: %s\n") %
2dfe519d435d debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents: 18210
diff changeset
2133 " ".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
2134 dag = dagutil.revlogdag(repo.changelog)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2135 all = dag.ancestorset(dag.internalizeall(common))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2136 common = dag.externalizeall(dag.headsetofconnecteds(all))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2137 else:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2138 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
2139 common = set(common)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2140 rheads = set(hds)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2141 lheads = set(repo.heads())
18254
2dfe519d435d debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents: 18210
diff changeset
2142 ui.write(("common heads: %s\n") %
2dfe519d435d debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents: 18210
diff changeset
2143 " ".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
2144 if lheads <= common:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2145 ui.write(("local is subset\n"))
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2146 elif rheads <= common:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2147 ui.write(("remote is subset\n"))
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2148
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2149 serverlogs = opts.get('serverlog')
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2150 if serverlogs:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2151 for filename in serverlogs:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2152 logfile = open(filename, 'r')
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2153 try:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2154 line = logfile.readline()
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2155 while line:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2156 parts = line.strip().split(';')
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2157 op = parts[1]
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2158 if op == 'cg':
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2159 pass
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2160 elif op == 'cgss':
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2161 doit(parts[2].split(' '), parts[3].split(' '))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2162 elif op == 'unb':
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2163 doit(parts[3].split(' '), parts[2].split(' '))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2164 line = logfile.readline()
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2165 finally:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2166 logfile.close()
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2167
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2168 else:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2169 remoterevs, _checkout = hg.addbranchrevs(repo, remote, branches,
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2170 opts.get('remote_head'))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2171 localrevs = opts.get('local_head')
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2172 doit(localrevs, remoterevs)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2173
17370
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2174 @command('debugfileset',
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2175 [('r', 'rev', '', _('apply the filespec on this revision'), _('REV'))],
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2176 _('[-r REV] FILESPEC'))
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2177 def debugfileset(ui, repo, expr, **opts):
14511
30506b894359 filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents: 14509
diff changeset
2178 '''parse and apply a fileset specification'''
17370
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2179 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
2180 if ui.verbose:
25252
ac381dd7a21f fileset: move validation of incomplete parsing to parse() function
Yuya Nishihara <yuya@tcha.org>
parents: 25251
diff changeset
2181 tree = fileset.parse(expr)
25255
ad1d2c952889 fileset: pretty print syntax tree in debug output
Yuya Nishihara <yuya@tcha.org>
parents: 25252
diff changeset
2182 ui.note(fileset.prettyformat(tree), "\n")
14673
b0566467c492 fileset: drop matchfn
Matt Mackall <mpm@selenic.com>
parents: 14671
diff changeset
2183
20404
466707047c8d commands: use ctx.getfileset instead of fileset.getfileset
Augie Fackler <raf@durin42.com>
parents: 20389
diff changeset
2184 for f in ctx.getfileset(expr):
14551
68d814a3cefd fileset: basic pattern and boolean support
Matt Mackall <mpm@selenic.com>
parents: 14548
diff changeset
2185 ui.write("%s\n" % f)
14511
30506b894359 filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents: 14509
diff changeset
2186
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2187 @command('debugfsinfo', [], _('[PATH]'), norepo=True)
19872
681f7b9213a4 check-code: check for spaces around = for named parameters
Mads Kiilerich <madski@unity3d.com>
parents: 19801
diff changeset
2188 def debugfsinfo(ui, path="."):
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2189 """show information detected about current filesystem"""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2190 util.writefile('.debugfsinfo', '')
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2191 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
2192 ui.write(('symlink: %s\n') % (util.checklink(path) and 'yes' or 'no'))
19616
f959b60e3025 debugfs: add hardlink support reporting
Matt Mackall <mpm@selenic.com>
parents: 19523
diff changeset
2193 ui.write(('hardlink: %s\n') % (util.checknlink(path) and 'yes' or 'no'))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2194 ui.write(('case-sensitive: %s\n') % (util.checkcase('.debugfsinfo')
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2195 and 'yes' or 'no'))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2196 os.unlink('.debugfsinfo')
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2197
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2198 @command('debuggetbundle',
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2199 [('H', 'head', [], _('id of head node'), _('ID')),
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2200 ('C', 'common', [], _('id of common node'), _('ID')),
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2201 ('t', 'type', 'bzip2', _('bundle compression type to use'), _('TYPE'))],
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2202 _('REPO FILE [-H|-C ID]...'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2203 norepo=True)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2204 def debuggetbundle(ui, repopath, bundlepath, head=None, common=None, **opts):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2205 """retrieves a bundle from a repo
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2206
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2207 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
2208 given file.
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2209 """
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
2210 repo = hg.peer(ui, opts, repopath)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2211 if not repo.capable('getbundle'):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2212 raise util.Abort("getbundle() not supported by target repository")
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2213 args = {}
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2214 if common:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2215 args['common'] = [bin(s) for s in common]
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2216 if head:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2217 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
2218 # 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
2219 args['bundlecaps'] = None
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2220 bundle = repo.getbundle('debug', **args)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2221
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2222 bundletype = opts.get('type', 'bzip2').lower()
23896
becfecaf9087 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com>
parents: 23895
diff changeset
2223 btypes = {'none': 'HG10UN',
becfecaf9087 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com>
parents: 23895
diff changeset
2224 'bzip2': 'HG10BZ',
becfecaf9087 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com>
parents: 23895
diff changeset
2225 'gzip': 'HG10GZ',
24686
e0e28e910fa3 bundle2: rename format, parts and config to final names
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 24663
diff changeset
2226 'bundle2': 'HG20'}
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2227 bundletype = btypes.get(bundletype)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2228 if bundletype not in changegroup.bundletypes:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2229 raise util.Abort(_('unknown bundle type specified with --type'))
23895
cda18ded2c48 changegroup.writebundle: provide ui
Eric Sumner <ericsumner@fb.com>
parents: 23891
diff changeset
2230 changegroup.writebundle(ui, bundle, bundlepath, bundletype)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2231
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2232 @command('debugignore', [], '')
13396
3e66eec9a814 add debugignore which yields the combined ignore patten of the .hgignore files
jfh <jason@jasonfharris.com>
parents: 13388
diff changeset
2233 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
2234 """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
2235 ignore = repo.dirstate._ignore
14949
a4435770cf57 debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents: 14943
diff changeset
2236 includepat = getattr(ignore, 'includepat', None)
a4435770cf57 debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents: 14943
diff changeset
2237 if includepat is not None:
a4435770cf57 debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents: 14943
diff changeset
2238 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
2239 else:
5e57c199848d debugignore: catch the case when ignore.includepat doesn't exist
jfh <jason@jasonfharris.com>
parents: 13400
diff changeset
2240 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
2241
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2242 @command('debugindex',
14323
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2243 [('c', 'changelog', False, _('open changelog')),
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2244 ('m', 'manifest', False, _('open manifest')),
25119
49c583ca48c4 treemanifest: add --dir option to debug{revlog,data,index}
Martin von Zweigbergk <martinvonz@google.com>
parents: 25111
diff changeset
2245 ('', 'dir', False, _('open directory manifest')),
14323
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2246 ('f', 'format', 0, _('revlog format'), _('FORMAT'))],
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2247 _('[-f FORMAT] -c|-m|FILE'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2248 optionalrepo=True)
19872
681f7b9213a4 check-code: check for spaces around = for named parameters
Mads Kiilerich <madski@unity3d.com>
parents: 19801
diff changeset
2249 def debugindex(ui, repo, file_=None, **opts):
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
2250 """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
2251 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
2252 format = opts.get('format', 0)
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2253 if format not in (0, 1):
13470
64ce09e93aff commands: mark strings for translation
Martin Geisler <mg@aragost.com>
parents: 13454
diff changeset
2254 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
2255
14254
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2256 generaldelta = r.version & revlog.REVLOGGENERALDELTA
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2257 if generaldelta:
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2258 basehdr = ' delta'
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2259 else:
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2260 basehdr = ' base'
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2261
23547
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2262 if ui.debugflag:
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2263 shortfn = hex
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2264 else:
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2265 shortfn = short
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2266
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2267 # There might not be anything in r, so have a sane default
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2268 idlen = 12
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2269 for i in r:
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2270 idlen = len(shortfn(r.node(i)))
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2271 break
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2272
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2273 if format == 0:
14254
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2274 ui.write(" rev offset length " + basehdr + " linkrev"
23547
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2275 " %s %s p2\n" % ("nodeid".ljust(idlen), "p1".ljust(idlen)))
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2276 elif format == 1:
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2277 ui.write(" rev flag offset length"
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2278 " size " + basehdr + " link p1 p2"
23547
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2279 " %s\n" % "nodeid".rjust(idlen))
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2280
6750
fb42030d79d6 add __len__ and __iter__ methods to repo and revlog
Matt Mackall <mpm@selenic.com>
parents: 6749
diff changeset
2281 for i in r:
2072
74d3f5336b66 Implement revlogng.
mason@suse.com
parents: 2042
diff changeset
2282 node = r.node(i)
14254
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2283 if generaldelta:
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2284 base = r.deltaparent(i)
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2285 else:
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2286 base = r.chainbase(i)
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2287 if format == 0:
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2288 try:
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2289 pp = r.parents(node)
16689
f366d4c2ff34 cleanup: replace naked excepts with except Exception: ...
Brodie Rao <brodie@sf.io>
parents: 16683
diff changeset
2290 except Exception:
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2291 pp = [nullid, nullid]
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2292 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
2293 i, r.start(i), r.length(i), base, r.linkrev(i),
23547
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2294 shortfn(node), shortfn(pp[0]), shortfn(pp[1])))
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2295 elif format == 1:
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2296 pr = r.parentrevs(i)
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2297 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
2298 i, r.flags(i), r.start(i), r.length(i), r.rawsize(i),
23547
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2299 base, r.linkrev(i), pr[0], pr[1], shortfn(node)))
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
2300
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2301 @command('debugindexdot', [], _('FILE'), optionalrepo=True)
12132
8a0e5b0c0ba9 debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents: 12131
diff changeset
2302 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
2303 """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
2304 r = None
8a0e5b0c0ba9 debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents: 12131
diff changeset
2305 if repo:
8a0e5b0c0ba9 debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents: 12131
diff changeset
2306 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
2307 if len(filelog):
8a0e5b0c0ba9 debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents: 12131
diff changeset
2308 r = filelog
8a0e5b0c0ba9 debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents: 12131
diff changeset
2309 if not r:
13970
d13913355390 move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents: 13965
diff changeset
2310 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
2311 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
2312 for i in r:
2287
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
2313 node = r.node(i)
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
2314 pp = r.parents(node)
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
2315 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
2316 if pp[1] != nullid:
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
2317 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
2318 ui.write("}\n")
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
2319
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2320 @command('debuginstall', [], '', norepo=True)
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2321 def debuginstall(ui):
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
2322 '''test Mercurial installation
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
2323
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
2324 Returns 0 on success.
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
2325 '''
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2326
3846
18855084b922 Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents: 3844
diff changeset
2327 def writetemp(contents):
4849
035489f60842 Use a prefix for debuginstall tempfiles.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4818
diff changeset
2328 (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
2329 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
2330 f.write(contents)
18855084b922 Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents: 3844
diff changeset
2331 f.close()
18855084b922 Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents: 3844
diff changeset
2332 return name
18855084b922 Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents: 3844
diff changeset
2333
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2334 problems = 0
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2335
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2336 # encoding
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2337 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
2338 try:
7948
de377b1a9a84 move encoding bits from util to encoding
Matt Mackall <mpm@selenic.com>
parents: 7942
diff changeset
2339 encoding.fromlocal("test")
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25658
diff changeset
2340 except util.Abort as inst:
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2341 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
2342 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
2343 problems += 1
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2344
20740
535283a7f5dd debuginstall: add Python information to debuginstall output (issue4128)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents: 20702
diff changeset
2345 # Python
20741
f1dfef0a9352 debuginstall: change showing to checking for consistency and future checking
Matt Mackall <mpm@selenic.com>
parents: 20740
diff changeset
2346 ui.status(_("checking Python executable (%s)\n") % sys.executable)
f1dfef0a9352 debuginstall: change showing to checking for consistency and future checking
Matt Mackall <mpm@selenic.com>
parents: 20740
diff changeset
2347 ui.status(_("checking Python version (%s)\n")
20740
535283a7f5dd debuginstall: add Python information to debuginstall output (issue4128)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents: 20702
diff changeset
2348 % ("%s.%s.%s" % sys.version_info[:3]))
17392
bdd248666dbc debuginstall: show directory for Python lib
Adrian Buehlmann <adrian@cadifra.com>
parents: 17386
diff changeset
2349 ui.status(_("checking Python lib (%s)...\n")
bdd248666dbc debuginstall: show directory for Python lib
Adrian Buehlmann <adrian@cadifra.com>
parents: 17386
diff changeset
2350 % os.path.dirname(os.__file__))
bdd248666dbc debuginstall: show directory for Python lib
Adrian Buehlmann <adrian@cadifra.com>
parents: 17386
diff changeset
2351
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2352 # compiled modules
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2353 ui.status(_("checking installed modules (%s)...\n")
12004
1fe4702fe2df debuginstall: report installpath
Matt Mackall <mpm@selenic.com>
parents: 11969
diff changeset
2354 % os.path.dirname(__file__))
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2355 try:
12004
1fe4702fe2df debuginstall: report installpath
Matt Mackall <mpm@selenic.com>
parents: 11969
diff changeset
2356 import bdiff, mpatch, base85, osutil
15223
fc035e5370ca pyflakes: clean up some import noise
Matt Mackall <mpm@selenic.com>
parents: 15221
diff changeset
2357 dir(bdiff), dir(mpatch), dir(base85), dir(osutil) # quiet pyflakes
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25658
diff changeset
2358 except Exception as inst:
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2359 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
2360 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
2361 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
2362 problems += 1
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2363
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2364 # templates
15200
797bf1dc1ff8 debuginstall: report the template path
Matt Mackall <mpm@selenic.com>
parents: 15198
diff changeset
2365 import templater
22634
e48a5d3996c2 templater: introduce templatepaths for getting paths searched for templates
Mads Kiilerich <madski@unity3d.com>
parents: 22626
diff changeset
2366 p = templater.templatepaths()
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2367 ui.status(_("checking templates (%s)...\n") % ' '.join(p))
20389
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2368 if p:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2369 m = templater.templatepath("map-cmdline.default")
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2370 if m:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2371 # template found, check if it is working
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2372 try:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2373 templater.templater(m)
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25658
diff changeset
2374 except Exception as inst:
20389
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2375 ui.write(" %s\n" % inst)
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2376 p = None
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2377 else:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2378 ui.write(_(" template 'default' not found\n"))
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2379 p = None
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2380 else:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2381 ui.write(_(" no template directories found\n"))
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2382 if not p:
3848
8cbf060f637e Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents: 3846
diff changeset
2383 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
2384 problems += 1
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2385
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2386 # editor
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2387 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
2388 editor = ui.geteditor()
24891
be4915009b09 debuginstall: expand the editor path before searching for it (issue4380)
Matt Harbison <matt_harbison@yahoo.com>
parents: 24873
diff changeset
2389 editor = util.expandpath(editor)
21957
2122b82b6987 debuginstall: handle quoted path for editor (issue4316)
Alexandre Garnier <zigarn@gmail.com>
parents: 21952
diff changeset
2390 cmdpath = util.findexe(shlex.split(editor)[0])
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2391 if not cmdpath:
3855
b9cdd6f2aa43 debuginstall: fix a copy/paste error
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3848
diff changeset
2392 if editor == 'vi':
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2393 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
2394 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
2395 " file)\n"))
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2396 else:
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2397 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
2398 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
2399 " file)\n"))
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2400 problems += 1
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2401
3848
8cbf060f637e Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents: 3846
diff changeset
2402 # check username
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2403 ui.status(_("checking username...\n"))
9734
36c388a1aa51 commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents: 9725
diff changeset
2404 try:
12063
516b000fbb7e cleanup: remove unused variables
Brodie Rao <brodie@bitheap.org>
parents: 12033
diff changeset
2405 ui.username()
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25658
diff changeset
2406 except util.Abort as e:
9734
36c388a1aa51 commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents: 9725
diff changeset
2407 ui.write(" %s\n" % e)
12083
ebfc46929f3e help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents: 12067
diff changeset
2408 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
2409 problems += 1
3848
8cbf060f637e Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents: 3846
diff changeset
2410
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2411 if not problems:
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2412 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
2413 else:
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2414 ui.write(_("%s problems detected,"
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2415 " please check your install!\n") % problems)
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2416
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2417 return problems
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2418
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2419 @command('debugknown', [], _('REPO ID...'), norepo=True)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2420 def debugknown(ui, repopath, *ids, **opts):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2421 """test whether node ids are known to a repo
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2422
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2423 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
2424 and 1s indicating unknown/known.
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2425 """
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
2426 repo = hg.peer(ui, opts, repopath)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2427 if not repo.capable('known'):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2428 raise util.Abort("known() not supported by target repository")
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2429 flags = repo.known([bin(s) for s in ids])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2430 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
2431
18790
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2432 @command('debuglabelcomplete', [], _('LABEL...'))
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2433 def debuglabelcomplete(ui, repo, *args):
23762
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2434 '''backwards compatibility with old bash completion scripts (DEPRECATED)'''
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2435 debugnamecomplete(ui, repo, *args)
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2436
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2437 @command('debugnamecomplete', [], _('NAME...'))
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2438 def debugnamecomplete(ui, repo, *args):
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2439 '''complete "names" - tags, open branch names, bookmark names'''
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2440
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2441 names = set()
23763
7ad155e13f0f debugnamecomplete: use new name api
Sean Farley <sean.michael.farley@gmail.com>
parents: 23762
diff changeset
2442 # since we previously only listed open branches, we will handle that
7ad155e13f0f debugnamecomplete: use new name api
Sean Farley <sean.michael.farley@gmail.com>
parents: 23762
diff changeset
2443 # specially (after this for loop)
7ad155e13f0f debugnamecomplete: use new name api
Sean Farley <sean.michael.farley@gmail.com>
parents: 23762
diff changeset
2444 for name, ns in repo.names.iteritems():
7ad155e13f0f debugnamecomplete: use new name api
Sean Farley <sean.michael.farley@gmail.com>
parents: 23762
diff changeset
2445 if name != 'branches':
7ad155e13f0f debugnamecomplete: use new name api
Sean Farley <sean.michael.farley@gmail.com>
parents: 23762
diff changeset
2446 names.update(ns.listnames(repo))
23762
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2447 names.update(tag for (tag, heads, tip, closed)
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2448 in repo.branchmap().iterbranches() if not closed)
18790
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2449 completions = set()
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2450 if not args:
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2451 args = ['']
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2452 for a in args:
23762
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2453 completions.update(n for n in names if n.startswith(a))
18790
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2454 ui.write('\n'.join(sorted(completions)))
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2455 ui.write('\n')
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2456
22559
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2457 @command('debuglocks',
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2458 [('L', 'force-lock', None, _('free the store lock (DANGEROUS)')),
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2459 ('W', 'force-wlock', None,
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2460 _('free the working state lock (DANGEROUS)'))],
23123
c26b7a810749 debuglocks: add missing usage summary
Matt Mackall <mpm@selenic.com>
parents: 23122
diff changeset
2461 _('[OPTION]...'))
22559
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2462 def debuglocks(ui, repo, **opts):
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2463 """show or modify state of locks
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2464
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2465 By default, this command will show which locks are held. This
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2466 includes the user and process holding the lock, the amount of time
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2467 the lock has been held, and the machine name where the process is
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2468 running if it's not local.
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2469
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2470 Locks protect the integrity of Mercurial's data, so should be
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2471 treated with care. System crashes or other interruptions may cause
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2472 locks to not be properly released, though Mercurial will usually
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2473 detect and remove such stale locks automatically.
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2474
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2475 However, detecting stale locks may not always be possible (for
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2476 instance, on a shared filesystem). Removing locks may also be
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2477 blocked by filesystem permissions.
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2478
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2479 Returns 0 if no locks are held.
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2480
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2481 """
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2482
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2483 if opts.get('force_lock'):
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2484 repo.svfs.unlink('lock')
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2485 if opts.get('force_wlock'):
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2486 repo.vfs.unlink('wlock')
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2487 if opts.get('force_lock') or opts.get('force_lock'):
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2488 return 0
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2489
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2490 now = time.time()
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2491 held = 0
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2492
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2493 def report(vfs, name, method):
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2494 # this causes stale locks to get reaped for more accurate reporting
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2495 try:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2496 l = method(False)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2497 except error.LockHeld:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2498 l = None
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2499
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2500 if l:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2501 l.release()
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2502 else:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2503 try:
24820
6a6b69d9e539 debuglock: access the lock file using the proper vfs
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 24819
diff changeset
2504 stat = vfs.lstat(name)
22559
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2505 age = now - stat.st_mtime
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2506 user = util.username(stat.st_uid)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2507 locker = vfs.readlock(name)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2508 if ":" in locker:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2509 host, pid = locker.split(':')
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2510 if host == socket.gethostname():
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2511 locker = 'user %s, process %s' % (user, pid)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2512 else:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2513 locker = 'user %s, process %s, host %s' \
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2514 % (user, pid, host)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2515 ui.write("%-6s %s (%ds)\n" % (name + ":", locker, age))
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2516 return 1
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25658
diff changeset
2517 except OSError as e:
22559
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2518 if e.errno != errno.ENOENT:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2519 raise
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2520
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2521 ui.write("%-6s free\n" % (name + ":"))
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2522 return 0
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2523
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2524 held += report(repo.svfs, "lock", repo.lock)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2525 held += report(repo.vfs, "wlock", repo.wlock)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2526
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2527 return held
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2528
17830
1cb51d65453d debugobsolete: add --flags option
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 17822
diff changeset
2529 @command('debugobsolete',
1cb51d65453d debugobsolete: add --flags option
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 17822
diff changeset
2530 [('', 'flags', 0, _('markers flag')),
22272
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2531 ('', 'record-parents', False,
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2532 _('record parent information for the precursor')),
22274
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2533 ('r', 'rev', [], _('display markers relevant to REV')),
17830
1cb51d65453d debugobsolete: add --flags option
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 17822
diff changeset
2534 ] + commitopts2,
17074
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2535 _('[OBSOLETED [REPLACEMENT] [REPL... ]'))
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2536 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
2537 """create arbitrary obsolete marker
d4a79e075303 debugobsolete: improve command help
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 18479
diff changeset
2538
18854
afab180307be commands: fix typo in debugobsolete docstring
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 18701
diff changeset
2539 With no arguments, displays the list of obsolescence markers."""
21789
15baed3f24ee branchmap: don't use ui.warn for debug message
Matt Mackall <mpm@selenic.com>
parents: 21778
diff changeset
2540
17292
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2541 def parsenodeid(s):
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2542 try:
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2543 # 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
2544 # 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
2545 # local repository.
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2546 n = bin(s)
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2547 if len(n) != len(nullid):
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2548 raise TypeError()
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2549 return n
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2550 except TypeError:
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2551 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
2552 'node identifiers')
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2553
17074
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2554 if precursor is not None:
22274
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2555 if opts['rev']:
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2556 raise util.Abort('cannot select revision when creating marker')
17074
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2557 metadata = {}
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2558 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
2559 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
2560 l = repo.lock()
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2561 try:
17126
8fa8717b47b6 obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 17123
diff changeset
2562 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
2563 try:
25082
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2564 date = opts.get('date')
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2565 if date:
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2566 date = util.parsedate(date)
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2567 else:
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2568 date = None
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2569 prec = parsenodeid(precursor)
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2570 parents = None
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2571 if opts['record_parents']:
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2572 if prec not in repo.unfiltered():
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2573 raise util.Abort('cannot used --record-parents on '
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2574 'unknown changesets')
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2575 parents = repo.unfiltered()[prec].parents()
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2576 parents = tuple(p.node() for p in parents)
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2577 repo.obsstore.create(tr, prec, succs, opts['flags'],
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2578 parents=parents, date=date,
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2579 metadata=metadata)
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2580 tr.close()
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25658
diff changeset
2581 except ValueError as exc:
25082
e30b66bb7d4d commands: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents: 24994
diff changeset
2582 raise util.Abort(_('bad obsmarker input: %s') % exc)
17126
8fa8717b47b6 obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 17123
diff changeset
2583 finally:
8fa8717b47b6 obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 17123
diff changeset
2584 tr.release()
17074
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2585 finally:
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2586 l.release()
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2587 else:
22274
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2588 if opts['rev']:
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2589 revs = scmutil.revrange(repo, opts['rev'])
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2590 nodes = [repo[r].node() for r in revs]
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2591 markers = list(obsolete.getmarkers(repo, nodes=nodes))
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2592 markers.sort(key=lambda x: x._data)
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2593 else:
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2594 markers = obsolete.getmarkers(repo)
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2595
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2596 for m in markers:
20470
78f4c2b7052f debugobsolete: extract marker display in a dedicated function
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 20404
diff changeset
2597 cmdutil.showmarker(ui, m)
17071
11f26e2669aa command: creation of obsolete marker
Pierre-Yves.David@ens-lyon.org
parents: 17059
diff changeset
2598
18792
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2599 @command('debugpathcomplete',
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2600 [('f', 'full', None, _('complete an entire path')),
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2601 ('n', 'normal', None, _('show only normal files')),
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2602 ('a', 'added', None, _('show only added files')),
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2603 ('r', 'removed', None, _('show only removed files'))],
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2604 _('FILESPEC...'))
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2605 def debugpathcomplete(ui, repo, *specs, **opts):
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2606 '''complete part or all of a tracked path
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2607
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2608 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
2609 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
2610
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2611 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
2612 --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
2613
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2614 def complete(path, acceptable):
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2615 dirstate = repo.dirstate
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2616 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
2617 rootdir = repo.root + os.sep
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2618 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
2619 return [], []
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2620 if os.path.isdir(spec):
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2621 spec += '/'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2622 spec = spec[len(rootdir):]
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2623 fixpaths = os.sep != '/'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2624 if fixpaths:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2625 spec = spec.replace(os.sep, '/')
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2626 speclen = len(spec)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2627 fullpaths = opts['full']
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2628 files, dirs = set(), set()
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2629 adddir, addfile = dirs.add, files.add
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2630 for f, st in dirstate.iteritems():
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2631 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
2632 if fixpaths:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2633 f = f.replace('/', os.sep)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2634 if fullpaths:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2635 addfile(f)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2636 continue
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2637 s = f.find(os.sep, speclen)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2638 if s >= 0:
20136
1df77035c814 pathcomplete: remove ambiguous entries for sole completion on a directory
Sean Farley <sean.michael.farley@gmail.com>
parents: 20108
diff changeset
2639 adddir(f[:s])
18792
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2640 else:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2641 addfile(f)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2642 return files, dirs
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2643
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2644 acceptable = ''
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2645 if opts['normal']:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2646 acceptable += 'nm'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2647 if opts['added']:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2648 acceptable += 'a'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2649 if opts['removed']:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2650 acceptable += 'r'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2651 cwd = repo.getcwd()
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2652 if not specs:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2653 specs = ['.']
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2654
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2655 files, dirs = set(), set()
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2656 for spec in specs:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2657 f, d = complete(spec, acceptable or 'nmar')
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2658 files.update(f)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2659 dirs.update(d)
18796
fa6d5c62f3bd pathcomplete: complete directories more conservatively
Bryan O'Sullivan <bryano@fb.com>
parents: 18792
diff changeset
2660 files.update(dirs)
18792
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2661 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
2662 ui.write('\n')
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2663
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2664 @command('debugpushkey', [], _('REPO NAMESPACE [KEY OLD NEW]'), norepo=True)
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
2665 def debugpushkey(ui, repopath, namespace, *keyinfo, **opts):
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2666 '''access the pushkey key/value protocol
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2667
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2668 With two args, list the keys in the given namespace.
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2669
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2670 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
2671 Reports success or failure.
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2672 '''
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2673
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
2674 target = hg.peer(ui, {}, repopath)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2675 if keyinfo:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2676 key, old, new = keyinfo
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2677 r = target.pushkey(namespace, key, old, new)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2678 ui.status(str(r) + '\n')
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2679 return not r
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2680 else:
18255
7ca534f31a83 debugpushkey: list keys sorted
Mads Kiilerich <mads at kiilerich.com>
parents: 18254
diff changeset
2681 for k, v in sorted(target.listkeys(namespace).iteritems()):
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2682 ui.write("%s\t%s\n" % (k.encode('string-escape'),
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2683 v.encode('string-escape')))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2684
16249
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2685 @command('debugpvec', [], _('A B'))
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2686 def debugpvec(ui, repo, a, b=None):
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2687 ca = scmutil.revsingle(repo, a)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2688 cb = scmutil.revsingle(repo, b)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2689 pa = pvec.ctxpvec(ca)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2690 pb = pvec.ctxpvec(cb)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2691 if pa == pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2692 rel = "="
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2693 elif pa > pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2694 rel = ">"
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2695 elif pa < pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2696 rel = "<"
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2697 elif pa | pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2698 rel = "|"
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2699 ui.write(_("a: %s\n") % pa)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2700 ui.write(_("b: %s\n") % pb)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2701 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
2702 ui.write(_("delta: %d hdist: %d distance: %d relation: %s\n") %
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2703 (abs(pa._depth - pb._depth), pvec._hamming(pa._vec, pb._vec),
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2704 pa.distance(pb), rel))
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2705
18963
c31b8dc9de67 debugrebuildstate: rename to debugrebuilddirstate
Mads Kiilerich <madski@unity3d.com>
parents: 18962
diff changeset
2706 @command('debugrebuilddirstate|debugrebuildstate',
26024
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2707 [('r', 'rev', '', _('revision to rebuild to'), _('REV')),
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2708 ('', 'minimal', None, _('only rebuild files that are inconsistent with '
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2709 'the working copy parent')),
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2710 ],
18961
cd1ac2e54847 debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents: 18956
diff changeset
2711 _('[-r REV]'))
26024
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2712 def debugrebuilddirstate(ui, repo, rev, **opts):
18961
cd1ac2e54847 debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents: 18956
diff changeset
2713 """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
2714
cd1ac2e54847 debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents: 18956
diff changeset
2715 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
2716
cd1ac2e54847 debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents: 18956
diff changeset
2717 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
2718 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
2719 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
2720
26024
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2721 ``minimal`` will only rebuild the dirstate status for files that claim to be
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2722 tracked but are not in the parent manifest, or that exist in the parent
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2723 manifest but are not in the dirstate. It will not change adds, removes, or
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2724 modified files that are in the working copy parent.
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2725
18961
cd1ac2e54847 debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents: 18956
diff changeset
2726 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
2727 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
2728 """
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
2729 ctx = scmutil.revsingle(repo, rev)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2730 wlock = repo.wlock()
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2731 try:
26024
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2732 dirstate = repo.dirstate
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2733
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2734 # See command doc for what minimal does.
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2735 if opts.get('minimal'):
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2736 dirstatefiles = set(dirstate)
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2737 ctxfiles = set(ctx.manifest().keys())
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2738 for file in (dirstatefiles | ctxfiles):
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2739 indirstate = file in dirstatefiles
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2740 inctx = file in ctxfiles
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2741
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2742 if indirstate and not inctx and dirstate[file] != 'a':
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2743 dirstate.drop(file)
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2744 elif inctx and not indirstate:
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2745 dirstate.normallookup(file)
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2746 else:
84c00f03e06c dirstate: add --minimal flag to debugrebuilddirstate
Durham Goode <durham@fb.com>
parents: 25931
diff changeset
2747 dirstate.rebuild(ctx.node(), ctx.manifest())
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2748 finally:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2749 wlock.release()
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2750
25652
2882d6886919 repair: add functionality to rebuild fncache
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25651
diff changeset
2751 @command('debugrebuildfncache', [], '')
2882d6886919 repair: add functionality to rebuild fncache
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25651
diff changeset
2752 def debugrebuildfncache(ui, repo):
2882d6886919 repair: add functionality to rebuild fncache
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25651
diff changeset
2753 """rebuild the fncache file"""
2882d6886919 repair: add functionality to rebuild fncache
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25651
diff changeset
2754 repair.rebuildfncache(ui, repo)
2882d6886919 repair: add functionality to rebuild fncache
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25651
diff changeset
2755
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2756 @command('debugrename',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2757 [('r', 'rev', '', _('revision to debug'), _('REV'))],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2758 _('[-r REV] FILE'))
3652
f4dece0f7016 refactor debugrenamed
Matt Mackall <mpm@selenic.com>
parents: 3651
diff changeset
2759 def debugrename(ui, repo, file1, *pats, **opts):
1194
c165cbf56bb1 Add doc string for debugrename.
bos@serpentine.internal.keyresearch.com
parents: 1193
diff changeset
2760 """dump rename information"""
3652
f4dece0f7016 refactor debugrenamed
Matt Mackall <mpm@selenic.com>
parents: 3651
diff changeset
2761
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
2762 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
2763 m = scmutil.match(ctx, (file1,) + pats, opts)
6764
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
2764 for abs in ctx.walk(m):
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
2765 fctx = ctx[abs]
6579
0159b7a36184 walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents: 6578
diff changeset
2766 o = fctx.filelog().renamed(fctx.filenode())
6584
29c77e5dfb3c walk: remove rel and exact returns
Matt Mackall <mpm@selenic.com>
parents: 6583
diff changeset
2767 rel = m.rel(abs)
6579
0159b7a36184 walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents: 6578
diff changeset
2768 if o:
0159b7a36184 walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents: 6578
diff changeset
2769 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
2770 else:
f4dece0f7016 refactor debugrenamed
Matt Mackall <mpm@selenic.com>
parents: 3651
diff changeset
2771 ui.write(_("%s not renamed\n") % rel)
1116
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
2772
14323
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2773 @command('debugrevlog',
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2774 [('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
2775 ('m', 'manifest', False, _('open manifest')),
25119
49c583ca48c4 treemanifest: add --dir option to debug{revlog,data,index}
Martin von Zweigbergk <martinvonz@google.com>
parents: 25111
diff changeset
2776 ('', 'dir', False, _('open directory manifest')),
14326
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2777 ('d', 'dump', False, _('dump index data'))],
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2778 _('-c|-m|FILE'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2779 optionalrepo=True)
19872
681f7b9213a4 check-code: check for spaces around = for named parameters
Mads Kiilerich <madski@unity3d.com>
parents: 19801
diff changeset
2780 def debugrevlog(ui, repo, file_=None, **opts):
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2781 """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
2782 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
2783
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2784 if opts.get("dump"):
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2785 numrevs = len(r)
21032
67b6f1144e90 debugrevlog: format columns (more) nicely when dumping index data
Mads Kiilerich <madski@unity3d.com>
parents: 21021
diff changeset
2786 ui.write("# rev p1rev p2rev start end deltastart base p1 p2"
22311
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2787 " rawsize totalsize compression heads chainlen\n")
14326
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2788 ts = 0
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2789 heads = set()
22311
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2790
14326
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2791 for rev in xrange(numrevs):
14371
ec2aae8b375d revlog: drop base() again
Matt Mackall <mpm@selenic.com>
parents: 14363
diff changeset
2792 dbase = r.deltaparent(rev)
ec2aae8b375d revlog: drop base() again
Matt Mackall <mpm@selenic.com>
parents: 14363
diff changeset
2793 if dbase == -1:
ec2aae8b375d revlog: drop base() again
Matt Mackall <mpm@selenic.com>
parents: 14363
diff changeset
2794 dbase = rev
23254
d23834b871ac debugrevlog: fix computing chain length in debugrevlog -d
Mateusz Kwapich <mitrandir@fb.com>
parents: 23137
diff changeset
2795 cbase = r.chainbase(rev)
d23834b871ac debugrevlog: fix computing chain length in debugrevlog -d
Mateusz Kwapich <mitrandir@fb.com>
parents: 23137
diff changeset
2796 clen = r.chainlen(rev)
14326
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2797 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
2798 rs = r.rawsize(rev)
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2799 ts = ts + rs
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2800 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
2801 heads.add(rev)
22311
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2802 ui.write("%5d %5d %5d %5d %5d %10d %4d %4d %4d %7d %9d "
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2803 "%11d %5d %8d\n" %
14326
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2804 (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
2805 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
2806 r.start(p1), r.start(p2),
22311
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2807 rs, ts, ts / r.end(rev), len(heads), clen))
14326
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2808 return 0
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2809
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2810 v = r.version
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2811 format = v & 0xFFFF
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2812 flags = []
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2813 gdelta = False
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2814 if v & revlog.REVLOGNGINLINEDATA:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2815 flags.append('inline')
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2816 if v & revlog.REVLOGGENERALDELTA:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2817 gdelta = True
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2818 flags.append('generaldelta')
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2819 if not flags:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2820 flags = ['(none)']
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2821
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2822 nummerges = 0
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2823 numfull = 0
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2824 numprev = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2825 nump1 = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2826 nump2 = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2827 numother = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2828 nump1prev = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2829 nump2prev = 0
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2830 chainlengths = []
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2831
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2832 datasize = [None, 0, 0L]
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2833 fullsize = [None, 0, 0L]
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2834 deltasize = [None, 0, 0L]
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2835
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2836 def addsize(size, l):
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2837 if l[0] is None or size < l[0]:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2838 l[0] = size
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2839 if size > l[1]:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2840 l[1] = size
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2841 l[2] += size
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2842
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2843 numrevs = len(r)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2844 for rev in xrange(numrevs):
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2845 p1, p2 = r.parentrevs(rev)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2846 delta = r.deltaparent(rev)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2847 if format > 0:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2848 addsize(r.rawsize(rev), datasize)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2849 if p2 != nullrev:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2850 nummerges += 1
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2851 size = r.length(rev)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2852 if delta == nullrev:
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2853 chainlengths.append(0)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2854 numfull += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2855 addsize(size, fullsize)
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2856 else:
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2857 chainlengths.append(chainlengths[delta] + 1)
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2858 addsize(size, deltasize)
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2859 if delta == rev - 1:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2860 numprev += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2861 if delta == p1:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2862 nump1prev += 1
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2863 elif delta == p2:
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2864 nump2prev += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2865 elif delta == p1:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2866 nump1 += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2867 elif delta == p2:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2868 nump2 += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2869 elif delta != nullrev:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2870 numother += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2871
17188
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2872 # Adjust size min value for empty cases
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2873 for size in (datasize, fullsize, deltasize):
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2874 if size[0] is None:
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2875 size[0] = 0
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2876
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2877 numdeltas = numrevs - numfull
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2878 numoprev = numprev - nump1prev - nump2prev
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2879 totalrawsize = datasize[2]
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2880 datasize[2] /= numrevs
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2881 fulltotal = fullsize[2]
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2882 fullsize[2] /= numfull
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2883 deltatotal = deltasize[2]
17188
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2884 if numrevs - numfull > 0:
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2885 deltasize[2] /= numrevs - numfull
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2886 totalsize = fulltotal + deltatotal
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2887 avgchainlen = sum(chainlengths) / numrevs
24503
944749de6f3a commands.debugrevlog: report max chain length
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24473
diff changeset
2888 maxchainlen = max(chainlengths)
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2889 compratio = totalrawsize / totalsize
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2890
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2891 basedfmtstr = '%%%dd\n'
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2892 basepcfmtstr = '%%%dd %s(%%5.2f%%%%)\n'
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2893
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2894 def dfmtstr(max):
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2895 return basedfmtstr % len(str(max))
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2896 def pcfmtstr(max, padding=0):
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2897 return basepcfmtstr % (len(str(max)), ' ' * padding)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2898
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2899 def pcfmt(value, total):
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2900 return (value, 100 * float(value) / total)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2901
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2902 ui.write(('format : %d\n') % format)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2903 ui.write(('flags : %s\n') % ', '.join(flags))
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2904
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2905 ui.write('\n')
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2906 fmt = pcfmtstr(totalsize)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2907 fmt2 = dfmtstr(totalsize)
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2908 ui.write(('revisions : ') + fmt2 % numrevs)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2909 ui.write((' merges : ') + fmt % pcfmt(nummerges, numrevs))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2910 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
2911 ui.write(('revisions : ') + fmt2 % numrevs)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2912 ui.write((' full : ') + fmt % pcfmt(numfull, numrevs))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2913 ui.write((' deltas : ') + fmt % pcfmt(numdeltas, numrevs))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2914 ui.write(('revision size : ') + fmt2 % totalsize)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2915 ui.write((' full : ') + fmt % pcfmt(fulltotal, totalsize))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2916 ui.write((' deltas : ') + fmt % pcfmt(deltatotal, totalsize))
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2917
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2918 ui.write('\n')
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2919 fmt = dfmtstr(max(avgchainlen, compratio))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2920 ui.write(('avg chain length : ') + fmt % avgchainlen)
24503
944749de6f3a commands.debugrevlog: report max chain length
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24473
diff changeset
2921 ui.write(('max chain length : ') + fmt % maxchainlen)
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2922 ui.write(('compression ratio : ') + fmt % compratio)
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2923
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2924 if format > 0:
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2925 ui.write('\n')
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2926 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
2927 % tuple(datasize))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2928 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
2929 % tuple(fullsize))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2930 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
2931 % tuple(deltasize))
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2932
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2933 if numdeltas > 0:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2934 ui.write('\n')
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2935 fmt = pcfmtstr(numdeltas)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2936 fmt2 = pcfmtstr(numdeltas, 4)
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2937 ui.write(('deltas against prev : ') + fmt % pcfmt(numprev, numdeltas))
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2938 if numprev > 0:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2939 ui.write((' where prev = p1 : ') + fmt2 % pcfmt(nump1prev,
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2940 numprev))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2941 ui.write((' where prev = p2 : ') + fmt2 % pcfmt(nump2prev,
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2942 numprev))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2943 ui.write((' other : ') + fmt2 % pcfmt(numoprev,
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2944 numprev))
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2945 if gdelta:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2946 ui.write(('deltas against p1 : ')
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2947 + fmt % pcfmt(nump1, numdeltas))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2948 ui.write(('deltas against p2 : ')
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2949 + fmt % pcfmt(nump2, numdeltas))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2950 ui.write(('deltas against other : ') + fmt % pcfmt(numother,
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2951 numdeltas))
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2952
20497
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2953 @command('debugrevspec',
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2954 [('', 'optimize', None, _('print parsed tree after optimizing'))],
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2955 ('REVSPEC'))
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2956 def debugrevspec(ui, repo, expr, **opts):
16104
5535e66b3016 debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents: 16097
diff changeset
2957 """parse and apply a revision specification
5535e66b3016 debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents: 16097
diff changeset
2958
5535e66b3016 debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents: 16097
diff changeset
2959 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
2960 expansion.
5535e66b3016 debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents: 16097
diff changeset
2961 """
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2962 if ui.verbose:
25901
0203c50a589f debugrevspec: pass lookup function to visualize fallback mechanism
Yuya Nishihara <yuya@tcha.org>
parents: 25796
diff changeset
2963 tree = revset.parse(expr, lookup=repo.__contains__)
16218
81a1a00f5738 debugrevspec: pretty print output
Patrick Mezard <patrick@mezard.eu>
parents: 16192
diff changeset
2964 ui.note(revset.prettyformat(tree), "\n")
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2965 newtree = revset.findaliases(ui, tree)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2966 if newtree != tree:
16218
81a1a00f5738 debugrevspec: pretty print output
Patrick Mezard <patrick@mezard.eu>
parents: 16192
diff changeset
2967 ui.note(revset.prettyformat(newtree), "\n")
23742
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23690
diff changeset
2968 tree = newtree
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23690
diff changeset
2969 newtree = revset.foldconcat(tree)
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23690
diff changeset
2970 if newtree != tree:
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23690
diff changeset
2971 ui.note(revset.prettyformat(newtree), "\n")
20497
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2972 if opts["optimize"]:
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2973 weight, optimizedtree = revset.optimize(newtree, True)
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2974 ui.note("* optimized:\n", revset.prettyformat(optimizedtree), "\n")
25901
0203c50a589f debugrevspec: pass lookup function to visualize fallback mechanism
Yuya Nishihara <yuya@tcha.org>
parents: 25796
diff changeset
2975 func = revset.match(ui, expr, repo)
24458
7d87f672d069 debugrevspec: show nesting structure of smartsets if verbose
Yuya Nishihara <yuya@tcha.org>
parents: 24456
diff changeset
2976 revs = func(repo)
7d87f672d069 debugrevspec: show nesting structure of smartsets if verbose
Yuya Nishihara <yuya@tcha.org>
parents: 24456
diff changeset
2977 if ui.verbose:
7d87f672d069 debugrevspec: show nesting structure of smartsets if verbose
Yuya Nishihara <yuya@tcha.org>
parents: 24456
diff changeset
2978 ui.note("* set:\n", revset.prettyformatset(revs), "\n")
7d87f672d069 debugrevspec: show nesting structure of smartsets if verbose
Yuya Nishihara <yuya@tcha.org>
parents: 24456
diff changeset
2979 for c in revs:
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2980 ui.write("%s\n" % c)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2981
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2982 @command('debugsetparents', [], _('REV1 [REV2]'))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2983 def debugsetparents(ui, repo, rev1, rev2=None):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2984 """manually set the parents of the current working directory
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2985
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2986 This is useful for writing repository conversion tools, but should
24364
135b23868f45 commands: replace "working copy" with "working directory" in help/messages
Yuya Nishihara <yuya@tcha.org>
parents: 24359
diff changeset
2987 be used with care. For example, neither the working directory nor the
135b23868f45 commands: replace "working copy" with "working directory" in help/messages
Yuya Nishihara <yuya@tcha.org>
parents: 24359
diff changeset
2988 dirstate is updated, so file status may be incorrect after running this
135b23868f45 commands: replace "working copy" with "working directory" in help/messages
Yuya Nishihara <yuya@tcha.org>
parents: 24359
diff changeset
2989 command.
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2990
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2991 Returns 0 on success.
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2992 """
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2993
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
2994 r1 = scmutil.revsingle(repo, rev1).node()
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
2995 r2 = scmutil.revsingle(repo, rev2, 'null').node()
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2996
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2997 wlock = repo.wlock()
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2998 try:
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
2999 repo.dirstate.beginparentchange()
16551
ebf6d38c9063 localrepo: add setparents() to adjust dirstate copies (issue3407)
Patrick Mezard <patrick@mezard.eu>
parents: 16505
diff changeset
3000 repo.setparents(r1, r2)
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
3001 repo.dirstate.endparentchange()
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3002 finally:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3003 wlock.release()
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3004
18962
c0b2cb62067f debugstate: rename to debugdirstate
Mads Kiilerich <madski@unity3d.com>
parents: 18961
diff changeset
3005 @command('debugdirstate|debugstate',
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3006 [('', 'nodates', None, _('do not display the saved mtime')),
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3007 ('', 'datesort', None, _('sort by saved mtime'))],
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3008 _('[OPTION]...'))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3009 def debugstate(ui, repo, nodates=None, datesort=None):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3010 """show the contents of the current dirstate"""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3011 timestr = ""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3012 if datesort:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3013 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
3014 else:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3015 keyfunc = None # sort by filename
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3016 for file_, ent in sorted(repo.dirstate._map.iteritems(), key=keyfunc):
23840
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 23839
diff changeset
3017 if ent[3] == -1:
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 23839
diff changeset
3018 timestr = 'unset '
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 23839
diff changeset
3019 elif nodates:
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 23839
diff changeset
3020 timestr = 'set '
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 23839
diff changeset
3021 else:
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 23839
diff changeset
3022 timestr = time.strftime("%Y-%m-%d %H:%M:%S ",
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 23839
diff changeset
3023 time.localtime(ent[3]))
25658
e93036747902 global: mass rewrite to use modern octal syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25652
diff changeset
3024 if ent[1] & 0o20000:
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3025 mode = 'lnk'
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3026 else:
25658
e93036747902 global: mass rewrite to use modern octal syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25652
diff changeset
3027 mode = '%3o' % (ent[1] & 0o777 & ~util.umask)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3028 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
3029 for f in repo.dirstate.copies():
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3030 ui.write(_("copy: %s -> %s\n") % (repo.dirstate.copied(f), f))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3031
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3032 @command('debugsub',
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3033 [('r', 'rev', '',
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3034 _('revision to check'), _('REV'))],
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3035 _('[-r REV] [REV]'))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3036 def debugsub(ui, repo, rev=None):
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
3037 ctx = scmutil.revsingle(repo, rev, None)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3038 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
3039 ui.write(('path %s\n') % k)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
3040 ui.write((' source %s\n') % v[0])
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
3041 ui.write((' revision %s\n') % v[1])
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3042
18068
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3043 @command('debugsuccessorssets',
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3044 [],
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3045 _('[REV]'))
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3046 def debugsuccessorssets(ui, repo, *revs):
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3047 """show set of successors for revision
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3048
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3049 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
3050 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
3051
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3052 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
3053 successor (changeset A replaced by A').
18068
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3054
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3055 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
3056 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
3057
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3058 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
3059 more than one successor.
18068
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3060
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3061 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
3062 "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
3063 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
3064
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3065 Results are displayed as follows::
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3066
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3067 <rev1>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3068 <successors-1A>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3069 <rev2>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3070 <successors-2A>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3071 <successors-2B1> <successors-2B2> <successors-2B3>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3072
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3073 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
3074 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
3075 been split).
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3076 """
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3077 # 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
3078 cache = {}
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3079 ctx2str = str
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3080 node2str = short
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3081 if ui.debug():
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3082 def ctx2str(ctx):
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3083 return ctx.hex()
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3084 node2str = hex
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3085 for rev in scmutil.revrange(repo, revs):
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3086 ctx = repo[rev]
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3087 ui.write('%s\n'% ctx2str(ctx))
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3088 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
3089 if succsset:
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3090 ui.write(' ')
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3091 ui.write(node2str(succsset[0]))
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3092 for node in succsset[1:]:
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3093 ui.write(' ')
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3094 ui.write(node2str(node))
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3095 ui.write('\n')
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3096
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3097 @command('debugwalk', walkopts, _('[OPTION]... [FILE]...'), inferrepo=True)
820
89985a1b3427 Clean up walk and changes code to use normalised names properly.
Bryan O'Sullivan <bos@serpentine.com>
parents: 815
diff changeset
3098 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
3099 """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
3100 m = scmutil.match(repo[None], pats, opts)
6585
d3d1d39da2fa walk: remove cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents: 6584
diff changeset
3101 items = list(repo.walk(m))
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3102 if not items:
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3103 return
16953
634ad0b24ba2 debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents: 16949
diff changeset
3104 f = lambda fn: fn
634ad0b24ba2 debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents: 16949
diff changeset
3105 if ui.configbool('ui', 'slash') and os.sep != '/':
634ad0b24ba2 debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents: 16949
diff changeset
3106 f = lambda fn: util.normpath(fn)
6586
d3463007d368 walk: return a single value
Matt Mackall <mpm@selenic.com>
parents: 6585
diff changeset
3107 fmt = 'f %%-%ds %%-%ds %%s' % (
d3463007d368 walk: return a single value
Matt Mackall <mpm@selenic.com>
parents: 6585
diff changeset
3108 max([len(abs) for abs in items]),
d3463007d368 walk: return a single value
Matt Mackall <mpm@selenic.com>
parents: 6585
diff changeset
3109 max([len(m.rel(abs)) for abs in items]))
d3463007d368 walk: return a single value
Matt Mackall <mpm@selenic.com>
parents: 6585
diff changeset
3110 for abs in items:
16953
634ad0b24ba2 debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents: 16949
diff changeset
3111 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
3112 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
3113
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3114 @command('debugwireargs',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3115 [('', 'three', '', 'three'),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3116 ('', 'four', '', 'four'),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3117 ('', 'five', '', 'five'),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3118 ] + remoteopts,
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
3119 _('REPO [OPTIONS]... [ONE [TWO]]'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
3120 norepo=True)
13720
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
3121 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
3122 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
3123 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
3124 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
3125 args = {}
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
3126 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
3127 if v:
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
3128 args[k] = v
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
3129 # 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
3130 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
3131 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
3132 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
3133 if res1 != res2:
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
3134 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
3135
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3136 @command('^diff',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3137 [('r', 'rev', [], _('revision'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3138 ('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
3139 ] + diffopts + diffopts2 + walkopts + subrepoopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3140 _('[OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3141 inferrepo=True)
732
ba0b6d17a6de Convert diff command over to using walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 731
diff changeset
3142 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
3143 """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
3144
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3145 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
3146
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3147 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
3148
12389
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
3149 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
3150
12389
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
3151 diff may generate unexpected results for merges, as it will
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
3152 default to comparing against the working directory's first
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
3153 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
3154
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3155 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
3156 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
3157 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
3158 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
3159 to its parent.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3160
10527
9c0ba837dc65 commands: correct diff -c explanation
timeless <timeless@mozdev.org>
parents: 10520
diff changeset
3161 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
3162 the changes in that changeset relative to its first parent.
10520
75361931884d commands: mention diff -c
timeless <timeless@mozdev.org>
parents: 10515
diff changeset
3163
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3164 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
3165 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
3166 anyway, probably with undesirable results.
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3167
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3168 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
3169 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
3170
15110
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3171 .. container:: verbose
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3172
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3173 Examples:
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3174
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3175 - 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
3176
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3177 hg diff foo.c
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3178
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3179 - compare two historical versions of a directory, with rename info::
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3180
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3181 hg diff --git -r 1.0:1.2 lib/
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3182
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3183 - 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
3184
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3185 hg diff --stat -r "date('may 2')"
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3186
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3187 - diff all newly-added files that contain a keyword::
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3188
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3189 hg diff "set:added() and grep(GNU)"
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3190
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3191 - compare a revision and its parents::
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3192
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3193 hg diff -c 9353 # compare against first parent
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3194 hg diff -r 9353^:9353 # same using revset syntax
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3195 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
3196
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3197 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3198 """
7628
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3199
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3200 revs = opts.get('rev')
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3201 change = opts.get('change')
9640
9e76232fbfbe diff: add --stat for diffstat output
Brodie Rao <me+hg@dackz.net>
parents: 9636
diff changeset
3202 stat = opts.get('stat')
9857
24bc6e414610 diff: change --inverse to --reverse
Martin Geisler <mg@lazybytes.net>
parents: 9839
diff changeset
3203 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
3204
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3205 if revs and change:
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3206 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
3207 raise util.Abort(msg)
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3208 elif change:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
3209 node2 = scmutil.revsingle(repo, change, None).node()
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
3210 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
3211 else:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
3212 node1, node2 = scmutil.revpair(repo, revs)
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
3213
9857
24bc6e414610 diff: change --inverse to --reverse
Martin Geisler <mg@lazybytes.net>
parents: 9839
diff changeset
3214 if reverse:
9725
3f522d2fa633 diff: add --inverse option
Yannick Gingras <ygingras@ygingras.net>
parents: 9718
diff changeset
3215 node1, node2 = node2, node1
3f522d2fa633 diff: add --inverse option
Yannick Gingras <ygingras@ygingras.net>
parents: 9718
diff changeset
3216
23456
e1086c7dd3c4 diff: explicitly honor all diffopts
Siddharth Agarwal <sid0@fb.com>
parents: 23455
diff changeset
3217 diffopts = patch.diffallopts(ui, opts)
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
3218 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
3219 cmdutil.diffordiffstat(ui, repo, diffopts, node1, node2, m, stat=stat,
24432
e22248f6d257 commands.diff: add support for diffs relative to a subdirectory
Siddharth Agarwal <sid0@fb.com>
parents: 24429
diff changeset
3220 listsubrepos=opts.get('subrepos'),
24455
16961d43dc89 diff: rename --relative option to --root
Sean Farley <sean@farley.io>
parents: 24432
diff changeset
3221 root=opts.get('root'))
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
3222
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3223 @command('^export',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3224 [('o', 'output', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3225 _('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
3226 ('', '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
3227 ('r', 'rev', [], _('revisions to export'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3228 ] + diffopts,
18956
1a9ad84583ee export: export working directory parent by default
Mads Kiilerich <mads@kiilerich.com>
parents: 18955
diff changeset
3229 _('[OPTION]... [-o OUTFILESPEC] [-r] [REV]...'))
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
3230 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
3231 """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
3232
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3233 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
3234 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
3235
10334
3d75c691b77d commands: fix the list of changeset header information in 'hg help export'
Steve Losh <steve@stevelosh.com>
parents: 10331
diff changeset
3236 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
3237 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
3238 comment.
3822
28134d82db9b Add notes about diff/merge asymmetry to export, diff, and log
Matt Mackall <mpm@selenic.com>
parents: 3815
diff changeset
3239
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
3240 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
3241
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
3242 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
3243 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
3244 first parent only.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3245
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3246 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
3247 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
3248
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
3249 :``%%``: literal "%" character
11718
3e979f47a4c9 help: fix bytes/digit confusion for hashes
Matt Mackall <mpm@selenic.com>
parents: 11697
diff changeset
3250 :``%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
3251 :``%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
3252 :``%R``: changeset revision number
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
3253 :``%b``: basename of the exporting repository
11718
3e979f47a4c9 help: fix bytes/digit confusion for hashes
Matt Mackall <mpm@selenic.com>
parents: 11697
diff changeset
3254 :``%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
3255 :``%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
3256 :``%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
3257 :``%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
3258
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3259 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
3260 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
3261 diff anyway, probably with undesirable results.
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3262
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3263 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
3264 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
3265
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
3266 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
3267 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
3268
15111
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3269 .. container:: verbose
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3270
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3271 Examples:
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3272
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3273 - 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
3274 branch::
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3275
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3276 hg export -r 9353 | hg import -
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3277
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3278 - 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
3279 rename information::
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3280
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3281 hg export --git -r 123:150 > changes.txt
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3282
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3283 - split outgoing changes into a series of patches with
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3284 descriptive names::
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3285
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3286 hg export -r "outgoing()" -o "%n-%m.patch"
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3287
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3288 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3289 """
10015
b5f352f33520 commands.export: accept -r option as revision specification
Alexander Solovyov <piranha@piranha.org.ua>
parents: 10014
diff changeset
3290 changesets += tuple(opts.get('rev', []))
18956
1a9ad84583ee export: export working directory parent by default
Mads Kiilerich <mads@kiilerich.com>
parents: 18955
diff changeset
3291 if not changesets:
1a9ad84583ee export: export working directory parent by default
Mads Kiilerich <mads@kiilerich.com>
parents: 18955
diff changeset
3292 changesets = ['.']
16357
8ca7187d479f export: catch exporting empty revsets (issue3353)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16231
diff changeset
3293 revs = scmutil.revrange(repo, changesets)
8ca7187d479f export: catch exporting empty revsets (issue3353)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16231
diff changeset
3294 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
3295 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
3296 if len(revs) > 1:
4ec58b157265 refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2871
diff changeset
3297 ui.note(_('exporting patches:\n'))
4ec58b157265 refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2871
diff changeset
3298 else:
4ec58b157265 refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2871
diff changeset
3299 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
3300 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
3301 switch_parent=opts.get('switch_parent'),
23690
de5c76aaeaf4 export: explicitly honor all diffopts
Siddharth Agarwal <sid0@fb.com>
parents: 23620
diff changeset
3302 opts=patch.diffallopts(ui, opts))
246
96cde50a746f Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents: 245
diff changeset
3303
22423
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3304 @command('files',
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3305 [('r', 'rev', '', _('search the repository as it is in REV'), _('REV')),
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3306 ('0', 'print0', None, _('end filenames with NUL, for use with xargs')),
24413
a8595176dd64 subrepo: add basic support to hgsubrepo for the files command
Matt Harbison <matt_harbison@yahoo.com>
parents: 24400
diff changeset
3307 ] + walkopts + formatteropts + subrepoopts,
22423
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3308 _('[OPTION]... [PATTERN]...'))
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3309 def files(ui, repo, *pats, **opts):
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3310 """list tracked files
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3311
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3312 Print files under Mercurial control in the working directory or
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3313 specified revision whose names match the given patterns (excluding
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3314 removed files).
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3315
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3316 If no patterns are given to match, this command prints the names
24364
135b23868f45 commands: replace "working copy" with "working directory" in help/messages
Yuya Nishihara <yuya@tcha.org>
parents: 24359
diff changeset
3317 of all files under Mercurial control in the working directory.
22423
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3318
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3319 .. container:: verbose
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3320
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3321 Examples:
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3322
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3323 - list all files under the current directory::
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3324
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3325 hg files .
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3326
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3327 - shows sizes and flags for current revision::
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3328
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3329 hg files -vr .
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3330
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3331 - list all files named README::
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3332
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3333 hg files -I "**/README"
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3334
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3335 - list all binary files::
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3336
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3337 hg files "set:binary()"
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3338
23074
21a55dbc3940 files: fix example list syntax
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 23024
diff changeset
3339 - find files containing a regular expression::
22423
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3340
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3341 hg files "set:grep('bob')"
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3342
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3343 - search tracked file contents with xargs and grep::
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3344
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3345 hg files -0 | xargs -0 grep foo
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3346
23414
759202b64f49 help: fix typo in files help
Matt Mackall <mpm@selenic.com>
parents: 23400
diff changeset
3347 See :hg:`help patterns` and :hg:`help filesets` for more information
22423
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3348 on specifying file patterns.
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3349
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3350 Returns 0 if a match is found, 1 otherwise.
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3351
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3352 """
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3353 ctx = scmutil.revsingle(repo, opts.get('rev'), None)
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3354
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3355 end = '\n'
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3356 if opts.get('print0'):
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3357 end = '\0'
22552
bb14cca8c4e4 files: correct topic of formatter
Yuya Nishihara <yuya@tcha.org>
parents: 22502
diff changeset
3358 fm = ui.formatter('files', opts)
22423
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3359 fmt = '%s' + end
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3360
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3361 m = scmutil.match(ctx, pats, opts)
24413
a8595176dd64 subrepo: add basic support to hgsubrepo for the files command
Matt Harbison <matt_harbison@yahoo.com>
parents: 24400
diff changeset
3362 ret = cmdutil.files(ui, ctx, m, fm, fmt, opts.get('subrepos'))
22423
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3363
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3364 fm.end()
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3365
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3366 return ret
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3367
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3368 @command('^forget', walkopts, _('[OPTION]... FILE...'), inferrepo=True)
8902
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3369 def forget(ui, repo, *pats, **opts):
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3370 """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
3371
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3372 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
3373 after the next commit.
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3374
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3375 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
3376 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
3377 working directory.
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3378
25714
8dd0b23161bf forget: add a note to the command help about remove
Nathan Goldbaum <ngoldbau@ucsc.edu>
parents: 25425
diff changeset
3379 To delete the file from the working directory, see :hg:`remove`.
8dd0b23161bf forget: add a note to the command help about remove
Nathan Goldbaum <ngoldbau@ucsc.edu>
parents: 25425
diff changeset
3380
11193
687c7d395f20 Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents: 11185
diff changeset
3381 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
3382
15118
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3383 .. container:: verbose
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3384
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3385 Examples:
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3386
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3387 - forget newly-added binary files::
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3388
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3389 hg forget "set:added() and binary()"
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3390
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3391 - forget files that would be excluded by .hgignore::
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3392
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3393 hg forget "set:hgignore()"
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3394
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3395 Returns 0 on success.
8902
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3396 """
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3397
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3398 if not pats:
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3399 raise util.Abort(_('no files specified'))
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3400
15912
2bd54ffaa27e forget: fix subrepo recursion for explicit path handling
David M. Carr <david@carrclan.us>
parents: 15911
diff changeset
3401 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
3402 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
3403 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
3404
15240
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3405 @command(
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3406 'graft',
16992
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3407 [('r', 'rev', [], _('revisions to graft'), _('REV')),
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3408 ('c', 'continue', False, _('resume interrupted graft')),
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3409 ('e', 'edit', False, _('invoke editor on commit messages')),
16660
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3410 ('', 'log', None, _('append graft info to log message')),
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3411 ('f', 'force', False, _('force graft')),
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3412 ('D', 'currentdate', False,
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3413 _('record the current date as commit date')),
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3414 ('U', 'currentuser', False,
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3415 _('record the current user as committer'), _('DATE'))]
16389
79fecd735d26 graft: add --dry-run support (issue3362)
Matt Mackall <mpm@selenic.com>
parents: 16373
diff changeset
3416 + commitopts2 + mergetoolopts + dryrunopts,
16992
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3417 _('[OPTION]... [-r] REV...'))
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3418 def graft(ui, repo, *revs, **opts):
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3419 '''copy changes from other branches onto the current branch
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3420
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3421 This command uses Mercurial's merge logic to copy individual
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3422 changes from other branches without merging branches in the
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3423 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
3424 '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
3425 description from the source changesets.
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3426
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3427 Changesets that are ancestors of the current revision, that have
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3428 already been grafted, or that are merges will be skipped.
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3429
16660
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3430 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
3431 of the form::
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3432
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3433 (grafted from CHANGESETHASH)
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3434
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3435 If --force is specified, revisions will be grafted even if they
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3436 are already ancestors of or have been grafted to the destination.
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3437 This is useful when the revisions have since been backed out.
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3438
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3439 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
3440 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
3441 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
3442 continued with the -c/--continue option.
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3443
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3444 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
3445
21980
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3446 The -c/--continue option does not reapply earlier options, except
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3447 for --force.
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3448
15242
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3449 .. container:: verbose
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3450
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3451 Examples:
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3452
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3453 - 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
3454
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3455 hg update stable
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3456 hg graft --edit 9393
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3457
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3458 - 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
3459
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3460 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
3461
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3462 - continue a graft after resolving conflicts::
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3463
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3464 hg graft -c
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3465
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3466 - 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
3467
19401
49acaa2b9701 log: remove tip from example
Matt Mackall <mpm@selenic.com>
parents: 19400
diff changeset
3468 hg log --debug -r .
15242
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3469
21949
ad56fc55cbc3 graft: add a reference to revsets to the help text (issue3362)
Alexander Becher <Alexander.Becher@RuD-Steuerungstechnik.De>
parents: 21947
diff changeset
3470 See :hg:`help revisions` and :hg:`help revsets` for more about
ad56fc55cbc3 graft: add a reference to revsets to the help text (issue3362)
Alexander Becher <Alexander.Becher@RuD-Steuerungstechnik.De>
parents: 21947
diff changeset
3471 specifying revisions.
ad56fc55cbc3 graft: add a reference to revsets to the help text (issue3362)
Alexander Becher <Alexander.Becher@RuD-Steuerungstechnik.De>
parents: 21947
diff changeset
3472
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3473 Returns 0 on successful completion.
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3474 '''
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3475
16992
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3476 revs = list(revs)
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3477 revs.extend(opts['rev'])
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3478
15240
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3479 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
3480 opts['user'] = ui.username()
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3481 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
3482 opts['date'] = "%d %d" % util.makedate()
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3483
22008
b02ab548ab5c graft: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22007
diff changeset
3484 editor = cmdutil.getcommiteditor(editform='graft', **opts)
15239
f5d9d0d0f588 graft: add --edit
Matt Mackall <mpm@selenic.com>
parents: 15238
diff changeset
3485
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3486 cont = False
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3487 if opts['continue']:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3488 cont = True
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3489 if revs:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3490 raise util.Abort(_("can't specify --continue and revisions"))
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3491 # read in unfinished revisions
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3492 try:
23877
7cc77030c557 localrepo: remove all external users of localrepo.opener
Angel Ezquerra <angel.ezquerra@gmail.com>
parents: 23840
diff changeset
3493 nodes = repo.vfs.read('graftstate').splitlines()
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3494 revs = [repo[node].rev() for node in nodes]
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25658
diff changeset
3495 except IOError as inst:
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3496 if inst.errno != errno.ENOENT:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3497 raise
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3498 raise util.Abort(_("no graft state found, can't continue"))
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3499 else:
19476
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
3500 cmdutil.checkunfinished(repo)
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3501 cmdutil.bailifchanged(repo)
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3502 if not revs:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3503 raise util.Abort(_('no revisions specified'))
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3504 revs = scmutil.revrange(repo, revs)
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3505
22824
9271630f4720 strip: stop calling `remove` on smartset
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22776
diff changeset
3506 skipped = set()
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3507 # check for merges
15404
c1eb8398fe82 localrepo: convert various repo.set() users to repo.revs()
Matt Mackall <mpm@selenic.com>
parents: 15381
diff changeset
3508 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
3509 ui.warn(_('skipping ungraftable merge revision %s\n') % rev)
22824
9271630f4720 strip: stop calling `remove` on smartset
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22776
diff changeset
3510 skipped.add(rev)
9271630f4720 strip: stop calling `remove` on smartset
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22776
diff changeset
3511 revs = [r for r in revs if r not in skipped]
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3512 if not revs:
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3513 return -1
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3514
21980
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3515 # Don't check in the --continue case, in effect retaining --force across
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3516 # --continues. That's because without --force, any revisions we decided to
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3517 # skip would have been filtered out here, so they wouldn't have made their
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3518 # way to the graftstate. With --force, any revisions we would have otherwise
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3519 # skipped would not have been filtered out, and if they hadn't been applied
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3520 # already, they'd have been in the graftstate.
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3521 if not (cont or opts.get('force')):
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3522 # check for ancestors of dest branch
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3523 crev = repo['.'].rev()
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3524 ancestors = repo.changelog.ancestors([crev], inclusive=True)
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3525 # Cannot use x.remove(y) on smart set, this has to be a list.
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3526 # XXX make this lazy in the future
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3527 revs = list(revs)
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3528 # don't mutate while iterating, create a copy
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3529 for rev in list(revs):
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3530 if rev in ancestors:
23507
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3531 ui.warn(_('skipping ancestor revision %d:%s\n') %
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3532 (rev, repo[rev]))
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3533 # XXX remove on list is slow
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3534 revs.remove(rev)
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3535 if not revs:
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3536 return -1
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3537
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3538 # analyze revs for earlier grafts
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3539 ids = {}
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3540 for ctx in repo.set("%ld", revs):
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3541 ids[ctx.hex()] = ctx.rev()
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3542 n = ctx.extra().get('source')
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3543 if n:
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3544 ids[n] = ctx.rev()
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3545
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3546 # check ancestors for earlier grafts
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3547 ui.debug('scanning for duplicate grafts\n')
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3548
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3549 for rev in repo.changelog.findmissingrevs(revs, [crev]):
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3550 ctx = repo[rev]
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3551 n = ctx.extra().get('source')
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3552 if n in ids:
22305
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3553 try:
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3554 r = repo[n].rev()
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3555 except error.RepoLookupError:
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3556 r = None
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3557 if r in revs:
23507
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3558 ui.warn(_('skipping revision %d:%s '
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3559 '(already grafted to %d:%s)\n')
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3560 % (r, repo[r], rev, ctx))
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3561 revs.remove(r)
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3562 elif ids[n] in revs:
22305
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3563 if r is None:
23507
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3564 ui.warn(_('skipping already grafted revision %d:%s '
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3565 '(%d:%s also has unknown origin %s)\n')
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3566 % (ids[n], repo[ids[n]], rev, ctx, n[:12]))
22305
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3567 else:
23507
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3568 ui.warn(_('skipping already grafted revision %d:%s '
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3569 '(%d:%s also has origin %d:%s)\n')
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3570 % (ids[n], repo[ids[n]], rev, ctx, r, n[:12]))
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3571 revs.remove(ids[n])
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3572 elif ctx.hex() in ids:
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3573 r = ids[ctx.hex()]
23507
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3574 ui.warn(_('skipping already grafted revision %d:%s '
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3575 '(was grafted from %d:%s)\n') %
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3576 (r, repo[r], rev, ctx))
15360
73628b32d0c0 graft: fix duplicate filter logic
Matt Mackall <mpm@selenic.com>
parents: 15359
diff changeset
3577 revs.remove(r)
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3578 if not revs:
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3579 return -1
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3580
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3581 wlock = repo.wlock()
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3582 try:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3583 for pos, ctx in enumerate(repo.set("%ld", revs)):
23505
bd5dbb8a05c8 graft: show more useful status information while grafting
Mads Kiilerich <madski@unity3d.com>
parents: 23456
diff changeset
3584 desc = '%d:%s "%s"' % (ctx.rev(), ctx,
bd5dbb8a05c8 graft: show more useful status information while grafting
Mads Kiilerich <madski@unity3d.com>
parents: 23456
diff changeset
3585 ctx.description().split('\n', 1)[0])
bd5dbb8a05c8 graft: show more useful status information while grafting
Mads Kiilerich <madski@unity3d.com>
parents: 23456
diff changeset
3586 names = repo.nodetags(ctx.node()) + repo.nodebookmarks(ctx.node())
bd5dbb8a05c8 graft: show more useful status information while grafting
Mads Kiilerich <madski@unity3d.com>
parents: 23456
diff changeset
3587 if names:
bd5dbb8a05c8 graft: show more useful status information while grafting
Mads Kiilerich <madski@unity3d.com>
parents: 23456
diff changeset
3588 desc += ' (%s)' % ' '.join(names)
bd5dbb8a05c8 graft: show more useful status information while grafting
Mads Kiilerich <madski@unity3d.com>
parents: 23456
diff changeset
3589 ui.status(_('grafting %s\n') % desc)
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3590 if opts.get('dry_run'):
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3591 continue
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3592
18038
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3593 source = ctx.extra().get('source')
24644
51930a7180bd graft: record intermediate grafts in extras
Durham Goode <durham@fb.com>
parents: 24503
diff changeset
3594 extra = {}
51930a7180bd graft: record intermediate grafts in extras
Durham Goode <durham@fb.com>
parents: 24503
diff changeset
3595 if source:
51930a7180bd graft: record intermediate grafts in extras
Durham Goode <durham@fb.com>
parents: 24503
diff changeset
3596 extra['source'] = source
51930a7180bd graft: record intermediate grafts in extras
Durham Goode <durham@fb.com>
parents: 24503
diff changeset
3597 extra['intermediate-source'] = ctx.hex()
51930a7180bd graft: record intermediate grafts in extras
Durham Goode <durham@fb.com>
parents: 24503
diff changeset
3598 else:
51930a7180bd graft: record intermediate grafts in extras
Durham Goode <durham@fb.com>
parents: 24503
diff changeset
3599 extra['source'] = ctx.hex()
18038
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3600 user = ctx.user()
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3601 if opts.get('user'):
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3602 user = opts['user']
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3603 date = ctx.date()
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3604 if opts.get('date'):
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3605 date = opts['date']
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3606 message = ctx.description()
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3607 if opts.get('log'):
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3608 message += '\n(grafted from %s)' % ctx.hex()
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3609
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3610 # 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
3611 if not cont:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3612 # 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
3613 try:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3614 # ui.forcemerge is an internal variable, do not document
20790
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
3615 repo.ui.setconfig('ui', 'forcemerge', opts.get('tool', ''),
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
3616 'graft')
22903
3d51e756b1ec graft: use merge.graft
Matt Mackall <mpm@selenic.com>
parents: 22901
diff changeset
3617 stats = mergemod.graft(repo, ctx, ctx.p1(),
3d51e756b1ec graft: use merge.graft
Matt Mackall <mpm@selenic.com>
parents: 22901
diff changeset
3618 ['local', 'graft'])
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3619 finally:
20790
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
3620 repo.ui.setconfig('ui', 'forcemerge', '', 'graft')
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3621 # report any conflicts
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3622 if stats and stats[3] > 0:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3623 # write out state for --continue
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3624 nodelines = [repo[rev].hex() + "\n" for rev in revs[pos:]]
23877
7cc77030c557 localrepo: remove all external users of localrepo.opener
Angel Ezquerra <angel.ezquerra@gmail.com>
parents: 23840
diff changeset
3625 repo.vfs.write('graftstate', ''.join(nodelines))
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3626 raise util.Abort(
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3627 _("unresolved conflicts, can't continue"),
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3628 hint=_('use hg resolve and hg graft --continue'))
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3629 else:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3630 cont = False
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3631
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3632 # commit
16660
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3633 node = repo.commit(text=message, user=user,
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3634 date=date, extra=extra, editor=editor)
16600
b54f3c502e63 graft: remark on empty graft
Matt Mackall <mpm@selenic.com>
parents: 16591
diff changeset
3635 if node is None:
23508
2164226a5637 graft: drop cset description from empty commit message
Matt Mackall <mpm@selenic.com>
parents: 23507
diff changeset
3636 ui.warn(
2164226a5637 graft: drop cset description from empty commit message
Matt Mackall <mpm@selenic.com>
parents: 23507
diff changeset
3637 _('note: graft of %d:%s created no changes to commit\n') %
2164226a5637 graft: drop cset description from empty commit message
Matt Mackall <mpm@selenic.com>
parents: 23507
diff changeset
3638 (ctx.rev(), ctx))
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3639 finally:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3640 wlock.release()
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3641
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3642 # remove state when we complete successfully
18386
03442135dff4 refactoring: use unlinkpath with ignoremissing
Mads Kiilerich <madski@unity3d.com>
parents: 18366
diff changeset
3643 if not opts.get('dry_run'):
03442135dff4 refactoring: use unlinkpath with ignoremissing
Mads Kiilerich <madski@unity3d.com>
parents: 18366
diff changeset
3644 util.unlinkpath(repo.join('graftstate'), ignoremissing=True)
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3645
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3646 return 0
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3647
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3648 @command('grep',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3649 [('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
3650 ('', '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
3651 ('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
3652 ('f', 'follow', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3653 _('follow changeset history,'
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3654 ' 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
3655 ('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
3656 ('l', 'files-with-matches', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3657 _('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
3658 ('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
3659 ('r', 'rev', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3660 _('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
3661 ('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
3662 ('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
3663 ] + walkopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3664 _('[OPTION]... PATTERN [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3665 inferrepo=True)
1108
7a75d8fbbdaf Remove some options from 'hg grep':
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1106
diff changeset
3666 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
3667 """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
3668
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3669 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
3670
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
3671 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
3672 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
3673 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
3674 match appears.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3675
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3676 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
3677 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
3678 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
3679 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
3680 use the --all flag.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3681
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3682 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
3683 """
15765
1ef46bcd76f8 grep: make multiline mode the default (BC)
Matt Mackall <mpm@selenic.com>
parents: 15744
diff changeset
3684 reflags = re.M
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3685 if opts.get('ignore_case'):
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3686 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
3687 try:
21911
760f4055e656 commands: use util.re.compile instead of util.compilere
Siddharth Agarwal <sid0@fb.com>
parents: 21848
diff changeset
3688 regexp = util.re.compile(pattern, reflags)
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25658
diff changeset
3689 except re.error as inst:
6057
218d5b9aa466 Remove trailing ! from two error messages as this was confusing.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6048
diff changeset
3690 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
3691 return 1
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
3692 sep, eol = ':', '\n'
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3693 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
3694 sep = eol = '\0'
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3695
9097
431462bd8478 fix memory usage of revlog caches by limiting cache size [issue1639]
Matt Mackall <mpm@selenic.com>
parents: 8995
diff changeset
3696 getfile = util.lrucachefunc(repo.file)
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3697
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3698 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
3699 begin = 0
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
3700 linenum = 0
17949
407209261f63 grep: remove useless while condition
Kevin Bullock <kbullock@ringworld.org>
parents: 17931
diff changeset
3701 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
3702 match = regexp.search(body, begin)
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3703 if not match:
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3704 break
1059
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
3705 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
3706 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
3707 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
3708 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
3709 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
3710 yield linenum, mstart - lstart, mend - lstart, body[lstart:lend]
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3711
1559
59b3639df0a9 Convert all classes to new-style classes by deriving them from object.
Eric Hopper <hopper@omnifarious.org>
parents: 1552
diff changeset
3712 class linestate(object):
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3713 def __init__(self, line, linenum, colstart, colend):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3714 self.line = line
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3715 self.linenum = linenum
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3716 self.colstart = colstart
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3717 self.colend = colend
2869
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3718
6469
fb502719c75c python 2.6 compatibility: add __hash__ to classes that have __eq__
Paul Moore <p.f.moore@gmail.com>
parents: 6468
diff changeset
3719 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
3720 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
3721
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3722 def __eq__(self, other):
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3723 return self.line == other.line
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3724
21011
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3725 def __iter__(self):
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3726 yield (self.line[:self.colstart], '')
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3727 yield (self.line[self.colstart:self.colend], 'grep.match')
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3728 rest = self.line[self.colend:]
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3729 while rest != '':
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3730 match = regexp.search(rest)
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3731 if not match:
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3732 yield (rest, '')
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3733 break
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3734 mstart, mend = match.span()
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3735 yield (rest[:mstart], '')
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3736 yield (rest[mstart:mend], 'grep.match')
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3737 rest = rest[mend:]
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3738
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3739 matches = {}
2870
8eaaf1321bfe grep: add --follow support.
Brendan Cully <brendan@kublai.com>
parents: 2869
diff changeset
3740 copies = {}
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3741 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
3742 matches[rev].setdefault(fn, [])
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3743 m = matches[rev][fn]
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3744 for lnum, cstart, cend, line in matchlines(body):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3745 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
3746 m.append(s)
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3747
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3748 def difflinestates(a, b):
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3749 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
3750 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
3751 if tag == 'insert':
3472
df7202f6887c use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3471
diff changeset
3752 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
3753 yield ('+', b[i])
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3754 elif tag == 'delete':
3472
df7202f6887c use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3471
diff changeset
3755 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
3756 yield ('-', a[i])
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3757 elif tag == 'replace':
3472
df7202f6887c use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3471
diff changeset
3758 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
3759 yield ('-', a[i])
3472
df7202f6887c use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3471
diff changeset
3760 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
3761 yield ('+', b[i])
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3762
9655
6d7d3f849062 walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents: 9654
diff changeset
3763 def display(fn, ctx, pstates, states):
6d7d3f849062 walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents: 9654
diff changeset
3764 rev = ctx.rev()
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
3765 if ui.quiet:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
3766 datefunc = util.shortdate
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
3767 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
3768 datefunc = util.datestr
3951
cb66641cdee3 grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3950
diff changeset
3769 found = False
20836
a8b4541bb961 grep: reuse the first "util.binary()" result for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20834
diff changeset
3770 @util.cachefunc
13920
332e400764e5 grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents: 13911
diff changeset
3771 def binary():
332e400764e5 grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents: 13911
diff changeset
3772 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
3773 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
3774
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3775 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
3776 iter = difflinestates(pstates, states)
2869
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3777 else:
8849
80cc4b1a62d0 compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 8834
diff changeset
3778 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
3779 for change, l in iter:
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3780 cols = [(fn, 'grep.filename'), (str(rev), 'grep.rev')]
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3781
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3782 if opts.get('line_number'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3783 cols.append((str(l.linenum), 'grep.linenumber'))
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3784 if opts.get('all'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3785 cols.append((change, 'grep.change'))
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3786 if opts.get('user'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3787 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
3788 if opts.get('date'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3789 cols.append((datefunc(ctx.date()), 'grep.date'))
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3790 for col, label in cols[:-1]:
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3791 ui.write(col, label=label)
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3792 ui.write(sep, label='grep.sep')
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3793 ui.write(cols[-1][0], label=cols[-1][1])
21011
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3794 if not opts.get('files_with_matches'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3795 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
3796 if not opts.get('text') and binary():
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3797 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
3798 else:
21011
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3799 for s, label in l:
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3800 ui.write(s, label=label)
10816
635d601e8f21 grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents: 10654
diff changeset
3801 ui.write(eol)
3951
cb66641cdee3 grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3950
diff changeset
3802 found = True
21011
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3803 if opts.get('files_with_matches'):
20838
fe849868fc5a grep: exit loop immediately, if matching is found in the file for "hg grep -l"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20837
diff changeset
3804 break
3951
cb66641cdee3 grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3950
diff changeset
3805 return found
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3806
1145
bd917e1a26dd grep: change default to printing first matching rev.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1116
diff changeset
3807 skip = {}
8849
80cc4b1a62d0 compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 8834
diff changeset
3808 revfiles = {}
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
3809 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
3810 found = False
2870
8eaaf1321bfe grep: add --follow support.
Brendan Cully <brendan@kublai.com>
parents: 2869
diff changeset
3811 follow = opts.get('follow')
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3812
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3813 def prep(ctx, fns):
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3814 rev = ctx.rev()
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
3815 pctx = ctx.p1()
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3816 parent = pctx.rev()
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3817 matches.setdefault(rev, {})
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3818 matches.setdefault(parent, {})
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3819 files = revfiles.setdefault(rev, [])
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3820 for fn in fns:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3821 flog = getfile(fn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3822 try:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3823 fnode = ctx.filenode(fn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3824 except error.LookupError:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3825 continue
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3826
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3827 copied = flog.renamed(fnode)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3828 copy = follow and copied and copied[0]
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3829 if copy:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3830 copies.setdefault(rev, {})[fn] = copy
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3831 if fn in skip:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3832 if copy:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3833 skip[copy] = True
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3834 continue
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3835 files.append(fn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3836
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3837 if fn not in matches[rev]:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3838 grepbody(fn, rev, flog.read(fnode))
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3839
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3840 pfn = copy or fn
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3841 if pfn not in matches[parent]:
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3842 try:
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3843 fnode = pctx.filenode(pfn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3844 grepbody(pfn, parent, flog.read(fnode))
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents: 7632
diff changeset
3845 except error.LookupError:
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3846 pass
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3847
9665
1de5ebfa5585 walkchangerevs: drop ui arg
Matt Mackall <mpm@selenic.com>
parents: 9663
diff changeset
3848 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
3849 rev = ctx.rev()
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
3850 parent = ctx.p1().rev()
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3851 for fn in sorted(revfiles.get(rev, [])):
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3852 states = matches[rev][fn]
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3853 copy = copies.get(rev, {}).get(fn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3854 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
3855 if copy:
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3856 skip[copy] = True
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3857 continue
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3858 pstates = matches.get(parent, {}).get(copy or fn, [])
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3859 if pstates or states:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3860 r = display(fn, ctx, pstates, states)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3861 found = found or r
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3862 if r and not opts.get('all'):
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3863 skip[fn] = True
8849
80cc4b1a62d0 compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 8834
diff changeset
3864 if copy:
80cc4b1a62d0 compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 8834
diff changeset
3865 skip[copy] = True
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3866 del matches[rev]
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3867 del revfiles[rev]
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3868
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3869 return not found
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3870
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3871 @command('heads',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3872 [('r', 'rev', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3873 _('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
3874 ('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
3875 ('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
3876 ('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
3877 ] + templateopts,
16869
00e1e40d709c help: drop -a from heads syntax summary (issue3483)
Matt Mackall <mpm@selenic.com>
parents: 16850
diff changeset
3878 _('[-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
3879 def heads(ui, repo, *branchrevs, **opts):
19469
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3880 """show branch heads
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3881
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3882 With no arguments, show all open branch heads in the repository.
19493
ca76e77dd663 heads: fix children/descendants in doc (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19482
diff changeset
3883 Branch heads are changesets that have no descendants on the
19469
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3884 same branch. They are where development generally takes place and
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3885 are the usual targets for update and merge operations.
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3886
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3887 If one or more REVs are given, only open branch heads on the
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3888 branches associated with the specified changesets are shown. This
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3889 means that you can use :hg:`heads .` to see the heads on the
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3890 currently checked-out branch.
9502
8d7d68dd91fd commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents: 9189
diff changeset
3891
8d7d68dd91fd commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents: 9189
diff changeset
3892 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
3893 (see :hg:`commit --close-branch`).
9502
8d7d68dd91fd commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents: 9189
diff changeset
3894
8d7d68dd91fd commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents: 9189
diff changeset
3895 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
3896 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
3897
fd511e9eeea6 commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10349
diff changeset
3898 If -t/--topo is specified, named branch mechanics will be ignored and only
19469
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3899 topological heads (changesets with no children) will be shown.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3900
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3901 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
3902 """
10328
0798a3d5f812 commands: simplify heads a little bit before I start hacking it up
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10326
diff changeset
3903
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
3904 start = None
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
3905 if 'rev' in opts:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
3906 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
3907
10350
fd511e9eeea6 commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10349
diff changeset
3908 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
3909 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
3910 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
3911 heads = []
14466
bd34a027f3ed commands: use repo.branchheads in heads command
Martin Geisler <mg@aragost.com>
parents: 14465
diff changeset
3912 for branch in repo.branchmap():
bd34a027f3ed commands: use repo.branchheads in heads command
Martin Geisler <mg@aragost.com>
parents: 14465
diff changeset
3913 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
3914 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
3915
fd511e9eeea6 commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10349
diff changeset
3916 if branchrevs:
13047
6c375e07d673 branch: operate on branch names in local string space where possible
Matt Mackall <mpm@selenic.com>
parents: 13022
diff changeset
3917 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
3918 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
3919
10349
20356e69710c commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10348
diff changeset
3920 if opts.get('active') and branchrevs:
20356e69710c commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10348
diff changeset
3921 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
3922 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
3923
20356e69710c commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10348
diff changeset
3924 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
3925 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
3926 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
3927 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
3928 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
3929 if opts.get('rev'):
16231
ce292f1379ba i18n: fix all remaining uses of % inside _()
Matt Mackall <mpm@selenic.com>
parents: 16230
diff changeset
3930 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
3931 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
3932
4648
8e503fa54d2d Add option to heads to show only heads for current branch.
Eric Hopper <hopper@omnifarious.org>
parents: 4646
diff changeset
3933 if not heads:
8e503fa54d2d Add option to heads to show only heads for current branch.
Eric Hopper <hopper@omnifarious.org>
parents: 4646
diff changeset
3934 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
3935
10350
fd511e9eeea6 commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10349
diff changeset
3936 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
3937 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
3938 for ctx in heads:
ec5240a22f4a commands: always order heads recent to oldest
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10330
diff changeset
3939 displayer.show(ctx)
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
3940 displayer.close()
221
2bfe525ef6ca Beginning of multi-head support
mpm@selenic.com
parents: 220
diff changeset
3941
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3942 @command('help',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3943 [('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
3944 ('c', 'command', None, _('show only help for commands')),
26238
69da16b366ad help: fix help argument parsing and documentation
timeless@mozdev.org
parents: 26190
diff changeset
3945 ('k', 'keyword', None, _('show topics matching keyword')),
16711
497deec204d1 help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents: 16708
diff changeset
3946 ],
26238
69da16b366ad help: fix help argument parsing and documentation
timeless@mozdev.org
parents: 26190
diff changeset
3947 _('[-eck] [TOPIC]'),
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
3948 norepo=True)
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
3949 def help_(ui, name=None, **opts):
7210
833d1250ce00 help: update help
Matt Mackall <mpm@selenic.com>
parents: 7197
diff changeset
3950 """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
3951
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
3952 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
3953
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
3954 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
3955 topic.
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3956
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3957 Returns 0 if successful.
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3958 """
15023
157a294444b2 help: move option text display into a helper function
Matt Mackall <mpm@selenic.com>
parents: 15022
diff changeset
3959
13608
63ab6b0ccedc help: limit documentation width to at most 80 characters
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 13601
diff changeset
3960 textwidth = min(ui.termwidth(), 80) - 2
3655
da361aa7a118 alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents: 3654
diff changeset
3961
22585
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3962 keep = []
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3963 if ui.verbose:
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3964 keep.append('verbose')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3965 if sys.platform.startswith('win'):
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3966 keep.append('windows')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3967 elif sys.platform == 'OpenVMS':
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3968 keep.append('vms')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3969 elif sys.platform == 'plan9':
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3970 keep.append('plan9')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3971 else:
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3972 keep.append('unix')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3973 keep.append(sys.platform.lower())
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3974
22587
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3975 section = None
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3976 if name and '.' in name:
23122
d9e3f5055772 help: don't crash on help for 'sections' with multiple '.'
Mads Kiilerich <madski@unity3d.com>
parents: 23114
diff changeset
3977 name, section = name.split('.', 1)
26159
f3b467aca485 commands: support hg help scripting.HGPLAIN
timeless@mozdev.org
parents: 26065
diff changeset
3978 section = section.lower()
22587
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3979
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
3980 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
3981
22587
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3982 formatted, pruned = minirst.format(text, textwidth, keep=keep,
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3983 section=section)
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3984 if section and not formatted:
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3985 raise util.Abort(_("help section not found"))
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3986
17837
b623e323c561 help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17830
diff changeset
3987 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
3988 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
3989 else:
b623e323c561 help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17830
diff changeset
3990 keep.append('notomitted')
22587
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3991 formatted, pruned = minirst.format(text, textwidth, keep=keep,
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3992 section=section)
16854
d71ada5a6a33 help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents: 16853
diff changeset
3993 ui.write(formatted)
6653
a78d8edaeedd help: list special help topics with -v
Johannes Stezenbach <js@sig21.net>
parents: 6652
diff changeset
3994
221
2bfe525ef6ca Beginning of multi-head support
mpm@selenic.com
parents: 220
diff changeset
3995
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3996 @command('identify|id',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3997 [('r', 'rev', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3998 _('identify the specified revision'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3999 ('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
4000 ('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
4001 ('b', 'branch', None, _('show branch')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4002 ('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
4003 ('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
4004 ] + remoteopts,
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
4005 _('[-nibtB] [-r REV] [SOURCE]'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
4006 optionalrepo=True)
13477
0fb2ff949790 id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents: 13473
diff changeset
4007 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
4008 num=None, id=None, branch=None, tags=None, bookmarks=None, **opts):
24364
135b23868f45 commands: replace "working copy" with "working directory" in help/messages
Yuya Nishihara <yuya@tcha.org>
parents: 24359
diff changeset
4009 """identify the working directory or specified revision
4665
091c9e54d306 identify: accept a revision argument
Matt Mackall <mpm@selenic.com>
parents: 4664
diff changeset
4010
13963
3c753f9a2fbc identify: further clarification of help
Kevin Bullock <kbullock@ringworld.org>
parents: 13952
diff changeset
4011 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
4012 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
4013 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
4014 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
4015
1416b9118540 identify/help: say what the command does first, mention bookmarks
Idan Kamara <idankk86@gmail.com>
parents: 13693
diff changeset
4016 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
4017 repository.
4671
150afe6becf6 identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents: 4667
diff changeset
4018
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4019 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
4020 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
4021
15112
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4022 .. container:: verbose
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4023
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4024 Examples:
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4025
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4026 - generate a build identifier for the working directory::
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4027
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4028 hg id --id > build-id.dat
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4029
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4030 - find the revision corresponding to a tag::
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4031
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4032 hg id -n -r 1.3
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4033
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4034 - check the most recent revision of a remote repository::
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4035
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4036 hg id -r tip http://selenic.com/hg/
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
4037
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4038 Returns 0 if successful.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4039 """
4662
f9b8ea362b49 identify: show nullid for empty repo
Matt Mackall <mpm@selenic.com>
parents: 4659
diff changeset
4040
5330
4528858e7202 make identify an optionalrepo command
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 5329
diff changeset
4041 if not repo and not source:
12067
a4fbbe0fbc38 Lowercase error messages
Martin Geisler <mg@lazybytes.net>
parents: 11881
diff changeset
4042 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
4043 "(.hg not found)"))
4528858e7202 make identify an optionalrepo command
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 5329
diff changeset
4044
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4045 if ui.debugflag:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4046 hexfunc = hex
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4047 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4048 hexfunc = short
13477
0fb2ff949790 id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents: 13473
diff changeset
4049 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
4050 output = []
7757
af6a63438a8a identify: have consistent output for local repositories
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 7743
diff changeset
4051 revs = []
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4052
4671
150afe6becf6 identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents: 4667
diff changeset
4053 if source:
10365
d757bc0c7865 interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents: 10364
diff changeset
4054 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
4055 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
4056 repo = peer.local()
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
4057 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
4058
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
4059 if not repo:
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4060 if num or branch or tags:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4061 raise util.Abort(
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4062 _("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
4063 if not rev and revs:
150afe6becf6 identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents: 4667
diff changeset
4064 rev = revs[0]
4667
c7a81e3ae80f identify: work with remote repos
Matt Mackall <mpm@selenic.com>
parents: 4666
diff changeset
4065 if not rev:
c7a81e3ae80f identify: work with remote repos
Matt Mackall <mpm@selenic.com>
parents: 4666
diff changeset
4066 rev = "tip"
13644
7e6c2f58ad56 identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents: 13639
diff changeset
4067
17191
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
4068 remoterev = peer.lookup(rev)
4666
48c94bffdb28 identify: add support for output flags
Matt Mackall <mpm@selenic.com>
parents: 4665
diff changeset
4069 if default or id:
13644
7e6c2f58ad56 identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents: 13639
diff changeset
4070 output = [hexfunc(remoterev)]
7e6c2f58ad56 identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents: 13639
diff changeset
4071
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4072 def getbms():
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4073 bms = []
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4074
17191
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
4075 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
4076 hexremoterev = hex(remoterev)
17191
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
4077 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
4078 if bmr == hexremoterev]
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4079
18366
fdf2f5730bd4 identity: report bookmarks sorted
Mads Kiilerich <mads@kiilerich.com>
parents: 18267
diff changeset
4080 return sorted(bms)
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4081
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4082 if bookmarks:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4083 output.extend(getbms())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4084 elif default and not ui.quiet:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4085 # 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
4086 bm = '/'.join(getbms())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4087 if bm:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4088 output.append(bm)
4665
091c9e54d306 identify: accept a revision argument
Matt Mackall <mpm@selenic.com>
parents: 4664
diff changeset
4089 else:
25683
3b1fc40626d8 identify: avoid a crash when given '-r wdir()'
Matt Harbison <matt_harbison@yahoo.com>
parents: 25660
diff changeset
4090 ctx = scmutil.revsingle(repo, rev, None)
3b1fc40626d8 identify: avoid a crash when given '-r wdir()'
Matt Harbison <matt_harbison@yahoo.com>
parents: 25660
diff changeset
4091
3b1fc40626d8 identify: avoid a crash when given '-r wdir()'
Matt Harbison <matt_harbison@yahoo.com>
parents: 25660
diff changeset
4092 if ctx.rev() is None:
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4093 ctx = repo[None]
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4094 parents = ctx.parents()
25684
0f894d2203c8 identify: build the tag list directly instead of using wctx.tags()
Matt Harbison <matt_harbison@yahoo.com>
parents: 25683
diff changeset
4095 taglist = []
0f894d2203c8 identify: build the tag list directly instead of using wctx.tags()
Matt Harbison <matt_harbison@yahoo.com>
parents: 25683
diff changeset
4096 for p in parents:
0f894d2203c8 identify: build the tag list directly instead of using wctx.tags()
Matt Harbison <matt_harbison@yahoo.com>
parents: 25683
diff changeset
4097 taglist.extend(p.tags())
0f894d2203c8 identify: build the tag list directly instead of using wctx.tags()
Matt Harbison <matt_harbison@yahoo.com>
parents: 25683
diff changeset
4098
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4099 changed = ""
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4100 if default or id or num:
25149
3f0744eeaeaf cleanup: use __builtins__.any instead of util.any
Augie Fackler <augie@google.com>
parents: 25120
diff changeset
4101 if (any(repo.status())
3f0744eeaeaf cleanup: use __builtins__.any instead of util.any
Augie Fackler <augie@google.com>
parents: 25120
diff changeset
4102 or any(ctx.sub(s).dirty() for s in ctx.substate)):
17255
3e856d8abe9c identity: show trailing '+' for dirty subrepos (issue2839)
Patrick Mezard <patrick@mezard.eu>
parents: 17248
diff changeset
4103 changed = '+'
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4104 if default or id:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4105 output = ["%s%s" %
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4106 ('+'.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
4107 if num:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4108 output.append("%s%s" %
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4109 ('+'.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
4110 else:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4111 if default or id:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4112 output = [hexfunc(ctx.node())]
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4113 if num:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4114 output.append(str(ctx.rev()))
25684
0f894d2203c8 identify: build the tag list directly instead of using wctx.tags()
Matt Harbison <matt_harbison@yahoo.com>
parents: 25683
diff changeset
4115 taglist = ctx.tags()
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4116
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4117 if default and not ui.quiet:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4118 b = ctx.branch()
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4119 if b != 'default':
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4120 output.append("(%s)" % b)
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4121
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4122 # multiple tags for a single parent separated by '/'
25684
0f894d2203c8 identify: build the tag list directly instead of using wctx.tags()
Matt Harbison <matt_harbison@yahoo.com>
parents: 25683
diff changeset
4123 t = '/'.join(taglist)
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4124 if t:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4125 output.append(t)
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4126
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4127 # 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
4128 bm = '/'.join(ctx.bookmarks())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4129 if bm:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4130 output.append(bm)
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4131 else:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4132 if branch:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4133 output.append(ctx.branch())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4134
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4135 if tags:
25684
0f894d2203c8 identify: build the tag list directly instead of using wctx.tags()
Matt Harbison <matt_harbison@yahoo.com>
parents: 25683
diff changeset
4136 output.extend(taglist)
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4137
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4138 if bookmarks:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4139 output.extend(ctx.bookmarks())
13477
0fb2ff949790 id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents: 13473
diff changeset
4140
386
494c8e3f47f3 Improvements for hg identify:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 371
diff changeset
4141 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
4142
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4143 @command('import|patch',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4144 [('p', 'strip', 1,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4145 _('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
4146 'meaning as the corresponding patch option'), _('NUM')),
14532
2498128821a9 import: deprecate --base
Patrick Mezard <pmezard@gmail.com>
parents: 14529
diff changeset
4147 ('b', 'base', '', _('base path (DEPRECATED)'), _('PATH')),
15221
269374b89b74 import: add --edit switch
Matt Mackall <mpm@selenic.com>
parents: 15212
diff changeset
4148 ('e', 'edit', False, _('invoke editor on commit messages')),
19409
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
4149 ('f', 'force', None,
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
4150 _('skip check for outstanding uncommitted changes (DEPRECATED)')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4151 ('', 'no-commit', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4152 _("don't commit, just update the working directory")),
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4153 ('', 'bypass', None,
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4154 _("apply patch without touching the working directory")),
21553
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4155 ('', 'partial', None,
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4156 _('commit even if some hunks fail')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4157 ('', 'exact', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4158 _('apply patch to the nodes from which it was generated')),
24258
093e8a5e995f commands.import: accept a prefix option
Siddharth Agarwal <sid0@fb.com>
parents: 24251
diff changeset
4159 ('', 'prefix', '',
24390
72d7d390ef5d patch._applydiff: resolve prefix with respect to the cwd
Siddharth Agarwal <sid0@fb.com>
parents: 24365
diff changeset
4160 _('apply patch to subdirectory'), _('DIR')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4161 ('', 'import-branch', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4162 _('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
4163 commitopts + commitopts2 + similarityopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4164 _('[OPTION]... PATCH...'))
15327
67e92d29ecb5 import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents: 15321
diff changeset
4165 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
4166 """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
4167
9649
20b91f91f9ca minor documentation improvements
timeless@mozdev.org
parents: 9646
diff changeset
4168 Import a list of patches and commit them individually (unless
20b91f91f9ca minor documentation improvements
timeless@mozdev.org
parents: 9646
diff changeset
4169 --no-commit is specified).
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4170
19409
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
4171 Because import first applies changes to the working directory,
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
4172 import will abort if there are outstanding changes.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4173
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
4174 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
4175 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
4176 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
4177 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
4178 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
4179 message.
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
4180
11193
687c7d395f20 Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents: 11185
diff changeset
4181 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
4182 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
4183 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
4184 override these.
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4185
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4186 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
4187 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
4188 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
4189 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
4190 deficiencies in the text patch format.
4263
47ba52121433 Add import --exact.
Brendan Cully <brendan@kublai.com>
parents: 4256
diff changeset
4191
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4192 Use --bypass to apply and commit patches directly to the
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4193 repository, not touching the working directory. Without --exact,
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4194 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
4195 revision.
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4196
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
4197 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
4198 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
4199
21553
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4200 Use --partial to ensure a changeset will be created from the patch
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4201 even if some hunks fail to apply. Hunks that fail to apply will be
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4202 written to a <target-file>.rej file. Conflicts can then be resolved
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4203 by hand before :hg:`commit --amend` is run to update the created
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4204 changeset. This flag exists to let people import patches that
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4205 partially apply without losing the associated metadata (author,
21929
5bd11162c0a4 commands: fix typo in import documentation
Wagner Bruna <wbruna@yahoo.com>
parents: 21911
diff changeset
4206 date, description, ...). Note that when none of the hunk applies
21553
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4207 cleanly, :hg:`import --partial` will create an empty changeset,
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4208 importing only the patch metadata.
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4209
25650
e43e7d58a65d import: cross-reference ui.patch option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25626
diff changeset
4210 It is possible to use external patch programs to perform the patch
25651
125c11ec7bee import: cross-reference patch.fuzz option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25650
diff changeset
4211 by setting the ``ui.patch`` configuration option. For the default
125c11ec7bee import: cross-reference patch.fuzz option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25650
diff changeset
4212 internal tool, the fuzz can also be configured via ``patch.fuzz``.
25650
e43e7d58a65d import: cross-reference ui.patch option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25626
diff changeset
4213 See :hg:`help config` for more information about configuration
25651
125c11ec7bee import: cross-reference patch.fuzz option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25650
diff changeset
4214 files and how to use these options.
25650
e43e7d58a65d import: cross-reference ui.patch option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25626
diff changeset
4215
8931
4c99eafb101e commands: add note about import retrieving patches from URLs
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8927
diff changeset
4216 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
4217 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
4218 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
4219
15113
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4220 .. container:: verbose
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4221
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4222 Examples:
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4223
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4224 - import a traditional patch from a website and detect renames::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4225
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4226 hg import -s 80 http://example.com/bugfix.patch
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4227
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4228 - import a changeset from an hgweb server::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4229
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4230 hg import http://www.selenic.com/hg/rev/5ca8c111e9aa
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4231
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4232 - import all the patches in an Unix-style mbox::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4233
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4234 hg import incoming-patches.mbox
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4235
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4236 - attempt to exactly restore an exported changeset (not always
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4237 possible)::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4238
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4239 hg import --exact proposed-fix.patch
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4240
25650
e43e7d58a65d import: cross-reference ui.patch option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25626
diff changeset
4241 - use an external tool to apply a patch which is too fuzzy for
e43e7d58a65d import: cross-reference ui.patch option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25626
diff changeset
4242 the default internal tool.
e43e7d58a65d import: cross-reference ui.patch option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25626
diff changeset
4243
e43e7d58a65d import: cross-reference ui.patch option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25626
diff changeset
4244 hg import --config ui.patch="patch --merge" fuzzy.patch
e43e7d58a65d import: cross-reference ui.patch option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25626
diff changeset
4245
25651
125c11ec7bee import: cross-reference patch.fuzz option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25650
diff changeset
4246 - change the default fuzzing from 2 to a less strict 7
125c11ec7bee import: cross-reference patch.fuzz option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25650
diff changeset
4247
125c11ec7bee import: cross-reference patch.fuzz option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25650
diff changeset
4248 hg import --config ui.fuzz=7 fuzz.patch
125c11ec7bee import: cross-reference patch.fuzz option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25650
diff changeset
4249
21553
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4250 Returns 0 on success, 1 on partial success (see --partial).
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4251 """
15327
67e92d29ecb5 import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents: 15321
diff changeset
4252
67e92d29ecb5 import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents: 15321
diff changeset
4253 if not patch1:
67e92d29ecb5 import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents: 15321
diff changeset
4254 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
4255
437
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
4256 patches = (patch1,) + patches
500
ebc4714a7632 [PATCH] Clean up destination directory if a clone fails.
mpm@selenic.com
parents: 499
diff changeset
4257
6139
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
4258 date = opts.get('date')
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
4259 if date:
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
4260 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
4261
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4262 update = not opts.get('bypass')
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4263 if not update and opts.get('no_commit'):
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4264 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
4265 try:
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4266 sim = float(opts.get('similarity') or 0)
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4267 except ValueError:
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4268 raise util.Abort(_('similarity must be a number'))
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4269 if sim < 0 or sim > 100:
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4270 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
4271 if sim and not update:
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4272 raise util.Abort(_('cannot use --similarity with --bypass'))
22277
e116abad3afa import: disallow meaningless combination of "--exact" and "--edit"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22274
diff changeset
4273 if opts.get('exact') and opts.get('edit'):
e116abad3afa import: disallow meaningless combination of "--exact" and "--edit"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22274
diff changeset
4274 raise util.Abort(_('cannot use --exact with --edit'))
24258
093e8a5e995f commands.import: accept a prefix option
Siddharth Agarwal <sid0@fb.com>
parents: 24251
diff changeset
4275 if opts.get('exact') and opts.get('prefix'):
093e8a5e995f commands.import: accept a prefix option
Siddharth Agarwal <sid0@fb.com>
parents: 24251
diff changeset
4276 raise util.Abort(_('cannot use --exact with --prefix'))
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4277
19476
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
4278 if update:
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
4279 cmdutil.checkunfinished(repo)
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4280 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
4281 cmdutil.bailifchanged(repo)
966
022bcc738389 hg import: abort with uncommitted changes, override with --force
mpm@selenic.com
parents: 965
diff changeset
4282
15195
5b2a3bb06cef import: rename some local variables
Greg Ward <greg@gerg.ca>
parents: 15194
diff changeset
4283 base = opts["base"]
24994
713b09fc9fbb import: use dirstateguard instead of dirstate.invalidate
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24947
diff changeset
4284 wlock = dsguard = lock = tr = None
12913
0e0a52bd58f9 import: --no-commit should update .hg/last-message.txt
Steve Borho <steve@borho.org>
parents: 12893
diff changeset
4285 msgs = []
21553
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4286 ret = 0
10384
832f35386067 import: import each patch in a file or stream as a separate change
Brendan Cully <brendan@kublai.com>
parents: 10379
diff changeset
4287
10405
2d30d66a89ad whitespace cleanup
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 10394
diff changeset
4288
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
4289 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
4290 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
4291 wlock = repo.wlock()
24994
713b09fc9fbb import: use dirstateguard instead of dirstate.invalidate
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24947
diff changeset
4292 dsguard = cmdutil.dirstateguard(repo, 'import')
16274
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4293 if not opts.get('no_commit'):
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4294 lock = repo.lock()
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4295 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
4296 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
4297 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
4298 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
4299 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
4300 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
4301 patchurl = 'stdin' # for error message
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4302 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
4303 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
4304 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
4305 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
4306
2ed335669e18 commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15265
diff changeset
4307 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
4308 for hunk in patch.split(patchfile):
21553
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4309 (msg, node, rej) = cmdutil.tryimportone(ui, repo, hunk,
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4310 parents, opts,
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4311 msgs, hg.clean)
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
4312 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
4313 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
4314 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
4315 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
4316 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
4317 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
4318 parents = [repo[node]]
21553
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4319 if rej:
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4320 ui.write_err(_("patch applied partially\n"))
21959
dccbf52ffe9f commands: make the warning message for "patch --partial" translatable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21957
diff changeset
4321 ui.write_err(_("(fix the .rej files and run "
dccbf52ffe9f commands: make the warning message for "patch --partial" translatable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21957
diff changeset
4322 "`hg commit --amend`)\n"))
21553
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4323 ret = 1
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4324 break
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
4325
2ed335669e18 commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15265
diff changeset
4326 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
4327 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
4328
16274
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4329 if tr:
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4330 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
4331 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
4332 repo.savecommitmessage('\n* * *\n'.join(msgs))
24994
713b09fc9fbb import: use dirstateguard instead of dirstate.invalidate
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24947
diff changeset
4333 dsguard.close()
21553
bee0e1cffdd3 import: add --partial flag to create a changeset despite failed hunks
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21552
diff changeset
4334 return ret
24994
713b09fc9fbb import: use dirstateguard instead of dirstate.invalidate
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24947
diff changeset
4335 finally:
713b09fc9fbb import: use dirstateguard instead of dirstate.invalidate
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24947
diff changeset
4336 # TODO: get rid of this meaningless try/finally enclosing.
713b09fc9fbb import: use dirstateguard instead of dirstate.invalidate
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24947
diff changeset
4337 # this is kept only to reduce changes in a patch.
713b09fc9fbb import: use dirstateguard instead of dirstate.invalidate
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24947
diff changeset
4338 pass
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
4339 finally:
15198
62dc0e7ab092 import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents: 15197
diff changeset
4340 if tr:
62dc0e7ab092 import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents: 15197
diff changeset
4341 tr.release()
24994
713b09fc9fbb import: use dirstateguard instead of dirstate.invalidate
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24947
diff changeset
4342 release(lock, dsguard, wlock)
437
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
4343
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4344 @command('incoming|in',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4345 [('f', 'force', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4346 _('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
4347 ('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
4348 ('', 'bundle', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4349 _('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
4350 ('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
4351 ('B', 'bookmarks', False, _("compare bookmarks")),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4352 ('b', 'branch', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4353 _('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
4354 ] + logopts + remoteopts + subrepoopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4355 _('[-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
4356 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
4357 """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
4358
1979
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
4359 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
4360 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
4361 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
4362
1979
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
4363 See pull for valid source format details.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4364
20834
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4365 .. container:: verbose
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4366
24660
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4367 With -B/--bookmarks, the result of bookmark comparison between
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4368 local and remote repositories is displayed. With -v/--verbose,
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4369 status is also displayed for each bookmark like below::
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4370
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4371 BM1 01234567890a added
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4372 BM2 1234567890ab advanced
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4373 BM3 234567890abc diverged
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4374 BM4 34567890abcd changed
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4375
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4376 The action taken locally when pulling depends on the
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4377 status of each bookmark:
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4378
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4379 :``added``: pull will create it
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4380 :``advanced``: pull will update it
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4381 :``diverged``: pull will create a divergent bookmark
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4382 :``changed``: result depends on remote changesets
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4383
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4384 From the point of view of pulling behavior, bookmark
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4385 existing only in the remote repository are treated as ``added``,
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4386 even if it is in fact locally deleted.
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4387
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4388 .. container:: verbose
bf13b44bbb0a bookmarks: show detailed status about incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24644
diff changeset
4389
24248
913347bcd59c incoming: hide help about use of --bundle option by default
Yuya Nishihara <yuya@tcha.org>
parents: 24222
diff changeset
4390 For remote repository, using --bundle avoids downloading the
913347bcd59c incoming: hide help about use of --bundle option by default
Yuya Nishihara <yuya@tcha.org>
parents: 24222
diff changeset
4391 changesets twice if the incoming is followed by a pull.
913347bcd59c incoming: hide help about use of --bundle option by default
Yuya Nishihara <yuya@tcha.org>
parents: 24222
diff changeset
4392
20834
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4393 Examples:
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4394
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4395 - show incoming changes with patches and full description::
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4396
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4397 hg incoming -vp
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4398
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4399 - show incoming changes excluding merges, store a bundle::
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4400
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4401 hg in -vpM --bundle incoming.hg
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4402 hg pull incoming.hg
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4403
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4404 - briefly list changes inside a bundle::
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4405
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4406 hg in changes.hg -T "{desc|firstline}\\n"
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4407
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4408 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
4409 """
17182
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4410 if opts.get('graph'):
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4411 cmdutil.checkunsupportedgraphflags([], opts)
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4412 def display(other, chlist, displayer):
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4413 revdag = cmdutil.graphrevs(other, chlist, opts)
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4414 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
4415 cmdutil.displaygraph(ui, revdag, displayer, showparents,
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4416 graphmod.asciiedges)
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4417
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4418 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
4419 return 0
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4420
12274
c02e1ed3d407 incoming: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents: 12273
diff changeset
4421 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
4422 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
4423
13366
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4424 if opts.get('bookmarks'):
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4425 source, branches = hg.parseurl(ui.expandpath(source),
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4426 opts.get('branch'))
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
4427 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
4428 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
4429 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
4430 return 0
14076
924c82157d46 url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents: 14073
diff changeset
4431 ui.status(_('comparing with %s\n') % util.hidepassword(source))
24397
d0ea2028e8e6 bookmarks: add incoming() to replace diff() for incoming bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24390
diff changeset
4432 return bookmarks.incoming(ui, repo, other)
13366
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4433
14360
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4434 repo._subtoppath = ui.expandpath(source)
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4435 try:
14362
8c740a850ad7 commands: replace 'x = f(); return x' with 'return f()'
Martin Geisler <mg@lazybytes.net>
parents: 14361
diff changeset
4436 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
4437 finally:
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4438 del repo._subtoppath
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4439
1944
fdf40c9b3306 incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1943
diff changeset
4440
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
4441 @command('^init', remoteopts, _('[-e CMD] [--remotecmd CMD] [DEST]'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
4442 norepo=True)
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
4443 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
4444 """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
4445
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
4446 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
4447 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
4448
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4449 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
4450
9970
36760956f6d3 commands: mark "ssh://" as inline literals in help texts
Martin Geisler <mg@lazybytes.net>
parents: 9952
diff changeset
4451 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
4452 See :hg:`help urls` for more information.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4453
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4454 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4455 """
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
4456 hg.peer(ui, opts, ui.expandpath(dest), create=True)
338
1e091b3293d5 default path support with .hg/hgrc
mpm@selenic.com
parents: 335
diff changeset
4457
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4458 @command('locate',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4459 [('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
4460 ('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
4461 ('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
4462 ] + walkopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4463 _('[OPTION]... [PATTERN]...'))
627
b6c42714d900 Add locate command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 625
diff changeset
4464 def locate(ui, repo, *pats, **opts):
22431
eaeee6f95fc0 locate: deprecate in favor of files
Matt Mackall <mpm@selenic.com>
parents: 22429
diff changeset
4465 """locate files matching specific patterns (DEPRECATED)
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4466
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4467 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
4468 names match the given patterns.
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4469
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4470 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
4471 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
4472 subdirectories, use "--include .".
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4473
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4474 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
4475 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
4476
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4477 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
4478 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
4479 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
4480 contain whitespace as multiple filenames.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4481
22433
ae1932dce9c1 locate: add pointer to files command in help
Matt Mackall <mpm@selenic.com>
parents: 22431
diff changeset
4482 See :hg:`help files` for a more versatile command.
ae1932dce9c1 locate: add pointer to files command in help
Matt Mackall <mpm@selenic.com>
parents: 22431
diff changeset
4483
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4484 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
4485 """
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4486 if opts.get('print0'):
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4487 end = '\0'
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4488 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4489 end = '\n'
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
4490 rev = scmutil.revsingle(repo, opts.get('rev'), None).node()
742
092937de2ad7 Refactor matchpats and walk
mpm@selenic.com
parents: 740
diff changeset
4491
4196
1c69c73d85d9 locate: exit(1) if we didn't print any file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 4195
diff changeset
4492 ret = 1
21986
48166e46f111 locate: use ctx.matches instead of ctx.walk
Siddharth Agarwal <sid0@fb.com>
parents: 21980
diff changeset
4493 ctx = repo[rev]
25468
72edd54de935 commands: use the optional badfn argument when building a matcher
Matt Harbison <matt_harbison@yahoo.com>
parents: 25446
diff changeset
4494 m = scmutil.match(ctx, pats, opts, default='relglob',
72edd54de935 commands: use the optional badfn argument when building a matcher
Matt Harbison <matt_harbison@yahoo.com>
parents: 25446
diff changeset
4495 badfn=lambda x, y: False)
21986
48166e46f111 locate: use ctx.matches instead of ctx.walk
Siddharth Agarwal <sid0@fb.com>
parents: 21980
diff changeset
4496
48166e46f111 locate: use ctx.matches instead of ctx.walk
Siddharth Agarwal <sid0@fb.com>
parents: 21980
diff changeset
4497 for abs in ctx.matches(m):
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
4498 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
4499 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
4500 else:
6584
29c77e5dfb3c walk: remove rel and exact returns
Matt Mackall <mpm@selenic.com>
parents: 6583
diff changeset
4501 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
4502 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
4503
1c69c73d85d9 locate: exit(1) if we didn't print any file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 4195
diff changeset
4504 return ret
627
b6c42714d900 Add locate command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 625
diff changeset
4505
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4506 @command('^log|history',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4507 [('f', 'follow', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4508 _('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
4509 ('', 'follow-first', None,
15405
e4a17bb8472f log: hide some low-utility options
Matt Mackall <mpm@selenic.com>
parents: 15404
diff changeset
4510 _('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
4511 ('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
4512 ('C', 'copies', None, _('show copied files')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4513 ('k', 'keyword', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4514 _('do case-insensitive search for a given text'), _('TEXT')),
23091
8d43c6bb38c0 doc: change 'revision or range' to 'revision or revset'
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 23074
diff changeset
4515 ('r', 'rev', [], _('show the specified revision or revset'), _('REV')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4516 ('', '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
4517 ('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
4518 ('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
4519 ('', 'only-branch', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4520 _('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
4521 _('BRANCH')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4522 ('b', 'branch', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4523 _('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
4524 ('P', 'prune', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4525 _('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
4526 ] + logopts + walkopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
4527 _('[OPTION]... [FILE]'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
4528 inferrepo=True)
1031
503aaf19a040 Rewrite log command. New version is faster and more featureful.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1030
diff changeset
4529 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
4530 """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
4531
2741
ae5ce3454ef5 log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2739
diff changeset
4532 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
4533 project.
ae5ce3454ef5 log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2739
diff changeset
4534
15104
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4535 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
4536 --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
4537 used as the starting revision.
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4538
2741
ae5ce3454ef5 log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2739
diff changeset
4539 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
4540 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
4541 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
4542 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
4543
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4544 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
4545 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
4546 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
4547 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
4548
20544
8982a5397687 log: describe graph symbols in the help
Mads Kiilerich <madski@unity3d.com>
parents: 20526
diff changeset
4549 With --graph the revisions are shown as an ASCII art DAG with the most
8982a5397687 log: describe graph symbols in the help
Mads Kiilerich <madski@unity3d.com>
parents: 20526
diff changeset
4550 recent changeset at the top.
8982a5397687 log: describe graph symbols in the help
Mads Kiilerich <madski@unity3d.com>
parents: 20526
diff changeset
4551 'o' is a changeset, '@' is a working directory parent, 'x' is obsolete,
8982a5397687 log: describe graph symbols in the help
Mads Kiilerich <madski@unity3d.com>
parents: 20526
diff changeset
4552 and '+' represents a fork where the changeset from the lines below is a
21174
7991df9d2f20 commands: fix typo in --graph description
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 21127
diff changeset
4553 parent of the 'o' merge on the same line.
20544
8982a5397687 log: describe graph symbols in the help
Mads Kiilerich <madski@unity3d.com>
parents: 20526
diff changeset
4554
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
4555 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
4556
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
4557 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
4558 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
4559 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
4560 will appear in files:.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4561
15105
6e91fba485fa log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents: 15104
diff changeset
4562 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
4563
15105
6e91fba485fa log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents: 15104
diff changeset
4564 for performance reasons, log FILE may omit duplicate changes
22493
abf4e98b8ff2 help: mention mode in hg log --removed help (issue4381)
Matt Mackall <mpm@selenic.com>
parents: 22316
diff changeset
4565 made on branches and will not show removals or mode changes. To
abf4e98b8ff2 help: mention mode in hg log --removed help (issue4381)
Matt Mackall <mpm@selenic.com>
parents: 22316
diff changeset
4566 see all such changes, use the --removed switch.
15105
6e91fba485fa log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents: 15104
diff changeset
4567
15103
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4568 .. container:: verbose
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4569
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4570 Some examples:
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4571
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4572 - 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
4573
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4574 hg log -v
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4575
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4576 - changesets ancestral to the working directory::
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4577
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4578 hg log -f
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4579
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4580 - 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
4581
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4582 hg log -l 10 -b .
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4583
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4584 - 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
4585
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4586 hg log --removed file.c
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4587
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4588 - 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
4589
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4590 hg log -Mp lib/
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4591
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4592 - 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
4593
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4594 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
4595
21944
0483ff40e326 templates: re-add template listing support
Matt Mackall <mpm@selenic.com>
parents: 21940
diff changeset
4596 - list available log templates::
0483ff40e326 templates: re-add template listing support
Matt Mackall <mpm@selenic.com>
parents: 21940
diff changeset
4597
0483ff40e326 templates: re-add template listing support
Matt Mackall <mpm@selenic.com>
parents: 21940
diff changeset
4598 hg log -T list
0483ff40e326 templates: re-add template listing support
Matt Mackall <mpm@selenic.com>
parents: 21940
diff changeset
4599
22576
c712238c4f9b help: fix typo in log examples
Matt Mackall <mpm@selenic.com>
parents: 22493
diff changeset
4600 - check if a given changeset is included in a tagged release::
15103
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4601
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4602 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
4603
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4604 - 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
4605
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4606 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
4607
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4608 - 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
4609
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4610 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
4611
15104
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4612 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
4613
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4614 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
4615 specifying revisions.
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4616
16568
770190bff625 help: add reference to template help (issue3413)
A. S. Budden <abudden@gmail.com>
parents: 16551
diff changeset
4617 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
4618 specifying custom templates.
770190bff625 help: add reference to template help (issue3413)
A. S. Budden <abudden@gmail.com>
parents: 16551
diff changeset
4619
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4620 Returns 0 on success.
22493
abf4e98b8ff2 help: mention mode in hg log --removed help (issue4381)
Matt Mackall <mpm@selenic.com>
parents: 22316
diff changeset
4621
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4622 """
24189
8b4b9ee6001a log: make -fr show complete history from the given revs
Durham Goode <durham@fb.com>
parents: 24171
diff changeset
4623 if opts.get('follow') and opts.get('rev'):
8b4b9ee6001a log: make -fr show complete history from the given revs
Durham Goode <durham@fb.com>
parents: 24171
diff changeset
4624 opts['rev'] = [revset.formatspec('reverse(::%lr)', opts.get('rev'))]
8b4b9ee6001a log: make -fr show complete history from the given revs
Durham Goode <durham@fb.com>
parents: 24171
diff changeset
4625 del opts['follow']
8b4b9ee6001a log: make -fr show complete history from the given revs
Durham Goode <durham@fb.com>
parents: 24171
diff changeset
4626
17181
6f71167292f2 log: support --graph without graphlog extension
Patrick Mezard <patrick@mezard.eu>
parents: 17168
diff changeset
4627 if opts.get('graph'):
6f71167292f2 log: support --graph without graphlog extension
Patrick Mezard <patrick@mezard.eu>
parents: 17168
diff changeset
4628 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
4629
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4630 revs, expr, filematcher = cmdutil.getlogrevs(repo, pats, opts)
6190
a79d9408806f Move finding/checking the log limit to cmdutil
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6189
diff changeset
4631 limit = cmdutil.loglimit(opts)
1756
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
4632 count = 0
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
4633
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4634 getrenamed = None
16175
280e834c9d15 log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents: 16163
diff changeset
4635 if opts.get('copies'):
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4636 endrev = None
16175
280e834c9d15 log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents: 16163
diff changeset
4637 if opts.get('rev'):
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4638 endrev = scmutil.revrange(repo, opts.get('rev')).max() + 1
16175
280e834c9d15 log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents: 16163
diff changeset
4639 getrenamed = templatekw.getrenamedfn(repo, endrev=endrev)
3197
e18c3d08528d Show copies in hg log.
Brendan Cully <brendan@kublai.com>
parents: 3194
diff changeset
4640
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4641 displayer = cmdutil.show_changeset(ui, repo, opts, buffered=True)
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4642 for rev in revs:
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4643 if count == limit:
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4644 break
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4645 ctx = repo[rev]
10060
f780b1098efc templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents: 10021
diff changeset
4646 copies = None
16175
280e834c9d15 log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents: 16163
diff changeset
4647 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
4648 copies = []
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
4649 for fn in ctx.files():
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
4650 rename = getrenamed(fn, rev)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
4651 if rename:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
4652 copies.append((fn, rename[0]))
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4653 if filematcher:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4654 revmatchfn = filematcher(ctx.rev())
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4655 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4656 revmatchfn = None
11488
f786fc4b8764 log: follow filenames through renames (issue647)
Mads Kiilerich <mads@kiilerich.com>
parents: 11459
diff changeset
4657 displayer.show(ctx, copies=copies, matchfn=revmatchfn)
25763
60c791592aa7 changeset_printer: change flush() to accept ctx instead of rev
Yuya Nishihara <yuya@tcha.org>
parents: 25761
diff changeset
4658 if displayer.flush(ctx):
18711
6b786dc88612 commands: exit from the log loop at the right time
Bryan O'Sullivan <bryano@fb.com>
parents: 18703
diff changeset
4659 count += 1
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4660
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
4661 displayer.close()
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4662
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4663 @command('manifest',
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4664 [('r', 'rev', '', _('revision to display'), _('REV')),
22429
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
4665 ('', 'all', False, _("list files from all revisions"))]
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
4666 + formatteropts,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4667 _('[-r REV]'))
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4668 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
4669 """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
4670
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4671 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
4672 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
4673 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
4674
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4675 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
4676 With --debug, print file revision hashes.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4677
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4678 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
4679 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
4680
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4681 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4682 """
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4683
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4684 fm = ui.formatter('manifest', opts)
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4685
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4686 if opts.get('all'):
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4687 if rev or node:
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4688 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
4689
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4690 res = []
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4691 prefix = "data/"
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4692 suffix = ".i"
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4693 plen = len(prefix)
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4694 slen = len(suffix)
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4695 lock = repo.lock()
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4696 try:
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4697 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
4698 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
4699 res.append(fn[plen:-slen])
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4700 finally:
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4701 lock.release()
17376
3738d6254bd3 manifest: remove redundant sorted() call for --all
Adrian Buehlmann <adrian@cadifra.com>
parents: 17370
diff changeset
4702 for f in res:
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4703 fm.startitem()
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4704 fm.write("path", '%s\n', f)
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4705 fm.end()
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4706 return
3736
ad3d5b4367cb make manifest friendlier
Matt Mackall <mpm@selenic.com>
parents: 3707
diff changeset
4707
5155
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4708 if rev and node:
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4709 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
4710
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4711 if not node:
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4712 node = rev
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4713
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4714 char = {'l': '@', 'x': '*', '': ''}
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4715 mode = {'l': '644', 'x': '755', '': '644'}
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
4716 ctx = scmutil.revsingle(repo, node)
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4717 mf = ctx.manifest()
6749
51b0e799352f manifest: remove execf/linkf methods
Matt Mackall <mpm@selenic.com>
parents: 6748
diff changeset
4718 for f in ctx:
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4719 fm.startitem()
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4720 fl = ctx[f].flags()
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4721 fm.condwrite(ui.debugflag, 'hash', '%s ', hex(mf[f]))
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4722 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
4723 fm.write('path', '%s\n', f)
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4724 fm.end()
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4725
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4726 @command('^merge',
19439
f4148c36f0aa merge: deprecate the --force option
Florence Laguzet <florence.laguzet@gmail.com>
parents: 19434
diff changeset
4727 [('f', 'force', None,
f4148c36f0aa merge: deprecate the --force option
Florence Laguzet <florence.laguzet@gmail.com>
parents: 19434
diff changeset
4728 _('force a merge including outstanding changes (DEPRECATED)')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4729 ('r', 'rev', '', _('revision to merge'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4730 ('P', 'preview', None,
14852
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
4731 _('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
4732 ] + mergetoolopts,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4733 _('[-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
4734 def merge(ui, repo, node=None, **opts):
23400
3bd577a3283e merge: be precise about what merged into what in short desc
anatoly techtonik <techtonik@gmail.com>
parents: 23137
diff changeset
4735 """merge another revision into working directory
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
4736
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4737 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
4738 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
4739
1cd3775e097c commands: better merge help text
Martin Geisler <mg@daimi.au.dk>
parents: 7976
diff changeset
4740 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
4741 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
4742 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
4743 two parents.
2915
013921c753bd merge with other head by default, not tip.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2911
diff changeset
4744
12750
05bd2658bbb3 merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents: 12727
diff changeset
4745 ``--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
4746 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
4747 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
4748
2915
013921c753bd merge with other head by default, not tip.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2911
diff changeset
4749 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
4750 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
4751 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
4752 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
4753
12750
05bd2658bbb3 merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents: 12727
diff changeset
4754 :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
4755
11452
eac141407b85 merge: document how to 'undo' a merge
Matt Mackall <mpm@selenic.com>
parents: 11442
diff changeset
4756 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
4757 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
4758 all changes.
eac141407b85 merge: document how to 'undo' a merge
Matt Mackall <mpm@selenic.com>
parents: 11442
diff changeset
4759
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4760 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
4761 """
2806
0bf22c109cc3 Factor doupdate into _lookup + hg.update
Matt Mackall <mpm@selenic.com>
parents: 2803
diff changeset
4762
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4763 if opts.get('rev') and node:
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
4764 raise util.Abort(_("please specify just one revision"))
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
4765 if not node:
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4766 node = opts.get('rev')
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
4767
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4768 if node:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4769 node = scmutil.revsingle(repo, node).node()
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4770
24947
a02d293a1079 bookmarks: rename bookmarkcurrent to activebookmark (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24945
diff changeset
4771 if not node and repo._activebookmark:
a02d293a1079 bookmarks: rename bookmarkcurrent to activebookmark (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24945
diff changeset
4772 bmheads = repo.bookmarkheads(repo._activebookmark)
a02d293a1079 bookmarks: rename bookmarkcurrent to activebookmark (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24945
diff changeset
4773 curhead = repo[repo._activebookmark].node()
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4774 if len(bmheads) == 2:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4775 if curhead == bmheads[0]:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4776 node = bmheads[1]
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4777 else:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4778 node = bmheads[0]
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4779 elif len(bmheads) > 2:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4780 raise util.Abort(_("multiple matching bookmarks to merge - "
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4781 "please merge with an explicit rev or bookmark"),
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4782 hint=_("run 'hg heads' to see all heads"))
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4783 elif len(bmheads) <= 1:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4784 raise util.Abort(_("no matching bookmark to merge - "
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4785 "please merge with an explicit rev or bookmark"),
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4786 hint=_("run 'hg heads' to see all heads"))
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4787
24947
a02d293a1079 bookmarks: rename bookmarkcurrent to activebookmark (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24945
diff changeset
4788 if not node and not repo._activebookmark:
13047
6c375e07d673 branch: operate on branch names in local string space where possible
Matt Mackall <mpm@selenic.com>
parents: 13022
diff changeset
4789 branch = repo[None].branch()
6844
a38dff85d31f merge: use correct branch name for counting heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6843
diff changeset
4790 bheads = repo.branchheads(branch)
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4791 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
4792
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4793 if len(nbhs) > 2:
14198
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4794 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
4795 "please merge with an explicit rev")
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4796 % (branch, len(bheads)),
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4797 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
4798
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
4799 parent = repo.dirstate.p1()
17386
45b5eb2941d0 merge: handle case when heads are all bookmarks
John Li <jli@circularly.org>
parents: 17370
diff changeset
4800 if len(nbhs) <= 1:
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4801 if len(bheads) > 1:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4802 raise util.Abort(_("heads are bookmarked - "
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4803 "please merge with an explicit rev"),
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4804 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
4805 if len(repo.heads()) > 1:
14198
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4806 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
4807 "please merge with an explicit rev")
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4808 % branch,
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4809 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
4810 msg, hint = _('nothing to merge'), None
15618
0aca2695a110 merge: remove excess creation of changectx
Kevin Bullock <kbullock@ringworld.org>
parents: 15614
diff changeset
4811 if parent != repo.lookup(branch):
15619
6c8573dd1b6b merge: make 'nothing to merge' aborts consistent
Kevin Bullock <kbullock@ringworld.org>
parents: 15618
diff changeset
4812 hint = _("use 'hg update' instead")
6c8573dd1b6b merge: make 'nothing to merge' aborts consistent
Kevin Bullock <kbullock@ringworld.org>
parents: 15618
diff changeset
4813 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
4814
6723
1fe6f365df2e merge: only in-branch merges can be implicit
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6686
diff changeset
4815 if parent not in bheads:
14198
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4816 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
4817 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
4818 "explicit revision"))
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4819 if parent == nbhs[0]:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4820 node = nbhs[-1]
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4821 else:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4822 node = nbhs[0]
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4823
8834
6d36fc70754e merge: rename -S/--show option to -P/--preview
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8815
diff changeset
4824 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
4825 # 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
4826 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
4827 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
4828 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
4829
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4830 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
4831 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
4832 displayer.show(repo[node])
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
4833 displayer.close()
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4834 return 0
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4835
12788
de793925862e merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents: 12765
diff changeset
4836 try:
de793925862e merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents: 12765
diff changeset
4837 # ui.forcemerge is an internal variable, do not document
20790
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
4838 repo.ui.setconfig('ui', 'forcemerge', opts.get('tool', ''), 'merge')
12788
de793925862e merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents: 12765
diff changeset
4839 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
4840 finally:
20790
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
4841 ui.setconfig('ui', 'forcemerge', '', 'merge')
2029
d436b21b20dc rewrite revert command. fix issues 93, 123, 147.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2022
diff changeset
4842
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4843 @command('outgoing|out',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4844 [('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
4845 ('r', 'rev', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4846 _('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
4847 ('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
4848 ('B', 'bookmarks', False, _('compare bookmarks')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4849 ('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
4850 _('BRANCH')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4851 ] + logopts + remoteopts + subrepoopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4852 _('[-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
4853 def outgoing(ui, repo, dest=None, **opts):
10376
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
4854 """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
4855
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4856 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
4857 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
4858 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
4859
10376
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
4860 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
4861
24661
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4862 .. container:: verbose
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4863
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4864 With -B/--bookmarks, the result of bookmark comparison between
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4865 local and remote repositories is displayed. With -v/--verbose,
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4866 status is also displayed for each bookmark like below::
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4867
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4868 BM1 01234567890a added
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4869 BM2 deleted
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4870 BM3 234567890abc advanced
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4871 BM4 34567890abcd diverged
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4872 BM5 4567890abcde changed
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4873
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4874 The action taken when pushing depends on the
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4875 status of each bookmark:
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4876
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4877 :``added``: push with ``-B`` will create it
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4878 :``deleted``: push with ``-B`` will delete it
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4879 :``advanced``: push will update it
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4880 :``diverged``: push with ``-B`` will update it
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4881 :``changed``: push with ``-B`` will update it
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4882
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4883 From the point of view of pushing behavior, bookmarks
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4884 existing only in the remote repository are treated as
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4885 ``deleted``, even if it is in fact added remotely.
8cf70c97a6e1 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24660
diff changeset
4886
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4887 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
4888 """
17182
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4889 if opts.get('graph'):
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4890 cmdutil.checkunsupportedgraphflags([], opts)
21050
025ec0f08cb6 hg: make "_outgoing()" return peer object for remote repository
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21049
diff changeset
4891 o, other = hg._outgoing(ui, repo, dest, opts)
21049
f117a0ba5289 hg: make "_outgoing()" return empty list instead of "None"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21047
diff changeset
4892 if not o:
21051
1004d3cd65fd outgoing: introduce "outgoinghooks" to avoid redundant outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21050
diff changeset
4893 cmdutil.outgoinghooks(ui, repo, other, opts, o)
17182
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4894 return
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4895
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4896 revdag = cmdutil.graphrevs(repo, o, opts)
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4897 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
4898 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
4899 cmdutil.displaygraph(ui, revdag, displayer, showparents,
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4900 graphmod.asciiedges)
21051
1004d3cd65fd outgoing: introduce "outgoinghooks" to avoid redundant outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21050
diff changeset
4901 cmdutil.outgoinghooks(ui, repo, other, opts, o)
17182
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4902 return 0
13366
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4903
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4904 if opts.get('bookmarks'):
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4905 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
4906 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
4907 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
4908 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
4909 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
4910 return 0
14076
924c82157d46 url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents: 14073
diff changeset
4911 ui.status(_('comparing with %s\n') % util.hidepassword(dest))
24398
c0096a2bd3ff bookmarks: add outgoing() to replace diff() for outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24397
diff changeset
4912 return bookmarks.outgoing(ui, repo, other)
13366
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4913
14360
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4914 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
4915 try:
14362
8c740a850ad7 commands: replace 'x = f(); return x' with 'return f()'
Martin Geisler <mg@lazybytes.net>
parents: 14361
diff changeset
4916 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
4917 finally:
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4918 del repo._subtoppath
920
270756aa29d5 Add hg outgoing command
mpm@selenic.com
parents: 918
diff changeset
4919
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4920 @command('parents',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4921 [('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
4922 ] + templateopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
4923 _('[-r REV] [FILE]'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
4924 inferrepo=True)
3658
d12c8668b102 remove legacy hg parents REV syntax
Matt Mackall <mpm@selenic.com>
parents: 3657
diff changeset
4925 def parents(ui, repo, file_=None, **opts):
22501
bde49bbfb30f commands: deprecate the parents commands
Matt Mackall <mpm@selenic.com>
parents: 22480
diff changeset
4926 """show the parents of the working directory or revision (DEPRECATED)
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4927
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4928 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
4929 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
4930 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
4931 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
4932 argument to --rev if given) is printed.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4933
22501
bde49bbfb30f commands: deprecate the parents commands
Matt Mackall <mpm@selenic.com>
parents: 22480
diff changeset
4934 See :hg:`summary` and :hg:`help revsets` for related information.
bde49bbfb30f commands: deprecate the parents commands
Matt Mackall <mpm@selenic.com>
parents: 22480
diff changeset
4935
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4936 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4937 """
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
4938
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
4939 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
4940
4586
1fcc076fcb17 Make parents with a file but not a revision use working directory revision.
Brendan Cully <brendan@kublai.com>
parents: 4451
diff changeset
4941 if file_:
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
4942 m = scmutil.match(ctx, (file_,), opts)
6582
5acbdd3941c4 walk: remove remaining users of cmdutils.matchpats
Matt Mackall <mpm@selenic.com>
parents: 6579
diff changeset
4943 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
4944 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
4945 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
4946 filenodes = []
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4947 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
4948 if not cp:
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4949 continue
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4950 try:
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4951 filenodes.append(cp.filenode(file_))
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents: 7632
diff changeset
4952 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
4953 pass
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4954 if not filenodes:
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4955 raise util.Abort(_("'%s' not found in manifest!") % file_)
19333
0cfb62e043e8 parents: change parents command to use filectx
Durham Goode <durham@fb.com>
parents: 19306
diff changeset
4956 p = []
0cfb62e043e8 parents: change parents command to use filectx
Durham Goode <durham@fb.com>
parents: 19306
diff changeset
4957 for fn in filenodes:
0cfb62e043e8 parents: change parents command to use filectx
Durham Goode <durham@fb.com>
parents: 19306
diff changeset
4958 fctx = repo.filectx(file_, fileid=fn)
0cfb62e043e8 parents: change parents command to use filectx
Durham Goode <durham@fb.com>
parents: 19306
diff changeset
4959 p.append(fctx.node())
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4960 else:
5298
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4961 p = [cp.node() for cp in ctx.parents()]
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4962
3643
b4ad640a3bcf templates: move changeset templating bits to cmdutils
Matt Mackall <mpm@selenic.com>
parents: 3631
diff changeset
4963 displayer = cmdutil.show_changeset(ui, repo, opts)
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4964 for n in p:
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
4965 if n != nullid:
7743
ec9b726a9428 commands: fix paths command docstring indention
Martin Geisler <mg@daimi.au.dk>
parents: 7739
diff changeset
4966 displayer.show(repo[n])
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
4967 displayer.close()
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4968
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
4969 @command('paths', [], _('[NAME]'), optionalrepo=True)
1858
9fab6e903bae Make hg paths and hg debugconfig work with -R/--repository option.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1857
diff changeset
4970 def paths(ui, repo, search=None):
7691
bcdc2fe3fd07 Clarified 'hg paths' command help
Bill Barry <after.fallout@gmail.com>
parents: 7684
diff changeset
4971 """show aliases for remote repositories
bcdc2fe3fd07 Clarified 'hg paths' command help
Bill Barry <after.fallout@gmail.com>
parents: 7684
diff changeset
4972
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4973 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
4974 show definition of all available names.
7743
ec9b726a9428 commands: fix paths command docstring indention
Martin Geisler <mg@daimi.au.dk>
parents: 7739
diff changeset
4975
14331
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
4976 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
4977 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
4978
12083
ebfc46929f3e help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents: 12067
diff changeset
4979 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
4980 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
4981 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
4982
11007
a0102da324ab commands: revised documentation of 'default' and 'default-push'
Faheem Mitha <faheem@email.unc.edu>
parents: 10948
diff changeset
4983 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
4984 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
4985 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
4986 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
4987 ``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
4988 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
4989 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
4990 ``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
4991 :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
4992 :hg:`bundle`) operations.
10933
e3396b218e10 Document 'default' and 'default-push' in paths docstring
Faheem Mitha <faheem@email.unc.edu>
parents: 10645
diff changeset
4993
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
4994 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
4995
35e2d453cf0d commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11488
diff changeset
4996 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4997 """
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4998 if search:
24251
a330660b3d71 commands.paths: use ui.paths to show paths
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24248
diff changeset
4999 for name, path in sorted(ui.paths.iteritems()):
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
5000 if name == search:
24251
a330660b3d71 commands.paths: use ui.paths to show paths
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24248
diff changeset
5001 ui.status("%s\n" % util.hidepassword(path.loc))
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
5002 return
14331
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
5003 if not ui.quiet:
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
5004 ui.warn(_("not found!\n"))
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
5005 return 1
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
5006 else:
24251
a330660b3d71 commands.paths: use ui.paths to show paths
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24248
diff changeset
5007 for name, path in sorted(ui.paths.iteritems()):
14331
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
5008 if ui.quiet:
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
5009 ui.write("%s\n" % name)
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
5010 else:
24251
a330660b3d71 commands.paths: use ui.paths to show paths
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24248
diff changeset
5011 ui.write("%s = %s\n" % (name,
a330660b3d71 commands.paths: use ui.paths to show paths
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24248
diff changeset
5012 util.hidepassword(path.loc)))
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
5013
17981
e689b0d91546 command: remove phase from the list of basic command
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 17949
diff changeset
5014 @command('phase',
15849
513ca86b88ef phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents: 15837
diff changeset
5015 [('p', 'public', False, _('set changeset phase to public')),
513ca86b88ef phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents: 15837
diff changeset
5016 ('d', 'draft', False, _('set changeset phase to draft')),
513ca86b88ef phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents: 15837
diff changeset
5017 ('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
5018 ('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
5019 ('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
5020 ],
25120
a7701001c829 phase: default to current revision if no rev is provided (issue4666)
Gilles Moris <gilles.moris@free.fr>
parents: 25119
diff changeset
5021 _('[-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
5022 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
5023 """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
5024
25120
a7701001c829 phase: default to current revision if no rev is provided (issue4666)
Gilles Moris <gilles.moris@free.fr>
parents: 25119
diff changeset
5025 With no argument, show the phase name of the current revision(s).
15830
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
5026
15851
05ccad068313 phase: use standard syntax for command line flags
Martin Geisler <mg@aragost.com>
parents: 15850
diff changeset
5027 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
5028 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
5029
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
5030 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
5031 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
5032
b03388ffeb31 phase: fix up help string
Matt Mackall <mpm@selenic.com>
parents: 15831
diff changeset
5033 public < draft < secret
15906
aad565319fa3 phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 15877
diff changeset
5034
20633
2d183dd54384 phase: say "Returns 0" instead of "Return 0" like other command help
Yuya Nishihara <yuya@tcha.org>
parents: 20594
diff changeset
5035 Returns 0 on success, 1 if no phases were changed or some could not
16097
8dc573a9c5e5 phase: when phase cannot be reduced, hint at --force and return 1 (BC)
Patrick Mezard <patrick@mezard.eu>
parents: 16095
diff changeset
5036 be changed.
25626
ea0902e3128e phase: add a pointer to 'hg help phases' in the 'phase' help
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25468
diff changeset
5037
ea0902e3128e phase: add a pointer to 'hg help phases' in the 'phase' help
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25468
diff changeset
5038 (For more information about the phases concept, see :hg:`help phases`.)
15830
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
5039 """
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
5040 # 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
5041 targetphase = None
15853
fbb68b382040 commands: no need to rename merge and phases on import
Martin Geisler <mg@aragost.com>
parents: 15852
diff changeset
5042 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
5043 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
5044 if targetphase is not None:
15833
3cf2bb3a9fcc phase: mark messages for i18n
Matt Mackall <mpm@selenic.com>
parents: 15832
diff changeset
5045 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
5046 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
5047
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
5048 # 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
5049 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
5050 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
5051 if not revs:
25120
a7701001c829 phase: default to current revision if no rev is provided (issue4666)
Gilles Moris <gilles.moris@free.fr>
parents: 25119
diff changeset
5052 # display both parents as the second parent phase can influence
a7701001c829 phase: default to current revision if no rev is provided (issue4666)
Gilles Moris <gilles.moris@free.fr>
parents: 25119
diff changeset
5053 # the phase of a merge commit
a7701001c829 phase: default to current revision if no rev is provided (issue4666)
Gilles Moris <gilles.moris@free.fr>
parents: 25119
diff changeset
5054 revs = [c.rev() for c in repo[None].parents()]
15831
0ecaf1e72609 phase: drop reference to working directory phase
Matt Mackall <mpm@selenic.com>
parents: 15830
diff changeset
5055
16024
7c967c4a6144 phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 16023
diff changeset
5056 revs = scmutil.revrange(repo, revs)
7c967c4a6144 phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 16023
diff changeset
5057
15830
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
5058 lock = None
15906
aad565319fa3 phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 15877
diff changeset
5059 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
5060 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
5061 # display
16024
7c967c4a6144 phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 16023
diff changeset
5062 for r in revs:
7c967c4a6144 phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 16023
diff changeset
5063 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
5064 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
5065 else:
22050
56ccd95b49c6 phase: wrap `hg phases` phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22039
diff changeset
5066 tr = None
15830
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
5067 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
5068 try:
22050
56ccd95b49c6 phase: wrap `hg phases` phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22039
diff changeset
5069 tr = repo.transaction("phase")
15830
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
5070 # set phase
16659
58edd786e96f phase: make if abort on nullid for the good reason
Patrick Mezard <patrick@mezard.eu>
parents: 16657
diff changeset
5071 if not revs:
17299
e51d4aedace9 check-code: indent 4 spaces in py files
Mads Kiilerich <mads@kiilerich.com>
parents: 17292
diff changeset
5072 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
5073 nodes = [repo[r].node() for r in revs]
22892
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
5074 # moving revision from public to draft may hide them
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
5075 # We have to check result on an unfiltered repository
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
5076 unfi = repo.unfiltered()
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
5077 getphase = unfi._phasecache.phase
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
5078 olddata = [getphase(unfi, r) for r in unfi]
22069
616a455b02ca phase: add a transaction argument to advanceboundary
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22050
diff changeset
5079 phases.advanceboundary(repo, tr, 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
5080 if opts['force']:
22070
c1ca47204590 phase: add a transaction argument to retractboundary
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22069
diff changeset
5081 phases.retractboundary(repo, tr, targetphase, nodes)
22050
56ccd95b49c6 phase: wrap `hg phases` phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22039
diff changeset
5082 tr.close()
15830
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
5083 finally:
22050
56ccd95b49c6 phase: wrap `hg phases` phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22039
diff changeset
5084 if tr is not None:
56ccd95b49c6 phase: wrap `hg phases` phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22039
diff changeset
5085 tr.release()
15830
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
5086 lock.release()
22892
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
5087 getphase = unfi._phasecache.phase
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
5088 newdata = [getphase(unfi, r) for r in unfi]
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
5089 changes = sum(newdata[r] != olddata[r] for r in unfi)
18210
f730ed2e093d phases: prepare phase command for filtering
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18209
diff changeset
5090 cl = unfi.changelog
16715
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
5091 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
5092 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
5093 if rejected:
20093
1dee888b22f7 phase: better error message when --force is needed
Martin Geisler <martin@geisler.net>
parents: 19997
diff changeset
5094 ui.warn(_('cannot move %i changesets to a higher '
16715
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
5095 'phase, use --force\n') % len(rejected))
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
5096 ret = 1
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
5097 if changes:
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
5098 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
5099 if ret:
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
5100 ui.status(msg)
15906
aad565319fa3 phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 15877
diff changeset
5101 else:
16715
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
5102 ui.note(msg)
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
5103 else:
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
5104 ui.warn(_('no phases changed\n'))
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
5105 ret = 1
15968
bf87b6b95ce5 phase: alway return a value
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 15959
diff changeset
5106 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
5107
5224
20817af258d8 pull -u: if "url#rev" was given, update to rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 5222
diff changeset
5108 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
5109 if modheads == 0:
16107
a3dcc59054ca pull: backout change to return code
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
5110 return
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
5111 if optupdate:
19523
f37b5a17e6a0 bookmarks: pull --update updates to active bookmark if it moved (issue4007)
Kevin Bullock <kbullock@ringworld.org>
parents: 19496
diff changeset
5112 checkout, movemarkfrom = bookmarks.calculateupdate(ui, repo, checkout)
14485
610873cf064a Make pull -u behave like pull && update
Brendan Cully <brendan@kublai.com>
parents: 14466
diff changeset
5113 try:
16019
eb85d5f89fef bookmarks: move current bookmark on update -u and bare pull -u (issue3222)
Matt Mackall <mpm@selenic.com>
parents: 16010
diff changeset
5114 ret = hg.update(repo, checkout)
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25658
diff changeset
5115 except util.Abort as inst:
16230
d4d35fd0889d update: don't translate the abort message twice
Javi Merino <cibervicho@gmail.com>
parents: 16219
diff changeset
5116 ui.warn(_("not updating: %s\n") % str(inst))
19797
a9abdb168425 pull: for pull --update with failed update, print hint if any
Siddharth Agarwal <sid0@fb.com>
parents: 19757
diff changeset
5117 if inst.hint:
a9abdb168425 pull: for pull --update with failed update, print hint if any
Siddharth Agarwal <sid0@fb.com>
parents: 19757
diff changeset
5118 ui.warn(_("(%s)\n") % inst.hint)
14485
610873cf064a Make pull -u behave like pull && update
Brendan Cully <brendan@kublai.com>
parents: 14466
diff changeset
5119 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
5120 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
5121 if bookmarks.update(repo, [movemarkfrom], repo['.'].node()):
24947
a02d293a1079 bookmarks: rename bookmarkcurrent to activebookmark (API)
Ryan McElroy <rmcelroy@fb.com>
parents: 24945
diff changeset
5122 ui.status(_("updating bookmark %s\n") % repo._activebookmark)
16019
eb85d5f89fef bookmarks: move current bookmark on update -u and bare pull -u (issue3222)
Matt Mackall <mpm@selenic.com>
parents: 16010
diff changeset
5123 return ret
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
5124 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
5125 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
5126 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
5127 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
5128 elif currentbranchheads > 1:
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
5129 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
5130 "merge)\n"))
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
5131 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
5132 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
5133 else:
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
5134 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
5135
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5136 @command('^pull',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5137 [('u', 'update', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5138 _('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
5139 ('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
5140 ('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
5141 ('B', 'bookmark', [], _("bookmark to pull"), _('BOOKMARK')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5142 ('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
5143 _('BRANCH')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5144 ] + remoteopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5145 _('[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]'))
404
a1ecef497721 [PATCH] Unintuive use
mpm@selenic.com
parents: 403
diff changeset
5146 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
5147 """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
5148
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
5149 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
5150
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5151 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
5152 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
5153 -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
5154 project in the working directory.
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
5155
11193
687c7d395f20 Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents: 11185
diff changeset
5156 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
5157 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
5158 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
5159 -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
5160
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
5161 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
5162 See :hg:`help urls` for more information.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5163
16107
a3dcc59054ca pull: backout change to return code
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
5164 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
5165 """
10379
a78bfaf988e1 add -b/--branch option to clone, bundle, incoming, outgoing, pull, push
Sune Foldager <cryo@cyanite.org>
parents: 10376
diff changeset
5166 source, branches = hg.parseurl(ui.expandpath(source), opts.get('branch'))
24138
eabe44ec5af5 pull: print "pulling from foo" before accessing the other repo
Thomas Arendsen Hein <thomas@intevation.de>
parents: 24127
diff changeset
5167 ui.status(_('pulling from %s\n') % util.hidepassword(source))
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
5168 other = hg.peer(repo, opts, source)
20576
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5169 try:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5170 revs, checkout = hg.addbranchrevs(repo, other, branches,
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5171 opts.get('rev'))
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5172
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5173
25445
1457c1f28c92 pull: allow a generic way to pass parameters to the pull operation
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25427
diff changeset
5174 pullopargs = {}
20576
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5175 if opts.get('bookmark'):
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5176 if not revs:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5177 revs = []
25368
ae38370fe282 pull: document the race condition with bookmark name
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25367
diff changeset
5178 # The list of bookmark used here is not the one used to actually
ae38370fe282 pull: document the race condition with bookmark name
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25367
diff changeset
5179 # update the bookmark name. This can result in the revision pulled
ae38370fe282 pull: document the race condition with bookmark name
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25367
diff changeset
5180 # not ending up with the name of the bookmark because of a race
ae38370fe282 pull: document the race condition with bookmark name
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25367
diff changeset
5181 # condition on the server. (See issue 4689 for details)
25367
d0f1d8b4de57 pull: only list remote bookmarks if -B is used to populate pulled heads
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25349
diff changeset
5182 remotebookmarks = other.listkeys('bookmarks')
25446
b5311068077e pull: prevent race condition in bookmark update when using -B (issue4689)
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25445
diff changeset
5183 pullopargs['remotebookmarks'] = remotebookmarks
20576
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5184 for b in opts['bookmark']:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5185 if b not in remotebookmarks:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5186 raise util.Abort(_('remote bookmark %s not found!') % b)
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5187 revs.append(remotebookmarks[b])
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5188
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5189 if revs:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5190 try:
25368
ae38370fe282 pull: document the race condition with bookmark name
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25367
diff changeset
5191 # When 'rev' is a bookmark name, we cannot guarantee that it
ae38370fe282 pull: document the race condition with bookmark name
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25367
diff changeset
5192 # will be updated with that name because of a race condition
ae38370fe282 pull: document the race condition with bookmark name
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25367
diff changeset
5193 # server side. (See issue 4689 for details)
25425
9263f86b9681 pull: avoid race condition with 'hg pull --rev name --update' (issue4706)
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 24906
diff changeset
5194 oldrevs = revs
9263f86b9681 pull: avoid race condition with 'hg pull --rev name --update' (issue4706)
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 24906
diff changeset
5195 revs = [] # actually, nodes
9263f86b9681 pull: avoid race condition with 'hg pull --rev name --update' (issue4706)
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 24906
diff changeset
5196 for r in oldrevs:
9263f86b9681 pull: avoid race condition with 'hg pull --rev name --update' (issue4706)
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 24906
diff changeset
5197 node = other.lookup(r)
9263f86b9681 pull: avoid race condition with 'hg pull --rev name --update' (issue4706)
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 24906
diff changeset
5198 revs.append(node)
9263f86b9681 pull: avoid race condition with 'hg pull --rev name --update' (issue4706)
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 24906
diff changeset
5199 if r == checkout:
9263f86b9681 pull: avoid race condition with 'hg pull --rev name --update' (issue4706)
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 24906
diff changeset
5200 checkout = node
20576
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5201 except error.CapabilityError:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5202 err = _("other repository doesn't support revision lookup, "
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5203 "so a rev cannot be specified.")
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5204 raise util.Abort(err)
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5205
22694
21d5416b8a8a commands: directly use exchange.pull
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22677
diff changeset
5206 modheads = exchange.pull(repo, other, heads=revs,
21d5416b8a8a commands: directly use exchange.pull
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22677
diff changeset
5207 force=opts.get('force'),
25445
1457c1f28c92 pull: allow a generic way to pass parameters to the pull operation
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25427
diff changeset
5208 bookmarks=opts.get('bookmark', ()),
1457c1f28c92 pull: allow a generic way to pass parameters to the pull operation
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25427
diff changeset
5209 opargs=pullopargs).cgresult
20576
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5210 if checkout:
25425
9263f86b9681 pull: avoid race condition with 'hg pull --rev name --update' (issue4706)
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 24906
diff changeset
5211 checkout = str(repo.changelog.rev(checkout))
20576
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5212 repo._subtoppath = source
5259
65dc707606ed Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 5248
diff changeset
5213 try:
20576
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5214 ret = postincoming(ui, repo, modheads, opts.get('update'), checkout)
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5215
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5216 finally:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5217 del repo._subtoppath
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5218
12852
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5219 finally:
20576
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5220 other.close()
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5221 return ret
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5222
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5223 @command('^push',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5224 [('f', 'force', None, _('force push')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5225 ('r', 'rev', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5226 _('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
5227 _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5228 ('B', 'bookmark', [], _("bookmark to push"), _('BOOKMARK')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5229 ('b', 'branch', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5230 _('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
5231 ('', '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
5232 ] + remoteopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5233 _('[-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
5234 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
5235 """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
5236
11217
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5237 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
5238 destination.
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5239
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5240 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
5241 in the destination repository from the current one.
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5242
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5243 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
5244 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
5245 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
5246 before pushing.
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5247
11219
39a7f69a0a9a commands: document --new-branch flag for push
Martin Geisler <mg@aragost.com>
parents: 11218
diff changeset
5248 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
5249 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
5250 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
5251
19935
4f53de036af8 push: add more detailed explanation about "--force" to online help document
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19919
diff changeset
5252 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
5253
19941
2bf99bc5077a help: minor tweak to push help
Matt Mackall <mpm@selenic.com>
parents: 19935
diff changeset
5254 Extra care should be taken with the -f/--force option,
19935
4f53de036af8 push: add more detailed explanation about "--force" to online help document
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19919
diff changeset
5255 which will push all new heads on all branches, an action which will
4f53de036af8 push: add more detailed explanation about "--force" to online help document
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19919
diff changeset
5256 almost always cause confusion for collaborators.
11217
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5257
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5258 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
5259 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
5260
17190
d99d0b559084 bookmarks: document behavior of -B/--bookmark in help
Augie Fackler <raf@durin42.com>
parents: 17188
diff changeset
5261 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
5262 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
5263 repository.
d99d0b559084 bookmarks: document behavior of -B/--bookmark in help
Augie Fackler <raf@durin42.com>
parents: 17188
diff changeset
5264
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
5265 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
5266 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
5267
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5268 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
5269 """
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5270
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5271 if opts.get('bookmark'):
20790
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
5272 ui.setconfig('bookmarks', 'pushing', opts['bookmark'], 'push')
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5273 for b in opts['bookmark']:
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5274 # 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
5275 if b in repo._bookmarks:
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5276 opts.setdefault('rev', []).append(b)
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5277 else:
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5278 # 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
5279 # 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
5280 opts.setdefault('rev', []).append("null")
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5281
26065
dceaef70e410 commands.push: use "pushloc" path attribute
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26057
diff changeset
5282 path = ui.paths.getpath(dest, default='default')
26057
10917b062adf commands.push: use paths API
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26030
diff changeset
5283 if not path:
10917b062adf commands.push: use paths API
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26030
diff changeset
5284 raise util.Abort(_('default repository not configured!'),
10917b062adf commands.push: use paths API
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26030
diff changeset
5285 hint=_('see the "path" section in "hg help config"'))
26065
dceaef70e410 commands.push: use "pushloc" path attribute
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26057
diff changeset
5286 dest, branches = path.pushloc, (path.branch, opts.get('branch') or [])
14076
924c82157d46 url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents: 14073
diff changeset
5287 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
5288 revs, checkout = hg.addbranchrevs(repo, repo, branches, opts.get('rev'))
26057
10917b062adf commands.push: use paths API
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26030
diff changeset
5289 other = hg.peer(repo, opts, dest)
20558
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5290
4478
b2b55acbacdd Add support for url#id syntax
Matt Mackall <mpm@selenic.com>
parents: 4474
diff changeset
5291 if revs:
17168
e058f4eec69c push: accept revset argument for --rev
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 17149
diff changeset
5292 revs = [repo.lookup(r) for r in scmutil.revrange(repo, revs)]
24429
69bd0ec2f9be commands.push: abort when revisions evaluate to empty set (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24421
diff changeset
5293 if not revs:
69bd0ec2f9be commands.push: abort when revisions evaluate to empty set (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24421
diff changeset
5294 raise util.Abort(_("specified revisions evaluate to an empty set"),
69bd0ec2f9be commands.push: abort when revisions evaluate to empty set (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24421
diff changeset
5295 hint=_("use different revision arguments"))
8815
e87b0fc4750b subrepo: basic push support
Matt Mackall <mpm@selenic.com>
parents: 8812
diff changeset
5296
12852
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5297 repo._subtoppath = dest
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5298 try:
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5299 # 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
5300 c = repo['']
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5301 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
5302 for s in sorted(subs):
21034
693b4cb4330f subrepo: return non-zero exit code when a subrepo push doesn't succeed
Matt Mackall <mpm@selenic.com>
parents: 21032
diff changeset
5303 result = c.sub(s).push(opts)
693b4cb4330f subrepo: return non-zero exit code when a subrepo push doesn't succeed
Matt Mackall <mpm@selenic.com>
parents: 21032
diff changeset
5304 if result == 0:
693b4cb4330f subrepo: return non-zero exit code when a subrepo push doesn't succeed
Matt Mackall <mpm@selenic.com>
parents: 21032
diff changeset
5305 return not result
12852
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5306 finally:
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5307 del repo._subtoppath
22617
1625770c2ce1 push: use `exchange.push` in `commands.push`
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22594
diff changeset
5308 pushop = exchange.push(repo, other, opts.get('force'), revs=revs,
22623
cd7e17aa6040 push: pass list of bookmark to `exchange.push`
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22621
diff changeset
5309 newbranch=opts.get('new_branch'),
cd7e17aa6040 push: pass list of bookmark to `exchange.push`
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22621
diff changeset
5310 bookmarks=opts.get('bookmark', ()))
22617
1625770c2ce1 push: use `exchange.push` in `commands.push`
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22594
diff changeset
5311
1625770c2ce1 push: use `exchange.push` in `commands.push`
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22594
diff changeset
5312 result = not pushop.cgresult
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5313
22625
62ab9ca90b36 push: perform bookmark export in the push function
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22623
diff changeset
5314 if pushop.bkresult is not None:
62ab9ca90b36 push: perform bookmark export in the push function
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22623
diff changeset
5315 if pushop.bkresult == 2:
22621
76a43e0db516 push: sanitize handling of bookmark push return value
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22617
diff changeset
5316 result = 2
22625
62ab9ca90b36 push: perform bookmark export in the push function
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22623
diff changeset
5317 elif not result and pushop.bkresult:
20026
84905561ad41 bookmarks: rewrite pushing local bookmarks in "commands.push()" by "compare()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19997
diff changeset
5318 result = 2
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5319
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5320 return result
319
9ab17e83bce3 stopgap hg push support
mpm@selenic.com
parents: 317
diff changeset
5321
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5322 @command('recover', [])
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
5323 def recover(ui, repo):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5324 """roll back an interrupted transaction
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5325
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5326 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
5327
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
5328 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
5329 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
5330 suggests it.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5331
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5332 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
5333 """
1516
0b1b029b4de3 Automatically run "verify" whenever we run "recover"
Matt Mackall <mpm@selenic.com>
parents: 1514
diff changeset
5334 if repo.recover():
2778
fdc232d8a193 Move repo.verify
Matt Mackall <mpm@selenic.com>
parents: 2776
diff changeset
5335 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
5336 return 1
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
5337
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5338 @command('^remove|rm',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5339 [('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
5340 ('f', 'force', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5341 _('remove (and delete) file even if added or modified')),
23325
4165cfd67519 remove: recurse into subrepositories with --subrepos/-S flag
Matt Harbison <matt_harbison@yahoo.com>
parents: 23319
diff changeset
5342 ] + subrepoopts + walkopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5343 _('[OPTION]... FILE...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5344 inferrepo=True)
2179
520dd3d28e9b add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2175
diff changeset
5345 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
5346 """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
5347
15114
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5348 Schedule the indicated files for removal from the current branch.
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5349
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5350 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
5351 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
5352 files, see :hg:`forget`.
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5353
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5354 .. container:: verbose
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5355
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5356 -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
5357 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
5358 can be used to remove files from the next revision without
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5359 deleting them from the working directory.
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5360
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5361 The following table details the behavior of remove for different
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5362 file states (columns) and option combinations (rows). The file
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5363 states are Added [A], Clean [C], Modified [M] and Missing [!]
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5364 (as reported by :hg:`status`). The actions are Warn, Remove
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5365 (from branch) and Delete (from disk):
15037
df47381b41d6 minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents: 15023
diff changeset
5366
19960
95304251c376 doc: put text into header of 1st column in table to generate page correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19959
diff changeset
5367 ========= == == == ==
95304251c376 doc: put text into header of 1st column in table to generate page correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19959
diff changeset
5368 opt/state A C M !
95304251c376 doc: put text into header of 1st column in table to generate page correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19959
diff changeset
5369 ========= == == == ==
95304251c376 doc: put text into header of 1st column in table to generate page correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19959
diff changeset
5370 none W RD W R
95304251c376 doc: put text into header of 1st column in table to generate page correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19959
diff changeset
5371 -f R RD RD R
95304251c376 doc: put text into header of 1st column in table to generate page correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19959
diff changeset
5372 -A W W W R
95304251c376 doc: put text into header of 1st column in table to generate page correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19959
diff changeset
5373 -Af R R R R
95304251c376 doc: put text into header of 1st column in table to generate page correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19959
diff changeset
5374 ========= == == == ==
2309
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
5375
15114
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5376 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
5377 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
5378
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5379 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
5380 """
6346
8e3b651382f5 improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6336
diff changeset
5381
8e3b651382f5 improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6336
diff changeset
5382 after, force = opts.get('after'), opts.get('force')
8e3b651382f5 improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6336
diff changeset
5383 if not pats and not after:
2179
520dd3d28e9b add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2175
diff changeset
5384 raise util.Abort(_('no files specified'))
6346
8e3b651382f5 improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6336
diff changeset
5385
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
5386 m = scmutil.match(repo[None], pats, opts)
23325
4165cfd67519 remove: recurse into subrepositories with --subrepos/-S flag
Matt Harbison <matt_harbison@yahoo.com>
parents: 23319
diff changeset
5387 subrepos = opts.get('subrepos')
4165cfd67519 remove: recurse into subrepositories with --subrepos/-S flag
Matt Harbison <matt_harbison@yahoo.com>
parents: 23319
diff changeset
5388 return cmdutil.remove(ui, repo, m, "", after, force, subrepos)
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
5389
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5390 @command('rename|move|mv',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5391 [('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
5392 ('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
5393 ] + walkopts + dryrunopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5394 _('[OPTION]... SOURCE... DEST'))
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
5395 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
5396 """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
5397
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
5398 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
5399 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
5400 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
5401
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5402 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
5403 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
5404 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
5405
7807
bd8f44638847 help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents: 7765
diff changeset
5406 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
5407 before that, see :hg:`revert`.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5408
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5409 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
5410 """
4914
9a2a73ea6135 repo locks: use True/False
Matt Mackall <mpm@selenic.com>
parents: 4906
diff changeset
5411 wlock = repo.wlock(False)
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
5412 try:
5610
2493a478f395 copy: handle rename internally
Matt Mackall <mpm@selenic.com>
parents: 5589
diff changeset
5413 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
5414 finally:
8109
496ae1ea4698 switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents: 8088
diff changeset
5415 wlock.release()
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
5416
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5417 @command('resolve',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5418 [('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
5419 ('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
5420 ('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
5421 ('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
5422 ('n', 'no-status', None, _('hide status prefix'))]
24127
4cb8002658d6 resolve: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 24126
diff changeset
5423 + mergetoolopts + walkopts + formatteropts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5424 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5425 inferrepo=True)
6518
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5426 def resolve(ui, repo, *pats, **opts):
11836
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5427 """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
5428
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5429 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
5430 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
5431 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
5432 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
5433 :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
5434 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
5435 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
5436
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5437 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
5438
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12803
diff changeset
5439 - :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
5440 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
5441 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
5442 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
5443 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
5444 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
5445 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
5446
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5447 - :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
5448 (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
5449 to mark all unresolved files.
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5450
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5451 - :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
5452 default is to mark all resolved files.
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5453
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5454 - :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
5455 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
5456
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5457 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
5458 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
5459 commit after a conflicting merge.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5460
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5461 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
5462 """
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5463
9646
5b001f534452 commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents: 9645
diff changeset
5464 all, mark, unmark, show, nostatus = \
5b001f534452 commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents: 9645
diff changeset
5465 [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
5466
5a14a8f3b909 resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents: 7449
diff changeset
5467 if (show and (mark or unmark)) or (mark and unmark):
6518
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5468 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
5469 if pats and all:
5a14a8f3b909 resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents: 7449
diff changeset
5470 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
5471 if not (all or pats or show or mark or unmark):
21940
9209c02f1f25 resolve: report no argument warning using a hint
Nathan Goldbaum <ngoldbau@ucsc.edu>
parents: 21937
diff changeset
5472 raise util.Abort(_('no files or directories specified'),
9209c02f1f25 resolve: report no argument warning using a hint
Nathan Goldbaum <ngoldbau@ucsc.edu>
parents: 21937
diff changeset
5473 hint=('use --all to remerge all files'))
6518
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5474
24126
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5475 if show:
24127
4cb8002658d6 resolve: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 24126
diff changeset
5476 fm = ui.formatter('resolve', opts)
24126
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5477 ms = mergemod.mergestate(repo)
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5478 m = scmutil.match(repo[None], pats, opts)
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5479 for f in ms:
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5480 if not m(f):
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5481 continue
24127
4cb8002658d6 resolve: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 24126
diff changeset
5482 l = 'resolve.' + {'u': 'unresolved', 'r': 'resolved'}[ms[f]]
4cb8002658d6 resolve: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 24126
diff changeset
5483 fm.startitem()
4cb8002658d6 resolve: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 24126
diff changeset
5484 fm.condwrite(not nostatus, 'status', '%s ', ms[f].upper(), label=l)
4cb8002658d6 resolve: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 24126
diff changeset
5485 fm.write('path', '%s\n', f, label=l)
4cb8002658d6 resolve: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 24126
diff changeset
5486 fm.end()
24126
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5487 return 0
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5488
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5489 wlock = repo.wlock()
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5490 try:
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5491 ms = mergemod.mergestate(repo)
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5492
24126
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5493 if not (ms.active() or repo.dirstate.p2() != nullid):
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5494 raise util.Abort(
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5495 _('resolve command not applicable when not merging'))
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5496
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5497 m = scmutil.match(repo[None], pats, opts)
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5498 ret = 0
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5499 didwork = False
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5500
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5501 for f in ms:
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5502 if not m(f):
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5503 continue
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5504
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5505 didwork = True
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5506
24126
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5507 if mark:
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5508 ms.mark(f, "r")
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5509 elif unmark:
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5510 ms.mark(f, "u")
6518
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5511 else:
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5512 wctx = repo[None]
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5513
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5514 # backup pre-resolve (merge uses .orig for its own purposes)
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5515 a = repo.wjoin(f)
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5516 util.copyfile(a, a + ".resolve")
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5517
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5518 try:
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5519 # resolve file
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5520 ui.setconfig('ui', 'forcemerge', opts.get('tool', ''),
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5521 'resolve')
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5522 if ms.resolve(f, wctx):
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5523 ret = 1
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5524 finally:
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5525 ui.setconfig('ui', 'forcemerge', '', 'resolve')
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5526 ms.commit()
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5527
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5528 # replace filemerge's .orig file with our resolve file
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5529 util.rename(a + ".resolve", a + ".orig")
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5530
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5531 ms.commit()
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5532
24126
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5533 if not didwork and pats:
21721
6539c4e9c874 resolve: fix grammar of no matching files message
Matt Mackall <mpm@selenic.com>
parents: 21720
diff changeset
5534 ui.warn(_("arguments do not match paths that need resolving\n"))
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5535
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5536 finally:
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5537 wlock.release()
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5538
24126
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5539 # Nudge users into finishing an unfinished operation
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5540 if not list(ms.unresolved()):
21947
b081decd9062 resolve: add parenthesis around "no more unresolved files" message
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21944
diff changeset
5541 ui.status(_('(no more unresolved files)\n'))
21266
19d6fec60b81 resolve: print message when no unresolved files remain (issue4214)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21265
diff changeset
5542
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5543 return ret
7847
30cb79d84352 resolve: keep .orig files
Matt Mackall <mpm@selenic.com>
parents: 7829
diff changeset
5544
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5545 @command('revert',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5546 [('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
5547 ('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
5548 ('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
5549 ('C', 'no-backup', None, _('do not save backup copies of files')),
24873
12908cdbab73 revert: make the interactive mode experimental
Laurent Charignon <lcharignon@fb.com>
parents: 24841
diff changeset
5550 ('i', 'interactive', None,
12908cdbab73 revert: make the interactive mode experimental
Laurent Charignon <lcharignon@fb.com>
parents: 24841
diff changeset
5551 _('interactively select the changes (EXPERIMENTAL)')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5552 ] + walkopts + dryrunopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5553 _('[OPTION]... [-r REV] [NAME]...'))
1472
3c909a747d7f make revert use standard matcher
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1470
diff changeset
5554 def revert(ui, repo, *pats, **opts):
14540
944d9088da96 revert: rewrite help summary
Matt Mackall <mpm@selenic.com>
parents: 14532
diff changeset
5555 """restore files to their checkout state
5574
d4ec6d61b3ee imported patch rev-help
Matt Mackall <mpm@selenic.com>
parents: 5573
diff changeset
5556
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
5557 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
5558
14541
07ee46a2ece3 revert: simplify usage note
Matt Mackall <mpm@selenic.com>
parents: 14540
diff changeset
5559 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
5560 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
5561 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
5562
14544
586f33cc3cb9 revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents: 14543
diff changeset
5563 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
5564 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
5565 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
5566 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
5567 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
5568 revision.
1811
6cb548cffdf5 resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1804
diff changeset
5569
14544
586f33cc3cb9 revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents: 14543
diff changeset
5570 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
5571 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
5572 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
5573 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
5574 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
5575 related method.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5576
5574
d4ec6d61b3ee imported patch rev-help
Matt Mackall <mpm@selenic.com>
parents: 5573
diff changeset
5577 Modified files are saved with a .orig suffix before reverting.
d4ec6d61b3ee imported patch rev-help
Matt Mackall <mpm@selenic.com>
parents: 5573
diff changeset
5578 To disable these backups, use --no-backup.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5579
14544
586f33cc3cb9 revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents: 14543
diff changeset
5580 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
5581
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5582 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5583 """
2982
890e285c52a1 revert: require --all to revert all files.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2963
diff changeset
5584
11941
4532c44bb62d revert: use opts.get
Xavier Snelgrove <xs@wxs.ca>
parents: 11886
diff changeset
5585 if opts.get("date"):
4532c44bb62d revert: use opts.get
Xavier Snelgrove <xs@wxs.ca>
parents: 11886
diff changeset
5586 if opts.get("rev"):
3814
120be84f33de Add --date support to update and revert
Matt Mackall <mpm@selenic.com>
parents: 3813
diff changeset
5587 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
5588 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
5589
13022
3fd4e4e81382 revert: improve merge advice and favor its error over all
timeless <timeless@gmail.com>
parents: 12968
diff changeset
5590 parent, p2 = repo.dirstate.parents()
14903
a934b9249574 revert: restore check for uncommitted merge (issue2915) (BC)
Matt Mackall <mpm@selenic.com>
parents: 14849
diff changeset
5591 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
5592 # 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
5593 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
5594 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
5595
14726
e0039716f3ea revert: mention update in hint of abort when reverting to non-parent
Adrian Buehlmann <adrian@cadifra.com>
parents: 14725
diff changeset
5596 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
5597
24841
45bd336e3991 revert: accept just -I/-X without paths or -a/-i (issue4592)
Martin von Zweigbergk <martinvonz@google.com>
parents: 24820
diff changeset
5598 if (not (pats or opts.get('include') or opts.get('exclude') or
45bd336e3991 revert: accept just -I/-X without paths or -a/-i (issue4592)
Martin von Zweigbergk <martinvonz@google.com>
parents: 24820
diff changeset
5599 opts.get('all') or opts.get('interactive'))):
14721
4fcde634f5e0 revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents: 14713
diff changeset
5600 msg = _("no files or directories specified")
4fcde634f5e0 revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents: 14713
diff changeset
5601 if p2 != nullid:
4fcde634f5e0 revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents: 14713
diff changeset
5602 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
5603 " 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
5604 raise util.Abort(msg, hint=hint)
25149
3f0744eeaeaf cleanup: use __builtins__.any instead of util.any
Augie Fackler <augie@google.com>
parents: 25120
diff changeset
5605 dirty = 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
5606 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
5607 if node != parent:
6ba51c81ff75 revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents: 14742
diff changeset
5608 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
5609 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
5610 " 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
5611 else:
e0039716f3ea revert: mention update in hint of abort when reverting to non-parent
Adrian Buehlmann <adrian@cadifra.com>
parents: 14725
diff changeset
5612 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
5613 " 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
5614 elif dirty:
6ba51c81ff75 revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents: 14742
diff changeset
5615 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
5616 else:
6ba51c81ff75 revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents: 14742
diff changeset
5617 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
5618 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
5619
16304
a740fa28d718 revert: move bulk of revert command from commands to cmdutil
Angel Ezquerra <angel.ezquerra@gmail.com>
parents: 16274
diff changeset
5620 return cmdutil.revert(ui, repo, ctx, (parent, p2), *pats, **opts)
588
0c3bae18403b [PATCH] hg revert
mpm@selenic.com
parents: 582
diff changeset
5621
15183
59e8bc22506e rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents: 15179
diff changeset
5622 @command('rollback', dryrunopts +
59e8bc22506e rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents: 15179
diff changeset
5623 [('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
5624 def rollback(ui, repo, **opts):
19409
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
5625 """roll back the last transaction (DANGEROUS) (DEPRECATED)
5575
8788ff630c26 imported patch rollback-help
Matt Mackall <mpm@selenic.com>
parents: 5574
diff changeset
5626
19421
b2b08be5f556 rollback: add reference to "hg commit --amend"
Martin Geisler <martin@geisler.net>
parents: 19409
diff changeset
5627 Please use :hg:`commit --amend` instead of rollback to correct
b2b08be5f556 rollback: add reference to "hg commit --amend"
Martin Geisler <martin@geisler.net>
parents: 19409
diff changeset
5628 mistakes in the last commit.
b2b08be5f556 rollback: add reference to "hg commit --amend"
Martin Geisler <martin@geisler.net>
parents: 19409
diff changeset
5629
5575
8788ff630c26 imported patch rollback-help
Matt Mackall <mpm@selenic.com>
parents: 5574
diff changeset
5630 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
5631 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
5632 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
5633 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
5634 the working directory.
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
5635
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
5636 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
5637 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
5638 repository.
b558c9fa39c1 rollback: split off command example paragraph in help
Adrian Buehlmann <adrian@cadifra.com>
parents: 17045
diff changeset
5639
17142
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5640 .. container:: verbose
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5641
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5642 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
5643 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
5644
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5645 - commit
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5646 - import
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5647 - pull
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5648 - 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
5649 - unbundle
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5650
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5651 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
5652 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
5653 override this protection.
15183
59e8bc22506e rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents: 15179
diff changeset
5654
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
5655 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
5656 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
5657 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
5658 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
5659 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
5660 may fail if a rollback is performed.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5661
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5662 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
5663 """
15183
59e8bc22506e rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents: 15179
diff changeset
5664 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
5665 force=opts.get('force'))
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
5666
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5667 @command('root', [])
468
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
5668 def root(ui, repo):
8026
683d8ebcf434 expand "dir" to "directory" in help texts
Martin Geisler <mg@lazybytes.net>
parents: 8021
diff changeset
5669 """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
5670
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5671 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
5672
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5673 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5674 """
468
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
5675 ui.write(repo.root + "\n")
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
5676
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5677 @command('^serve',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5678 [('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
5679 _('FILE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5680 ('d', 'daemon', None, _('run server in background')),
23137
7867f15b4a38 serve: correct meta variable of --daemon-pipefds option
Yuya Nishihara <yuya@tcha.org>
parents: 23123
diff changeset
5681 ('', 'daemon-pipefds', '', _('used internally by daemon mode'), _('FILE')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5682 ('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
5683 # 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
5684 ('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
5685 ('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
5686 _('ADDR')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5687 ('', '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
5688 _('PREFIX')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5689 ('n', 'name', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5690 _('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
5691 ('', 'web-conf', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5692 _('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
5693 ('', '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
5694 _('FILE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5695 ('', '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
5696 ('', '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
5697 ('', 'cmdserver', '', _('for remote clients'), _('MODE')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5698 ('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
5699 ('', 'style', '', _('template style to use'), _('STYLE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5700 ('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
5701 ('', 'certificate', '', _('SSL certificate file'), _('FILE'))],
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
5702 _('[OPTION]...'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
5703 optionalrepo=True)
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
5704 def serve(ui, repo, **opts):
10889
e25c450c351e commands: improve some command summaries
Matt Mackall <mpm@selenic.com>
parents: 10882
diff changeset
5705 """start stand-alone webserver
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5706
11102
275198bc904a commands: explain that "hg serve" is mostly for ad-hoc sharing
Martin Geisler <mg@lazybytes.net>
parents: 11089
diff changeset
5707 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
5708 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
5709 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
5710 longer periods of time.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5711
11103
d29bd98ebff6 commands: explain that "hg serve" does not do authentication
Martin Geisler <mg@lazybytes.net>
parents: 11102
diff changeset
5712 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
5713 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
5714 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
5715 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
5716 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
5717
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5718 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
5719 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
5720 files.
10629
d3f27d15c9cb serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents: 10617
diff changeset
5721
d3f27d15c9cb serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents: 10617
diff changeset
5722 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
5723 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
5724 number it uses.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5725
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5726 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5727 """
624
876333a295ff Add an sshrepository class and hg serve --stdio
Matt Mackall <mpm@selenic.com>
parents: 618
diff changeset
5728
14647
2e9f379de0ac serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents: 14645
diff changeset
5729 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
5730 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
5731
21818
448714b79d9a serve: inline checkrepo() that is used only when --stdio is specified
Yuya Nishihara <yuya@tcha.org>
parents: 21817
diff changeset
5732 if opts["stdio"]:
2127
8a85dbbadddf Allow 'hg serve --webdir-conf foo' to be run outside a repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2125
diff changeset
5733 if repo is None:
16935
f635c476fa3f serve: lowercase "no repo here" message
Martin Geisler <mg@aragost.com>
parents: 16934
diff changeset
5734 raise error.RepoError(_("there is no Mercurial repository here"
21819
816754e75f2f serve: tidy up indent level of repository not found message
Yuya Nishihara <yuya@tcha.org>
parents: 21818
diff changeset
5735 " (.hg not found)"))
2396
8d44649df03b refactor ssh server.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2392
diff changeset
5736 s = sshserver.sshserver(ui, repo)
8d44649df03b refactor ssh server.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2392
diff changeset
5737 s.serve_forever()
2363
fa4c11751367 Give a response to unknown SSH commands
Matt Mackall <mpm@selenic.com>
parents: 2362
diff changeset
5738
14647
2e9f379de0ac serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents: 14645
diff changeset
5739 if opts["cmdserver"]:
25931
a0847285d207 commands: break import cycle
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25903
diff changeset
5740 import commandserver
22989
dc8803ce3dfe cmdserver: switch service objects by mode
Yuya Nishihara <yuya@tcha.org>
parents: 22988
diff changeset
5741 service = commandserver.createservice(ui, repo, opts)
22988
32b77aba2772 cmdserver: wrap 'pipe' mode server by service object
Yuya Nishihara <yuya@tcha.org>
parents: 22952
diff changeset
5742 return cmdutil.service(opts, initfn=service.init, runfn=service.run)
14647
2e9f379de0ac serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents: 14645
diff changeset
5743
10635
27027bee318e serve: fix port config
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10632
diff changeset
5744 # 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
5745 if opts.get('port'):
12076
49463314c24f mail/hgweb: support service names for ports (issue2350)
Brodie Rao <brodie@bitheap.org>
parents: 12070
diff changeset
5746 opts['port'] = util.getport(opts.get('port'))
10635
27027bee318e serve: fix port config
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10632
diff changeset
5747
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5748 if repo:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5749 baseui = repo.baseui
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5750 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5751 baseui = ui
5835
bd34f0ac3cb0 adding "prefix" option to "hg serve" (command line and [web] section)
Michele Cella <michele.cella@gmail.com>
parents: 5811
diff changeset
5752 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
5753 " accesslog errorlog certificate encoding")
987
bfe12654764d hgweb: change startup argument processing
mpm@selenic.com
parents: 981
diff changeset
5754 for o in optlist.split():
10630
9947e6b008bb serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10629
diff changeset
5755 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
5756 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
5757 continue
20790
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
5758 baseui.setconfig("web", o, val, 'serve')
10630
9947e6b008bb serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10629
diff changeset
5759 if repo and repo.ui != baseui:
20790
49f2d5644f04 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents: 20783
diff changeset
5760 repo.ui.setconfig("web", o, val, 'serve')
987
bfe12654764d hgweb: change startup argument processing
mpm@selenic.com
parents: 981
diff changeset
5761
11003
aca9a7cf2c9a serve: webdir_conf -> webconf
Matt Mackall <mpm@selenic.com>
parents: 10993
diff changeset
5762 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
5763 if not o:
7bb10d3dbcd6 hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents: 11003
diff changeset
5764 if not repo:
16935
f635c476fa3f serve: lowercase "no repo here" message
Martin Geisler <mg@aragost.com>
parents: 16934
diff changeset
5765 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
5766 " 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
5767 o = repo
11004
7bb10d3dbcd6 hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents: 11003
diff changeset
5768
18827
6793ae6e36dc serve: pass the prepared baseui to hgweb
Simon Heimberg <simohe@besonet.ch>
parents: 18799
diff changeset
5769 app = hgweb.hgweb(o, baseui=baseui)
19919
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5770 service = httpservice(ui, app, opts)
4380
e89f9afc462b Refactor commands.serve to allow other commands to run as services.
Bryan O'Sullivan <bos@serpentine.com>
parents: 4376
diff changeset
5771 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
5772
19919
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5773 class httpservice(object):
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5774 def __init__(self, ui, app, opts):
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5775 self.ui = ui
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5776 self.app = app
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5777 self.opts = opts
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5778
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5779 def init(self):
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5780 util.setsignalhandler()
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5781 self.httpd = hgweb_server.create_server(self.ui, self.app)
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5782
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5783 if self.opts['port'] and not self.ui.verbose:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5784 return
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5785
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5786 if self.httpd.prefix:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5787 prefix = self.httpd.prefix.strip('/') + '/'
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5788 else:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5789 prefix = ''
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5790
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5791 port = ':%d' % self.httpd.port
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5792 if port == ':80':
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5793 port = ''
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5794
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5795 bindaddr = self.httpd.addr
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5796 if bindaddr == '0.0.0.0':
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5797 bindaddr = '*'
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5798 elif ':' in bindaddr: # IPv6
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5799 bindaddr = '[%s]' % bindaddr
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5800
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5801 fqaddr = self.httpd.fqaddr
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5802 if ':' in fqaddr:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5803 fqaddr = '[%s]' % fqaddr
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5804 if self.opts['port']:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5805 write = self.ui.status
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5806 else:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5807 write = self.ui.write
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5808 write(_('listening at http://%s%s/%s (bound to %s:%d)\n') %
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5809 (fqaddr, port, prefix, bindaddr, self.httpd.port))
21817
6b0275e5f276 serve: make sure to print "listening at" message immediately
Yuya Nishihara <yuya@tcha.org>
parents: 21789
diff changeset
5810 self.ui.flush() # avoid buffering of status message
19919
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5811
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5812 def run(self):
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5813 self.httpd.serve_forever()
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5814
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5815
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5816 @command('^status|st',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5817 [('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
5818 ('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
5819 ('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
5820 ('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
5821 ('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
5822 ('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
5823 ('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
5824 ('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
5825 ('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
5826 ('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
5827 ('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
5828 ('', 'rev', [], _('show difference from revision'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5829 ('', 'change', '', _('list the changed files of a revision'), _('REV')),
22429
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
5830 ] + walkopts + subrepoopts + formatteropts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5831 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5832 inferrepo=True)
731
91ca3afab8e8 Add name matching to status command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 729
diff changeset
5833 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
5834 """show changed files in the working directory
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
5835
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
5836 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
5837 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
5838 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
5839 -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
5840 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
5841 options -mardu are used.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5842
6201
305d4450036a Extend/correct acc40572da5b regarding -qA and ignored files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6200
diff changeset
5843 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
5844 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
5845
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
5846 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
5847
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
5848 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
5849 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
5850 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
5851 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
5852
3467
2b3b703b3a2b Add --rev option to status
Brendan Cully <brendan@kublai.com>
parents: 3465
diff changeset
5853 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
5854 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
5855 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
5856 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
5857
9157
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5858 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
5859
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5860 M = modified
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5861 A = added
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5862 R = removed
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5863 C = clean
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5864 ! = 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
5865 ? = not tracked
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5866 I = ignored
20660
19e9478c1a22 status: improve explanation of ' ' status
Matt Mackall <mpm@selenic.com>
parents: 20650
diff changeset
5867 = origin of the previous file (with --copies)
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5868
15119
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5869 .. container:: verbose
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5870
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5871 Examples:
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5872
15633
dc5d1394ecd1 status: add missing ":" to help text
Martin Geisler <mg@lazybytes.net>
parents: 15615
diff changeset
5873 - 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
5874 changeset::
15119
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5875
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5876 hg status --rev 9353
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5877
24456
a05c6b400616 status: add relative directory help text (issue3835)
Yung-Jin (Joey) Hu <yungjinhu@gmail.com>
parents: 24455
diff changeset
5878 - show changes in the working directory relative to the
a05c6b400616 status: add relative directory help text (issue3835)
Yung-Jin (Joey) Hu <yungjinhu@gmail.com>
parents: 24455
diff changeset
5879 current directory (see :hg:`help patterns` for more information)::
a05c6b400616 status: add relative directory help text (issue3835)
Yung-Jin (Joey) Hu <yungjinhu@gmail.com>
parents: 24455
diff changeset
5880
a05c6b400616 status: add relative directory help text (issue3835)
Yung-Jin (Joey) Hu <yungjinhu@gmail.com>
parents: 24455
diff changeset
5881 hg status re:
a05c6b400616 status: add relative directory help text (issue3835)
Yung-Jin (Joey) Hu <yungjinhu@gmail.com>
parents: 24455
diff changeset
5882
15119
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5883 - show all changes including copies in an existing changeset::
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5884
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5885 hg status --copies --change 9353
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5886
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5887 - 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
5888
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5889 hg status -an0
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5890
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5891 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5892 """
312
09375250eb31 Optimize diff and status in subdirectories
mpm@selenic.com
parents: 310
diff changeset
5893
10014
54cd28258ea7 status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents: 9983
diff changeset
5894 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
5895 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
5896
54cd28258ea7 status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents: 9983
diff changeset
5897 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
5898 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
5899 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
5900 elif change:
15578
db0e277bdd37 status: support revsets with --change
Patrick Mezard <pmezard@gmail.com>
parents: 15528
diff changeset
5901 node2 = scmutil.revsingle(repo, change, None).node()
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
5902 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
5903 else:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
5904 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
5905
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5906 if pats:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5907 cwd = repo.getcwd()
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5908 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5909 cwd = ''
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5910
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5911 if opts.get('print0'):
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5912 end = '\0'
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5913 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5914 end = '\n'
6276
c93ca83a3354 status: find copies and renames beyond the working directory
Matt Mackall <mpm@selenic.com>
parents: 6262
diff changeset
5915 copy = {}
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5916 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
5917 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
5918 if opts.get('all'):
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5919 show += ui.quiet and (states[:4] + ['clean']) or states
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5920 if not show:
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5921 if ui.quiet:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5922 show = states[:4]
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5923 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5924 show = states[:5]
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5925
24819
22c70c08d4af status: pass matcher to pathcopies()
Martin von Zweigbergk <martinvonz@google.com>
parents: 24777
diff changeset
5926 m = scmutil.match(repo[node2], pats, opts)
22c70c08d4af status: pass matcher to pathcopies()
Martin von Zweigbergk <martinvonz@google.com>
parents: 24777
diff changeset
5927 stat = repo.status(node1, node2, m,
12166
441a74b8def1 status: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents: 12132
diff changeset
5928 '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
5929 opts.get('subrepos'))
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5930 changestates = zip(states, 'MAR!?IC', stat)
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5931
24663
7d01371e6358 commands: add ui.statuscopies config knob
Mathias De Maré <mathias.demare@gmail.com>
parents: 24661
diff changeset
5932 if (opts.get('all') or opts.get('copies')
7d01371e6358 commands: add ui.statuscopies config knob
Mathias De Maré <mathias.demare@gmail.com>
parents: 24661
diff changeset
5933 or ui.configbool('ui', 'statuscopies')) and not opts.get('no_status'):
24819
22c70c08d4af status: pass matcher to pathcopies()
Martin von Zweigbergk <martinvonz@google.com>
parents: 24777
diff changeset
5934 copy = copies.pathcopies(repo[node1], repo[node2], m)
6276
c93ca83a3354 status: find copies and renames beyond the working directory
Matt Mackall <mpm@selenic.com>
parents: 6262
diff changeset
5935
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5936 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
5937 fmt = '%s' + end
c8709ff57ff2 status: use condwrite to avoid zero-width format string hack
Matt Mackall <mpm@selenic.com>
parents: 17892
diff changeset
5938 showchar = not opts.get('no_status')
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5939
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5940 for state, char, files in changestates:
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5941 if state in show:
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5942 label = 'status.' + state
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5943 for f in files:
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5944 fm.startitem()
17910
c8709ff57ff2 status: use condwrite to avoid zero-width format string hack
Matt Mackall <mpm@selenic.com>
parents: 17892
diff changeset
5945 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
5946 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
5947 if f in copy:
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5948 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
5949 label='status.copied')
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5950 fm.end()
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
5951
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5952 @command('^summary|sum',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5953 [('', 'remote', None, _('check for push and pull'))], '[--remote]')
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5954 def summary(ui, repo, **opts):
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5955 """summarize working directory state
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5956
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5957 This generates a brief summary of the working directory state,
25111
1ef96a3b8b89 summary: add a phase line (draft, secret) to the output
Gilles Moris <gilles.moris@free.fr>
parents: 25082
diff changeset
5958 including parents, branch, commit status, phase and available updates.
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5959
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5960 With the --remote option, this will check the default paths for
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5961 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
5962
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5963 Returns 0 on success.
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5964 """
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5965
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5966 ctx = repo[None]
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5967 parents = ctx.parents()
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5968 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
5969 marks = []
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5970
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5971 for p in parents:
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5972 # 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
5973 # 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
5974 # i18n: column positioning for "hg summary"
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5975 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
5976 label='log.changeset changeset.%s' % p.phasestr())
10833
d7b601f1e02c commands: retrieve tags from context object
Martin Geisler <mg@lazybytes.net>
parents: 10832
diff changeset
5977 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
5978 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
5979 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
5980 if p.rev() == -1:
d75a309a24b1 summary: add empty repository and no revision checked out hints
Matt Mackall <mpm@selenic.com>
parents: 9617
diff changeset
5981 if not len(repo):
10834
4ab459a6c25c commands: small refactoring in summary
Martin Geisler <mg@lazybytes.net>
parents: 10833
diff changeset
5982 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
5983 else:
10834
4ab459a6c25c commands: small refactoring in summary
Martin Geisler <mg@lazybytes.net>
parents: 10833
diff changeset
5984 ui.write(_(' (no revision checked out)'))
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5985 ui.write('\n')
9618
d75a309a24b1 summary: add empty repository and no revision checked out hints
Matt Mackall <mpm@selenic.com>
parents: 9617
diff changeset
5986 if p.description():
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5987 ui.status(' ' + p.description().splitlines()[0].strip() + '\n',
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5988 label='log.summary')
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5989
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5990 branch = ctx.branch()
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5991 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
5992 # i18n: column positioning for "hg summary"
9873
541218fbad2a summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents: 9857
diff changeset
5993 m = _('branch: %s\n') % branch
541218fbad2a summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents: 9857
diff changeset
5994 if branch != 'default':
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5995 ui.write(m, label='log.branch')
9873
541218fbad2a summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents: 9857
diff changeset
5996 else:
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5997 ui.status(m, label='log.branch')
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5998
14906
7c3c8f37e84f summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents: 14874
diff changeset
5999 if marks:
25349
62da2d7745f9 commands: rename current to active in variables and comments
Ryan McElroy <rmcelroy@fb.com>
parents: 25347
diff changeset
6000 active = repo._activebookmark
17892
ba0a1701c81a i18n: add "i18n" comment to column positioning messages of "hg summary"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17887
diff changeset
6001 # i18n: column positioning for "hg summary"
14907
84af56cc673b summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents: 14906
diff changeset
6002 ui.write(_('bookmarks:'), label='log.bookmark')
25349
62da2d7745f9 commands: rename current to active in variables and comments
Ryan McElroy <rmcelroy@fb.com>
parents: 25347
diff changeset
6003 if active is not None:
62da2d7745f9 commands: rename current to active in variables and comments
Ryan McElroy <rmcelroy@fb.com>
parents: 25347
diff changeset
6004 if active in marks:
62da2d7745f9 commands: rename current to active in variables and comments
Ryan McElroy <rmcelroy@fb.com>
parents: 25347
diff changeset
6005 ui.write(' *' + active, label=activebookmarklabel)
62da2d7745f9 commands: rename current to active in variables and comments
Ryan McElroy <rmcelroy@fb.com>
parents: 25347
diff changeset
6006 marks.remove(active)
18622
f9eebf5629fa summary: show active bookmark even if not at current changeset
Kevin Bullock <kbullock@ringworld.org>
parents: 18621
diff changeset
6007 else:
25349
62da2d7745f9 commands: rename current to active in variables and comments
Ryan McElroy <rmcelroy@fb.com>
parents: 25347
diff changeset
6008 ui.write(' [%s]' % active, label=activebookmarklabel)
14907
84af56cc673b summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents: 14906
diff changeset
6009 for m in marks:
17299
e51d4aedace9 check-code: indent 4 spaces in py files
Mads Kiilerich <mads@kiilerich.com>
parents: 17292
diff changeset
6010 ui.write(' ' + m, label='log.bookmark')
14907
84af56cc673b summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents: 14906
diff changeset
6011 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
6012
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6013 status = repo.status(unknown=True)
11088
c4347e48b0d0 summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents: 11078
diff changeset
6014
11331
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
6015 c = repo.dirstate.copies()
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
6016 copied, renamed = [], []
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
6017 for d, s in c.iteritems():
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6018 if s in status.removed:
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6019 status.removed.remove(s)
11331
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
6020 renamed.append(d)
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
6021 else:
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
6022 copied.append(d)
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6023 if d in status.added:
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6024 status.added.remove(d)
11331
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
6025
15856
6bed6cc6d0d0 commands: partial backout of fbb68b382040
Martin Geisler <mg@aragost.com>
parents: 15855
diff changeset
6026 ms = mergemod.mergestate(repo)
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6027 unresolved = [f for f in ms if ms[f] == 'u']
11088
c4347e48b0d0 summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents: 11078
diff changeset
6028
c4347e48b0d0 summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents: 11078
diff changeset
6029 subs = [s for s in ctx.substate if ctx.sub(s).dirty()]
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6030
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6031 labels = [(ui.label(_('%d modified'), 'status.modified'), status.modified),
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6032 (ui.label(_('%d added'), 'status.added'), status.added),
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6033 (ui.label(_('%d removed'), 'status.removed'), status.removed),
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6034 (ui.label(_('%d renamed'), 'status.copied'), renamed),
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6035 (ui.label(_('%d copied'), 'status.copied'), copied),
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6036 (ui.label(_('%d deleted'), 'status.deleted'), status.deleted),
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6037 (ui.label(_('%d unknown'), 'status.unknown'), status.unknown),
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6038 (ui.label(_('%d unresolved'), 'resolve.unresolved'), unresolved),
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6039 (ui.label(_('%d subrepos'), 'status.modified'), subs)]
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6040 t = []
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6041 for l, s in labels:
9607
8e0e0d854b60 commands: do not split a translated string
Martin Geisler <mg@lazybytes.net>
parents: 9603
diff changeset
6042 if s:
8e0e0d854b60 commands: do not split a translated string
Martin Geisler <mg@lazybytes.net>
parents: 9603
diff changeset
6043 t.append(l % len(s))
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6044
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6045 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
6046 cleanworkdir = False
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6047
19482
499fc471296b update: add tracking of interrupted updates (issue3113)
Matt Mackall <mpm@selenic.com>
parents: 19476
diff changeset
6048 if repo.vfs.exists('updatestate'):
499fc471296b update: add tracking of interrupted updates (issue3113)
Matt Mackall <mpm@selenic.com>
parents: 19476
diff changeset
6049 t += _(' (interrupted update)')
499fc471296b update: add tracking of interrupted updates (issue3113)
Matt Mackall <mpm@selenic.com>
parents: 19476
diff changeset
6050 elif len(parents) > 1:
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
6051 t += _(' (merge)')
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6052 elif branch != parents[0].branch():
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
6053 t += _(' (new branch)')
16720
e825a89de5d7 context: add changectx.closesbranch() method
Brodie Rao <brodie@sf.io>
parents: 16719
diff changeset
6054 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
6055 pnode in repo.branchheads(branch, closed=True)):
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
6056 t += _(' (head closed)')
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6057 elif not (status.modified or status.added or status.removed or renamed or
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
6058 copied or subs):
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
6059 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
6060 cleanworkdir = True
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6061 elif pnode not in bheads:
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
6062 t += _(' (new branch head)')
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6063
25382
6084926366b9 summary: move the parents phase marker to commit line (issue4688)
Gilles Moris <gilles.moris@free.fr>
parents: 25368
diff changeset
6064 if parents:
6084926366b9 summary: move the parents phase marker to commit line (issue4688)
Gilles Moris <gilles.moris@free.fr>
parents: 25368
diff changeset
6065 pendingphase = max(p.phase() for p in parents)
6084926366b9 summary: move the parents phase marker to commit line (issue4688)
Gilles Moris <gilles.moris@free.fr>
parents: 25368
diff changeset
6066 else:
6084926366b9 summary: move the parents phase marker to commit line (issue4688)
Gilles Moris <gilles.moris@free.fr>
parents: 25368
diff changeset
6067 pendingphase = phases.public
6084926366b9 summary: move the parents phase marker to commit line (issue4688)
Gilles Moris <gilles.moris@free.fr>
parents: 25368
diff changeset
6068
6084926366b9 summary: move the parents phase marker to commit line (issue4688)
Gilles Moris <gilles.moris@free.fr>
parents: 25368
diff changeset
6069 if pendingphase > phases.newcommitphase(ui):
6084926366b9 summary: move the parents phase marker to commit line (issue4688)
Gilles Moris <gilles.moris@free.fr>
parents: 25368
diff changeset
6070 t += ' (%s)' % phases.phasenames[pendingphase]
6084926366b9 summary: move the parents phase marker to commit line (issue4688)
Gilles Moris <gilles.moris@free.fr>
parents: 25368
diff changeset
6071
10269
acf001ee5ef8 summary: L10N messages hide clean-ness of workdir from 'hg summary'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 10263
diff changeset
6072 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
6073 # i18n: column positioning for "hg summary"
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
6074 ui.status(_('commit: %s\n') % t.strip())
9605
3194227a4158 summary: quieter with -q
Matt Mackall <mpm@selenic.com>
parents: 9604
diff changeset
6075 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
6076 # i18n: column positioning for "hg summary"
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
6077 ui.write(_('commit: %s\n') % t.strip())
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6078
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6079 # all ancestors of branch heads - all ancestors of parent = new csets
22201
269688a398c4 cleanup: fix some list comprehension redefinitions of existing vars
Mads Kiilerich <madski@unity3d.com>
parents: 22119
diff changeset
6080 new = len(repo.changelog.findmissing([pctx.node() for pctx in parents],
19394
4da845cd854f summary: use missing ancestors algorithm to find new commits
Siddharth Agarwal <sid0@fb.com>
parents: 19379
diff changeset
6081 bheads))
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6082
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6083 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
6084 # i18n: column positioning for "hg summary"
9605
3194227a4158 summary: quieter with -q
Matt Mackall <mpm@selenic.com>
parents: 9604
diff changeset
6085 ui.status(_('update: (current)\n'))
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6086 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
6087 # i18n: column positioning for "hg summary"
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6088 ui.write(_('update: %d new changesets (update)\n') % new)
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6089 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
6090 # i18n: column positioning for "hg summary"
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6091 ui.write(_('update: %d new changesets, %d branch heads (merge)\n') %
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6092 (new, len(bheads)))
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
6093
25111
1ef96a3b8b89 summary: add a phase line (draft, secret) to the output
Gilles Moris <gilles.moris@free.fr>
parents: 25082
diff changeset
6094 t = []
1ef96a3b8b89 summary: add a phase line (draft, secret) to the output
Gilles Moris <gilles.moris@free.fr>
parents: 25082
diff changeset
6095 draft = len(repo.revs('draft()'))
1ef96a3b8b89 summary: add a phase line (draft, secret) to the output
Gilles Moris <gilles.moris@free.fr>
parents: 25082
diff changeset
6096 if draft:
1ef96a3b8b89 summary: add a phase line (draft, secret) to the output
Gilles Moris <gilles.moris@free.fr>
parents: 25082
diff changeset
6097 t.append(_('%d draft') % draft)
1ef96a3b8b89 summary: add a phase line (draft, secret) to the output
Gilles Moris <gilles.moris@free.fr>
parents: 25082
diff changeset
6098 secret = len(repo.revs('secret()'))
1ef96a3b8b89 summary: add a phase line (draft, secret) to the output
Gilles Moris <gilles.moris@free.fr>
parents: 25082
diff changeset
6099 if secret:
1ef96a3b8b89 summary: add a phase line (draft, secret) to the output
Gilles Moris <gilles.moris@free.fr>
parents: 25082
diff changeset
6100 t.append(_('%d secret') % secret)
1ef96a3b8b89 summary: add a phase line (draft, secret) to the output
Gilles Moris <gilles.moris@free.fr>
parents: 25082
diff changeset
6101
1ef96a3b8b89 summary: add a phase line (draft, secret) to the output
Gilles Moris <gilles.moris@free.fr>
parents: 25082
diff changeset
6102 if draft or secret:
25382
6084926366b9 summary: move the parents phase marker to commit line (issue4688)
Gilles Moris <gilles.moris@free.fr>
parents: 25368
diff changeset
6103 ui.status(_('phases: %s\n') % ', '.join(t))
25111
1ef96a3b8b89 summary: add a phase line (draft, secret) to the output
Gilles Moris <gilles.moris@free.fr>
parents: 25082
diff changeset
6104
19211
3bfd7f1e7485 summary: augment output with info from extensions
Bryan O'Sullivan <bryano@fb.com>
parents: 19209
diff changeset
6105 cmdutil.summaryhooks(ui, repo)
3bfd7f1e7485 summary: augment output with info from extensions
Bryan O'Sullivan <bryano@fb.com>
parents: 19209
diff changeset
6106
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6107 if opts.get('remote'):
21045
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6108 needsincoming, needsoutgoing = True, True
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6109 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6110 needsincoming, needsoutgoing = False, False
21047
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6111 for i, o in cmdutil.summaryremotehooks(ui, repo, opts, None):
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6112 if i:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6113 needsincoming = True
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6114 if o:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6115 needsoutgoing = True
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6116 if not needsincoming and not needsoutgoing:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6117 return
21045
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6118
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6119 def getincoming():
10389
6dc25b01e170 fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents: 10384
diff changeset
6120 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
6121 sbranch = branches[0]
21047
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6122 try:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6123 other = hg.peer(repo, {}, source)
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6124 except error.RepoError:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6125 if opts.get('remote'):
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6126 raise
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6127 return source, sbranch, None, None, None
19379
83d0df2ddf3f summary: remove passing of rev because summary does not have this
Simon Heimberg <simohe@besonet.ch>
parents: 19333
diff changeset
6128 revs, checkout = hg.addbranchrevs(repo, other, branches, None)
18996
160d8416e286 summary: make "incoming" information sensitive to branch in URL (issue3830)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18994
diff changeset
6129 if revs:
160d8416e286 summary: make "incoming" information sensitive to branch in URL (issue3830)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18994
diff changeset
6130 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
6131 ui.debug('comparing with %s\n' % util.hidepassword(source))
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6132 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
6133 commoninc = discovery.findcommonincoming(repo, other, heads=revs)
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6134 repo.ui.popbuffer()
21045
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6135 return source, sbranch, other, commoninc, commoninc[1]
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6136
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6137 if needsincoming:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6138 source, sbranch, sother, commoninc, incoming = getincoming()
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6139 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6140 source = sbranch = sother = commoninc = incoming = None
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6141
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6142 def getoutgoing():
10389
6dc25b01e170 fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents: 10384
diff changeset
6143 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
6144 dbranch = branches[0]
10389
6dc25b01e170 fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents: 10384
diff changeset
6145 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
6146 if source != dest:
21047
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6147 try:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6148 dother = hg.peer(repo, {}, dest)
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6149 except error.RepoError:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6150 if opts.get('remote'):
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6151 raise
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6152 return dest, dbranch, None, None
18997
4cf09a1bf5b2 summary: clear "commonincoming" also if branches are different
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18996
diff changeset
6153 ui.debug('comparing with %s\n' % util.hidepassword(dest))
21047
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6154 elif sother is None:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6155 # there is no explicit destination peer, but source one is invalid
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6156 return dest, dbranch, None, None
21045
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6157 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6158 dother = sother
18997
4cf09a1bf5b2 summary: clear "commonincoming" also if branches are different
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18996
diff changeset
6159 if (source != dest or (sbranch is not None and sbranch != dbranch)):
21045
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6160 common = None
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6161 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6162 common = commoninc
18994
32843795e9b3 summary: make "outgoing" information sensitive to branch in URL (issue3829)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18963
diff changeset
6163 if revs:
32843795e9b3 summary: make "outgoing" information sensitive to branch in URL (issue3829)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18963
diff changeset
6164 revs = [repo.lookup(rev) for rev in revs]
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6165 repo.ui.pushbuffer()
21045
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6166 outgoing = discovery.findcommonoutgoing(repo, dother, onlyheads=revs,
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6167 commoninc=common)
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6168 repo.ui.popbuffer()
21045
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6169 return dest, dbranch, dother, outgoing
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6170
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6171 if needsoutgoing:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6172 dest, dbranch, dother, outgoing = getoutgoing()
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6173 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6174 dest = dbranch = dother = outgoing = None
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6175
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6176 if opts.get('remote'):
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6177 t = []
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6178 if incoming:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6179 t.append(_('1 or more incoming'))
15837
cd956049fc14 discovery: introduce outgoing object for result of findcommonoutgoing
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 15836
diff changeset
6180 o = outgoing.missing
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6181 if o:
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6182 t.append(_('%d outgoing') % len(o))
21045
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6183 other = dother or sother
13454
afc84a879ac8 summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents: 13453
diff changeset
6184 if 'bookmarks' in other.listkeys('namespaces'):
24400
03c84c966ef5 bookmarks: rewrite comparing bookmarks in commands.summary() by compare()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24398
diff changeset
6185 counts = bookmarks.summary(repo, other)
03c84c966ef5 bookmarks: rewrite comparing bookmarks in commands.summary() by compare()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24398
diff changeset
6186 if counts[0] > 0:
03c84c966ef5 bookmarks: rewrite comparing bookmarks in commands.summary() by compare()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24398
diff changeset
6187 t.append(_('%d incoming bookmarks') % counts[0])
03c84c966ef5 bookmarks: rewrite comparing bookmarks in commands.summary() by compare()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24398
diff changeset
6188 if counts[1] > 0:
03c84c966ef5 bookmarks: rewrite comparing bookmarks in commands.summary() by compare()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 24398
diff changeset
6189 t.append(_('%d outgoing bookmarks') % counts[1])
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6190
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6191 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
6192 # i18n: column positioning for "hg summary"
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6193 ui.write(_('remote: %s\n') % (', '.join(t)))
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6194 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
6195 # i18n: column positioning for "hg summary"
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6196 ui.status(_('remote: (synced)\n'))
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6197
21047
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6198 cmdutil.summaryremotehooks(ui, repo, opts,
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6199 ((source, sbranch, sother, commoninc),
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6200 (dest, dbranch, dother, outgoing)))
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6201
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6202 @command('tag',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6203 [('f', 'force', None, _('force tag')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6204 ('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
6205 ('r', 'rev', '', _('revision to tag'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6206 ('', 'remove', None, _('remove a tag')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6207 # -l/--local is already there, commitopts cannot be used
21952
3838b910fa6b doc: unify help text for "--edit" option
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21951
diff changeset
6208 ('e', 'edit', None, _('invoke editor on commit messages')),
21951
59af0b21ec31 doc: unify help text for "--message" option
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21949
diff changeset
6209 ('m', 'message', '', _('use text as commit message'), _('TEXT')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6210 ] + commitopts2,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6211 _('[-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
6212 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
6213 """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
6214
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6215 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
6216
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6217 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
6218 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
6219 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
6220 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
6221
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
6222 If no revision is given, the parent of the working directory is
19402
c7a7bae3cfa3 tag: remove incorrect reference to tip
Matt Mackall <mpm@selenic.com>
parents: 19401
diff changeset
6223 used.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6224
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6225 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
6226 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
6227 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
6228 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
6229 ".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
6230 repositories).
1c1ca9d393f4 tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents: 13134
diff changeset
6231
1c1ca9d393f4 tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents: 13134
diff changeset
6232 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
6233 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
6234 -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
6235 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
6236
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
6237 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
6238
eb23c876c111 tag: warn users about tag/branch possible name conflicts
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11061
diff changeset
6239 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
6240 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
6241
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6242 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6243 """
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6244 wlock = lock = None
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6245 try:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6246 wlock = repo.wlock()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6247 lock = repo.lock()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6248 rev_ = "."
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6249 names = [t.strip() for t in (name1,) + names]
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6250 if len(names) != len(set(names)):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6251 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
6252 for n in names:
17821
361ab1e2086f scmutil: add bad character checking to checknewlabel
Kevin Bullock <kbullock@ringworld.org>
parents: 17818
diff changeset
6253 scmutil.checknewlabel(repo, n, 'tag')
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6254 if not n:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6255 raise util.Abort(_('tag names cannot consist entirely of '
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6256 'whitespace'))
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6257 if opts.get('rev') and opts.get('remove'):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6258 raise util.Abort(_("--rev and --remove are incompatible"))
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6259 if opts.get('rev'):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6260 rev_ = opts['rev']
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6261 message = opts.get('message')
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6262 if opts.get('remove'):
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
6263 if opts.get('local'):
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
6264 expectedtype = 'local'
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
6265 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
6266 expectedtype = 'global'
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
6267
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6268 for n in names:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6269 if not repo.tagtype(n):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6270 raise util.Abort(_("tag '%s' does not exist") % n)
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6271 if repo.tagtype(n) != expectedtype:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6272 if expectedtype == 'global':
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6273 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
6274 else:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6275 raise util.Abort(_("tag '%s' is not a local tag") % n)
25903
9bbab9decd71 tag: do not pass binary nullid to scmutil.revsingle()
Yuya Nishihara <yuya@tcha.org>
parents: 25901
diff changeset
6276 rev_ = 'null'
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6277 if not message:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6278 # we don't translate commit messages
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6279 message = 'Removed tag %s' % ', '.join(names)
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6280 elif not opts.get('force'):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6281 for n in names:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6282 if n in repo.tags():
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6283 raise util.Abort(_("tag '%s' already exists "
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6284 "(use -f to force)") % n)
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6285 if not opts.get('local'):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6286 p1, p2 = repo.dirstate.parents()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6287 if p2 != nullid:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6288 raise util.Abort(_('uncommitted merge'))
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6289 bheads = repo.branchheads()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6290 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
6291 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
6292 r = scmutil.revsingle(repo, rev_).node()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6293
4213
3be4785f8994 tags: add --remove
Matt Mackall <mpm@selenic.com>
parents: 4179
diff changeset
6294 if not message:
9183
d0225fa2f6c4 do not translate commit messages
Martin Geisler <mg@lazybytes.net>
parents: 9128
diff changeset
6295 # we don't translate commit messages
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6296 message = ('Added tag %s for changeset %s' %
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6297 (', '.join(names), short(r)))
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6298
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6299 date = opts.get('date')
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6300 if date:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6301 date = util.parsedate(date)
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6302
22009
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6303 if opts.get('remove'):
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6304 editform = 'tag.remove'
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6305 else:
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6306 editform = 'tag.add'
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6307 editor = cmdutil.getcommiteditor(editform=editform, **opts)
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6308
17260
e432fb4b4221 tag: don't allow tagging the null revision (issue1915)
Brad Hall <bhall@fb.com>
parents: 17255
diff changeset
6309 # 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
6310 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
6311 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
6312 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
6313
21237
0054a77f49df localrepo: add "editor" argument to "tag()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21200
diff changeset
6314 repo.tag(names, r, message, opts.get('local'), opts.get('user'), date,
0054a77f49df localrepo: add "editor" argument to "tag()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21200
diff changeset
6315 editor=editor)
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6316 finally:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6317 release(lock, wlock)
401
af4848f83e68 From: Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
mpm@selenic.com
parents: 396
diff changeset
6318
22429
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
6319 @command('tags', formatteropts, '')
17912
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6320 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
6321 """list repository tags
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6322
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
6323 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
6324 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
6325
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6326 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6327 """
477
520540fd6b64 Handle errors in .hgtags or hgrc [tags] section more gracefully.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 470
diff changeset
6328
17912
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6329 fm = ui.formatter('tags', opts)
22701
cb28d2b3db0b formatter: add general way to switch hex/short functions
Yuya Nishihara <yuya@tcha.org>
parents: 22694
diff changeset
6330 hexfunc = fm.hexfunc
5658
ae3089cefaab Add --verbose support to tags command.
Osku Salerma <osku@iki.fi>
parents: 5657
diff changeset
6331 tagtype = ""
ae3089cefaab Add --verbose support to tags command.
Osku Salerma <osku@iki.fi>
parents: 5657
diff changeset
6332
8210
344751cd8cb8 replace various uses of list.reverse()
Matt Mackall <mpm@selenic.com>
parents: 8209
diff changeset
6333 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
6334 hn = hexfunc(n)
17912
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6335 label = 'tags.normal'
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6336 tagtype = ''
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6337 if repo.tagtype(t) == 'local':
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6338 label = 'tags.local'
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6339 tagtype = 'local'
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6340
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6341 fm.startitem()
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6342 fm.write('tag', '%s', t, label=label)
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6343 fmt = " " * (30 - encoding.colwidth(t)) + ' %5d:%s'
22553
67b6b82a6bbe tags: change field name of formatter output to be the same as log command
Yuya Nishihara <yuya@tcha.org>
parents: 22552
diff changeset
6344 fm.condwrite(not ui.quiet, 'rev node', fmt,
17912
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6345 repo.changelog.rev(n), hn, label=label)
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6346 fm.condwrite(ui.verbose and tagtype, 'type', ' %s',
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6347 tagtype, label=label)
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6348 fm.plain('\n')
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6349 fm.end()
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
6350
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6351 @command('tip',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6352 [('p', 'patch', None, _('show patch')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6353 ('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
6354 ] + templateopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6355 _('[-p] [-g]'))
1731
251729df9cc6 add -p option to tip. for issue 64.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1728
diff changeset
6356 def tip(ui, repo, **opts):
19403
9013f2930a4a tip: deprecate the tip command
Matt Mackall <mpm@selenic.com>
parents: 19402
diff changeset
6357 """show the tip revision (DEPRECATED)
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6358
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
6359 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
6360 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
6361 recently changed head).
6364
b22b39059722 Make tip help more helpful
Patrick Mezard <pmezard@gmail.com>
parents: 6353
diff changeset
6362
6367
51984a2413f2 Remove unexpected "Alternately" word from tip help.
Patrick Mezard <pmezard@gmail.com>
parents: 6364
diff changeset
6363 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
6364 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
6365 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
6366 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
6367
19403
9013f2930a4a tip: deprecate the tip command
Matt Mackall <mpm@selenic.com>
parents: 19402
diff changeset
6368 This command is deprecated, please use :hg:`heads` instead.
9013f2930a4a tip: deprecate the tip command
Matt Mackall <mpm@selenic.com>
parents: 19402
diff changeset
6369
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6370 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6371 """
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
6372 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
6373 displayer.show(repo['tip'])
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
6374 displayer.close()
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
6375
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6376 @command('unbundle',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6377 [('u', 'update', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6378 _('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
6379 _('[-u] FILE...'))
4699
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6380 def unbundle(ui, repo, fname1, *fnames, **opts):
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6381 """apply one or more changegroup files
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6382
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6383 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
6384 bundle command.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6385
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6386 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
6387 """
4699
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6388 fnames = (fname1,) + fnames
6180
d98ef03893e6 commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents: 6178
diff changeset
6389
8109
496ae1ea4698 switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents: 8088
diff changeset
6390 lock = repo.lock()
6180
d98ef03893e6 commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents: 6178
diff changeset
6391 try:
d98ef03893e6 commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents: 6178
diff changeset
6392 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
6393 f = hg.openpath(ui, fname)
21064
4d9d490d7bbe bundle2: add a ui argument to readbundle
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21063
diff changeset
6394 gen = exchange.readbundle(ui, f, fname)
23891
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6395 if isinstance(gen, bundle2.unbundle20):
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6396 tr = repo.transaction('unbundle')
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6397 try:
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6398 op = bundle2.processbundle(repo, gen, lambda: tr)
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6399 tr.close()
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6400 finally:
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6401 if tr:
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6402 tr.release()
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6403 changes = [r.get('result', 0)
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6404 for r in op.records['changegroup']]
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6405 modheads = changegroup.combineresults(changes)
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6406 else:
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6407 modheads = changegroup.addchangegroup(repo, gen, 'unbundle',
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6408 'bundle:' + fname)
6180
d98ef03893e6 commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents: 6178
diff changeset
6409 finally:
8109
496ae1ea4698 switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents: 8088
diff changeset
6410 lock.release()
22091
f72b71ba756b unbundle: don't advance bookmarks (issue4322) (BC)
Matt Mackall <mpm@selenic.com>
parents: 21959
diff changeset
6411
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
6412 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
6413
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6414 @command('^update|up|checkout|co',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6415 [('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
6416 ('c', 'check', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6417 _('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
6418 ('d', 'date', '', _('tipmost revision matching date'), _('DATE')),
21552
61151f429a5f update: introduce --tool for controlling the merge tool
Mads Kiilerich <madski@unity3d.com>
parents: 21541
diff changeset
6419 ('r', 'rev', '', _('revision'), _('REV'))
61151f429a5f update: introduce --tool for controlling the merge tool
Mads Kiilerich <madski@unity3d.com>
parents: 21541
diff changeset
6420 ] + mergetoolopts,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6421 _('[-c] [-C] [-d DATE] [[-r] REV]'))
21552
61151f429a5f update: introduce --tool for controlling the merge tool
Mads Kiilerich <madski@unity3d.com>
parents: 21541
diff changeset
6422 def update(ui, repo, node=None, rev=None, clean=False, date=None, check=False,
61151f429a5f update: introduce --tool for controlling the merge tool
Mads Kiilerich <madski@unity3d.com>
parents: 21541
diff changeset
6423 tool=None):
10889
e25c450c351e commands: improve some command summaries
Matt Mackall <mpm@selenic.com>
parents: 10882
diff changeset
6424 """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
6425
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
6426 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
6427 changeset. If no changeset is specified, update to the tip of the
25349
62da2d7745f9 commands: rename current to active in variables and comments
Ryan McElroy <rmcelroy@fb.com>
parents: 25347
diff changeset
6428 current named branch and move the active bookmark (see :hg:`help
15957
12a1c9e92d66 update: note ways to avoid moving bookmark
Kevin Bullock <kbullock@ringworld.org>
parents: 15950
diff changeset
6429 bookmarks`).
12688
8c034a825cfe help: improve description of update --check
Kevin Bullock <kbullock@ringworld.org>
parents: 12618
diff changeset
6430
17343
e560ecb755fe update: fix typo in help text
Adrian Buehlmann <adrian@cadifra.com>
parents: 17322
diff changeset
6431 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
6432 changeset (see :hg:`help parents`).
c9e6c6ae4ea1 update: move help text about parent revision higher up
Adrian Buehlmann <adrian@cadifra.com>
parents: 17142
diff changeset
6433
16877
6e578e77cbe6 update: fix help regarding update to ancestor
Kevin Bullock <kbullock@ringworld.org>
parents: 16869
diff changeset
6434 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
6435 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
6436 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
6437 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
6438 changeset.
fe1b19bfe75b help: describe new cross-branch behavior in update help text, plus cleanups
Stuart W Marks <smarks@smarks.org>
parents: 9714
diff changeset
6439
17218
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6440 .. container:: verbose
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6441
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6442 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
6443 uncommitted changes:
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6444
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6445 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
6446 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
6447 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
6448 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
6449 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
6450 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
6451 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
6452 are preserved.
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6453
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6454 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
6455 uncommitted changes are preserved.
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6456
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6457 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
6458 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
6459
17144
71e36b3d2cc4 update: mention how update can be used to cancel an uncommitted merge
Adrian Buehlmann <adrian@cadifra.com>
parents: 17143
diff changeset
6460 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
6461 :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
6462
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
6463 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
6464 :hg:`clone -U`).
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
6465
14729
94eea58da2a3 update: do not use the term 'update' when mentioning reverting one file
Adrian Buehlmann <adrian@cadifra.com>
parents: 14726
diff changeset
6466 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
6467 :hg:`revert [-r REV] NAME`.
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
6468
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
6469 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
6470
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6471 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
6472 """
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6473 if rev and node:
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6474 raise util.Abort(_("please specify just one revision"))
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6475
13568
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 13477
diff changeset
6476 if rev is None or rev == '':
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6477 rev = node
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6478
26028
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6479 wlock = repo.wlock()
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6480 try:
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6481 cmdutil.clearunfinished(repo)
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6482
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6483 # with no argument, we also move the active bookmark, if any
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6484 rev, movemarkfrom = bookmarks.calculateupdate(ui, repo, rev)
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6485
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6486 # if we defined a bookmark, we have to remember the original name
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6487 brev = rev
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6488 rev = scmutil.revsingle(repo, rev, rev).rev()
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6489
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6490 if check and clean:
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6491 raise util.Abort(_("cannot specify both -c/--check and -C/--clean"))
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6492
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6493 if date:
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6494 if rev is not None:
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6495 raise util.Abort(_("you can't specify a revision and a date"))
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6496 rev = cmdutil.finddate(ui, repo, date)
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6497
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6498 if check:
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6499 cmdutil.bailifchanged(repo, merge=False)
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6500 if rev is None:
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6501 rev = repo[repo[None].branch()].rev()
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6502
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6503 repo.ui.setconfig('ui', 'forcemerge', tool, 'update')
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6504
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6505 if clean:
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6506 ret = hg.clean(repo, rev)
25789
95dc4b009f60 bookmarks: clear active bookmark on non-linear update
Matt Mackall <mpm@selenic.com>
parents: 25763
diff changeset
6507 else:
26028
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6508 ret = hg.update(repo, rev)
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6509
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6510 if not ret and movemarkfrom:
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6511 if bookmarks.update(repo, [movemarkfrom], repo['.'].node()):
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6512 ui.status(_("updating bookmark %s\n") % repo._activebookmark)
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6513 else:
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6514 # this can happen with a non-linear update
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6515 ui.status(_("(leaving bookmark %s)\n") %
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6516 repo._activebookmark)
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6517 bookmarks.deactivate(repo)
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6518 elif brev in repo._bookmarks:
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6519 bookmarks.activate(repo, brev)
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6520 ui.status(_("(activating bookmark %s)\n") % brev)
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6521 elif brev:
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6522 if repo._activebookmark:
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6523 ui.status(_("(leaving bookmark %s)\n") %
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6524 repo._activebookmark)
25789
95dc4b009f60 bookmarks: clear active bookmark on non-linear update
Matt Mackall <mpm@selenic.com>
parents: 25763
diff changeset
6525 bookmarks.deactivate(repo)
26028
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6526 finally:
6fbe35588433 update: wlock the repo for the whole 'hg update' command
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25796
diff changeset
6527 wlock.release()
13367
cef73cd9c268 bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents: 13366
diff changeset
6528
cef73cd9c268 bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents: 13366
diff changeset
6529 return ret
254
c03f58e5fd2d unify checkout and resolve into update
mpm@selenic.com
parents: 252
diff changeset
6530
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6531 @command('verify', [])
247
863b508c5b36 migrate verify
mpm@selenic.com
parents: 246
diff changeset
6532 def verify(ui, repo):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6533 """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
6534
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6535 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
6536
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6537 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
6538 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
6539 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
6540 integrity of their crosslinks and indices.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6541
17717
009db477c9fb help: add information about recovery from corruption to help of "verify"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17686
diff changeset
6542 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
6543 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
6544 repository.
009db477c9fb help: add information about recovery from corruption to help of "verify"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17686
diff changeset
6545
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6546 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
6547 """
2778
fdc232d8a193 Move repo.verify
Matt Mackall <mpm@selenic.com>
parents: 2776
diff changeset
6548 return hg.verify(repo)
247
863b508c5b36 migrate verify
mpm@selenic.com
parents: 246
diff changeset
6549
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
6550 @command('version', [], norepo=True)
3651
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6551 def version_(ui):
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6552 """output version and copyright information"""
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6553 ui.write(_("Mercurial Distributed SCM (version %s)\n")
7632
9626819b2e3d refactor version code
Matt Mackall <mpm@selenic.com>
parents: 7628
diff changeset
6554 % util.version())
3651
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6555 ui.status(_(
12829
01145ee78c53 version: replace email address with url to reduce private mail
Matt Mackall <mpm@selenic.com>
parents: 12821
diff changeset
6556 "(see http://mercurial.selenic.com for more information)\n"
24191
8fe5fc8d7b8e copyright: update to 2015
Jesus Cea <jcea@jcea.es>
parents: 24189
diff changeset
6557 "\nCopyright (C) 2005-2015 Matt Mackall and others\n"
3651
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6558 "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
6559 "There is NO\nwarranty; "
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6560 "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
6561 ))
21848
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6562
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6563 ui.note(_("\nEnabled extensions:\n\n"))
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6564 if ui.verbose:
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6565 # format names and versions into columns
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6566 names = []
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6567 vers = []
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6568 for name, module in extensions.extensions():
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6569 names.append(name)
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6570 vers.append(extensions.moduleversion(module))
21937
54ff2789d75e version: don't traceback if no extensions to list (issue4312)
Matt Mackall <mpm@selenic.com>
parents: 21929
diff changeset
6571 if names:
54ff2789d75e version: don't traceback if no extensions to list (issue4312)
Matt Mackall <mpm@selenic.com>
parents: 21929
diff changeset
6572 maxnamelen = max(len(n) for n in names)
54ff2789d75e version: don't traceback if no extensions to list (issue4312)
Matt Mackall <mpm@selenic.com>
parents: 21929
diff changeset
6573 for i, name in enumerate(names):
54ff2789d75e version: don't traceback if no extensions to list (issue4312)
Matt Mackall <mpm@selenic.com>
parents: 21929
diff changeset
6574 ui.write(" %-*s %s\n" % (maxnamelen, name, vers[i]))