annotate mercurial/commands.py @ 24456:a05c6b400616

status: add relative directory help text (issue3835) Previously, it was difficult to find out how to display the status of files relative to your current working directory. This patch adds that knowledge to the help text.
author Yung-Jin (Joey) Hu <yungjinhu@gmail.com>
date Wed, 18 Mar 2015 20:40:02 -0700
parents 16961d43dc89
children 7d87f672d069
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
19757
ff00839e8bb3 commands: import hgweb.server in a way that 2to3 can rewrite
Augie Fackler <raf@durin42.com>
parents: 19616
diff changeset
16 import sshserver, hgweb, commandserver
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
23888
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
24 import phases, obsolete, exchange, bundle2
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
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
43 # common command options
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
44
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
45 globalopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
46 ('R', 'repository', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
47 _('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
48 _('REPO')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
49 ('', 'cwd', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
50 _('change working directory'), _('DIR')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
51 ('y', 'noninteractive', None,
14849
d87814992728 commands: improve help for -y/--noninteractive
Martin Geisler <mg@aragost.com>
parents: 14755
diff changeset
52 _('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
53 ('q', 'quiet', None, _('suppress output')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
54 ('v', 'verbose', None, _('enable additional output')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
55 ('', 'config', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
56 _('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
57 _('CONFIG')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
58 ('', 'debug', None, _('enable debugging output')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
59 ('', 'debugger', None, _('start debugger')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
60 ('', '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
61 _('ENCODE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
62 ('', 'encodingmode', encoding.encodingmode,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
63 _('set the charset encoding mode'), _('MODE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
64 ('', '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
65 ('', '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
66 ('', 'profile', None, _('print command execution profile')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
67 ('', '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
68 ('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
69 ('', 'hidden', False, _('consider hidden changesets')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
70 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
71
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
72 dryrunopts = [('n', 'dry-run', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
73 _('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
74
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
75 remoteopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
76 ('e', 'ssh', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
77 _('specify ssh command to use'), _('CMD')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
78 ('', 'remotecmd', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
79 _('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
80 ('', 'insecure', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
81 _('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
82 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
83
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
84 walkopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
85 ('I', 'include', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
86 _('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
87 ('X', 'exclude', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
88 _('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
89 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
90
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
91 commitopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
92 ('m', 'message', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
93 _('use text as commit message'), _('TEXT')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
94 ('l', 'logfile', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
95 _('read commit message from file'), _('FILE')),
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
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
98 commitopts2 = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
99 ('d', 'date', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
100 _('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
101 ('u', 'user', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
102 _('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
103 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
104
22429
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
105 # hidden for now
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
106 formatteropts = [
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
107 ('T', 'template', '',
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
108 _('display with template (DEPRECATED)'), _('TEMPLATE')),
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
109 ]
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
110
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
111 templateopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
112 ('', 'style', '',
20669
870d60294b04 templater: deprecate --style now that -T exists
Matt Mackall <mpm@selenic.com>
parents: 20665
diff changeset
113 _('display using template map file (DEPRECATED)'), _('STYLE')),
20665
945bc5497e6d commands: add -T alternative to --template
Matt Mackall <mpm@selenic.com>
parents: 20664
diff changeset
114 ('T', 'template', '',
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
115 _('display with template'), _('TEMPLATE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
116 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
117
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
118 logopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
119 ('p', 'patch', None, _('show patch')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
120 ('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
121 ('l', 'limit', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
122 _('limit number of changes displayed'), _('NUM')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
123 ('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
124 ('', '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
125 ('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
126 ] + templateopts
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
127
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
128 diffopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
129 ('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
130 ('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
131 ('', '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
132 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
133
15528
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
134 diffwsopts = [
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
135 ('w', 'ignore-all-space', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
136 _('ignore white space when comparing lines')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
137 ('b', 'ignore-space-change', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
138 _('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
139 ('B', 'ignore-blank-lines', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
140 _('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
141 ]
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
142
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
143 diffopts2 = [
23298
dc4d0c7b7d94 diff: add a --noprefix option
Siddharth Agarwal <sid0@fb.com>
parents: 23289
diff changeset
144 ('', '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
145 ('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
146 ('', '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
147 ] + diffwsopts + [
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
148 ('U', 'unified', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
149 _('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
150 ('', '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
151 ('', '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
152 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
153
14852
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
154 mergetoolopts = [
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
155 ('t', 'tool', '', _('specify merge tool')),
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
156 ]
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
157
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
158 similarityopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
159 ('s', 'similarity', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
160 _('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
161 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
162
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
163 subrepoopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
164 ('S', 'subrepos', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
165 _('recurse into subrepositories'))
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
166 ]
2731
ad4155e757da Kill ui.setconfig_remoteopts
Matt Mackall <mpm@selenic.com>
parents: 2718
diff changeset
167
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
168 # Commands start here, listed alphabetically
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
169
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
170 @command('^add',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
171 walkopts + subrepoopts + dryrunopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
172 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
173 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
174 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
175 """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
176
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
177 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
178 repository.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
179
3829
531c116b2028 Add doc notes about revert and hg status vs diff
Matt Mackall <mpm@selenic.com>
parents: 3822
diff changeset
180 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
181 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
182
7807
bd8f44638847 help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents: 7765
diff changeset
183 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
184
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
185 .. container:: verbose
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
186
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
187 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
188 automatically by :hg:`add`::
10446
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
189
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
190 $ ls
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
191 foo.c
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
192 $ hg status
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
193 ? foo.c
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
194 $ hg add
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
195 adding foo.c
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
196 $ hg status
10448
6e5a47398fc5 commands: correct example in add help text
Martin Geisler <mg@lazybytes.net>
parents: 10446
diff changeset
197 A foo.c
11507
35e2d453cf0d commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11488
diff changeset
198
35e2d453cf0d commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11488
diff changeset
199 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
200 """
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
201
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
202 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
203 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
204 return rejected and 1 or 0
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
205
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
206 @command('addremove',
23538
ccfb56450f21 addremove: add support for the -S flag
Matt Harbison <matt_harbison@yahoo.com>
parents: 23537
diff changeset
207 similarityopts + subrepoopts + walkopts + dryrunopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
208 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
209 inferrepo=True)
766
b444a7e053f1 Get addremove to use new walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 764
diff changeset
210 def addremove(ui, repo, *pats, **opts):
3181
3637d5d17cbc Documentation fixes for addremove.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3172
diff changeset
211 """add all new files, delete all missing files
2181
690da72b0b16 deprecate addremove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2179
diff changeset
212
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
213 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
214 repository.
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
215
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
216 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
217 ``.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
218 commit.
2958
ff3ea21a981a addremove: add -s/--similarity option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2956
diff changeset
219
17266
4e35dea77e31 addremove: mention --similarity defaults to 100 (issue3430)
Patrick Mezard <patrick@mezard.eu>
parents: 17264
diff changeset
220 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
221 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
222 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
223 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
224 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
225 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
226 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
227 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
228 identical files are detected.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
229
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
230 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
231 """
4966
8d982aef0be1 addremove: print meaningful error message if --similar not numeric
Bryan O'Sullivan <bos@serpentine.com>
parents: 4950
diff changeset
232 try:
11551
4484a7b661f2 commands: addremove does similarity 100 by default
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 11525
diff changeset
233 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
234 except ValueError:
8d982aef0be1 addremove: print meaningful error message if --similar not numeric
Bryan O'Sullivan <bos@serpentine.com>
parents: 4950
diff changeset
235 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
236 if sim < 0 or sim > 100:
ff3ea21a981a addremove: add -s/--similarity option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2956
diff changeset
237 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
238 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
239 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
240
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
241 @command('^annotate|blame',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
242 [('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
243 ('', 'follow', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
244 _('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
245 ('', '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
246 ('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
247 ('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
248 ('f', 'file', None, _('list the filename')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
249 ('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
250 ('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
251 ('c', 'changeset', None, _('list the changeset')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
252 ('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
253 ] + diffwsopts + walkopts + formatteropts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
254 _('[-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
255 inferrepo=True)
733
1966c553f652 Convert annotate over to walk interface.
Bryan O'Sullivan <bos@serpentine.com>
parents: 732
diff changeset
256 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
257 """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
258
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
259 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
260 each line
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
261
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
262 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
263 by whom.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
264
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
265 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
266 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
267 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
268 nor desirable.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
269
24421
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
270 By default, annotate files in the parent of the working directory.
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
271 Use -r "wdir()" to annotate the working directory files.
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
272
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
273 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
274 """
22266
711de9dcb1d3 annotate: abort early if no file is specified
Yuya Nishihara <yuya@tcha.org>
parents: 22248
diff changeset
275 if not pats:
711de9dcb1d3 annotate: abort early if no file is specified
Yuya Nishihara <yuya@tcha.org>
parents: 22248
diff changeset
276 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
277
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
278 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
279 # --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
280 # 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
281 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
282
24421
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
283 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
284
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
285 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
286 if ui.quiet:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
287 datefunc = util.shortdate
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
288 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
289 datefunc = util.datestr
24421
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
290 if ctx.rev() is None:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
291 def hexfn(node):
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
292 if node is None:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
293 return None
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
294 else:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
295 return fm.hexfunc(node)
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
296 if opts.get('changeset'):
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
297 # 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
298 def formatrev(rev):
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
299 if rev is None:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
300 return '%d' % ctx.p1().rev()
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
301 else:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
302 return '%d' % rev
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
303 else:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
304 def formatrev(rev):
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
305 if rev is None:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
306 return '%d+' % ctx.p1().rev()
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
307 else:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
308 return '%d ' % rev
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
309 def formathex(hex):
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
310 if hex is None:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
311 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
312 else:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
313 return '%s ' % hex
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
314 else:
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
315 hexfn = fm.hexfunc
77881cade20e annotate: add option to annotate working-directory files
Yuya Nishihara <yuya@tcha.org>
parents: 24413
diff changeset
316 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
317
22479
5d9e46d93c1d annotate: split functions to get data without applying text formatting
Yuya Nishihara <yuya@tcha.org>
parents: 22478
diff changeset
318 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
319 ('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
320 ('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
321 ('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
322 ('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
323 ('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
324 ]
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
325 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
326
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10270
diff changeset
327 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
328 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
329 opts['number'] = True
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
330
4857
2192001e4bb4 Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4849
diff changeset
331 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
332 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
333 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
334
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
335 if fm:
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
336 def makefunc(get, fmt):
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
337 return get
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
338 else:
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 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
341 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
342 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
343 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
344 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
345 if opts.get(op))
4857
2192001e4bb4 Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4849
diff changeset
346
13697
eaee75036725 annotate: catch nonexistent files using match.bad callback (issue1590)
Matt Mackall <mpm@selenic.com>
parents: 13694
diff changeset
347 def bad(x, y):
eaee75036725 annotate: catch nonexistent files using match.bad callback (issue1590)
Matt Mackall <mpm@selenic.com>
parents: 13694
diff changeset
348 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
349
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
350 m = scmutil.match(ctx, pats, opts)
13697
eaee75036725 annotate: catch nonexistent files using match.bad callback (issue1590)
Matt Mackall <mpm@selenic.com>
parents: 13694
diff changeset
351 m.bad = bad
10369
98a0421b9e52 commands: annotate follows by default, separate -f/--file option
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10365
diff changeset
352 follow = not opts.get('no_follow')
23455
265034f4e27c annotate: explicitly only honor whitespace diffopts
Siddharth Agarwal <sid0@fb.com>
parents: 23426
diff changeset
353 diffopts = patch.difffeatureopts(ui, opts, section='annotate',
265034f4e27c annotate: explicitly only honor whitespace diffopts
Siddharth Agarwal <sid0@fb.com>
parents: 23426
diff changeset
354 whitespace=True)
6764
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
355 for abs in ctx.walk(m):
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
356 fctx = ctx[abs]
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
357 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
358 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
359 continue
836667830fee Teach annotate about binary files
mpm@selenic.com
parents: 1015
diff changeset
360
15528
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
361 lines = fctx.annotate(follow=follow, linenumber=linenumber,
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
362 diffopts=diffopts)
22477
3c8ae79eacb0 annotate: build format string separately from annotation data
Yuya Nishihara <yuya@tcha.org>
parents: 22452
diff changeset
363 formats = []
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
364 pieces = []
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
365
14358
bf93e78f2638 annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14331
diff changeset
366 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
367 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
368 if l:
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
369 if fm:
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
370 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
371 else:
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
372 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
373 ml = max(sizes)
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
374 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
375 pieces.append(l)
3c8ae79eacb0 annotate: build format string separately from annotation data
Yuya Nishihara <yuya@tcha.org>
parents: 22452
diff changeset
376
3c8ae79eacb0 annotate: build format string separately from annotation data
Yuya Nishihara <yuya@tcha.org>
parents: 22452
diff changeset
377 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
378 fm.startitem()
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
379 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
380 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
381
75e166b82c7a annotate: remove redundant check for empty list of annotation data
Yuya Nishihara <yuya@tcha.org>
parents: 22433
diff changeset
382 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
383 fm.plain('\n')
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
384
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
385 fm.end()
15829
2c480532f36e annotate: append newline after non newline-terminated file listings
Ion Savin <ion.savin@tora.com>
parents: 15780
diff changeset
386
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
387 @command('archive',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
388 [('', '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
389 ('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
390 _('PREFIX')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
391 ('r', 'rev', '', _('revision to distribute'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
392 ('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
393 ] + subrepoopts + walkopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
394 _('[OPTION]... DEST'))
2112
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
395 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
396 '''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
397
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
398 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
399 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
400
10650
9ea7238ad935 archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents: 10649
diff changeset
401 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
402 extension (or override using -t/--type).
9ea7238ad935 archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents: 10649
diff changeset
403
15109
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
404 .. container:: verbose
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
405
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
406 Examples:
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
407
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
408 - create a zip file containing the 1.0 release::
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
409
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
410 hg archive -r 1.0 project-1.0.zip
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
411
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
412 - create a tarball excluding .hg files::
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
413
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
414 hg archive project.tar.gz -X ".hg*"
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
415
10650
9ea7238ad935 archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents: 10649
diff changeset
416 Valid types are:
9892
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
417
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
418 :``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
419 :``tar``: tar archive, uncompressed
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
420 :``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
421 :``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
422 :``uzip``: zip archive, uncompressed
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
423 :``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
424
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
425 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
426 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
427
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
428 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
429 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
430 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
431 removed.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
432
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
433 Returns 0 on success.
2112
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
434 '''
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
435
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
436 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
437 if not ctx:
7528
eadcc075967e archive: fix bogus error message with no working directory
Matt Mackall <mpm@selenic.com>
parents: 7527
diff changeset
438 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
439 node = ctx.node()
14290
86e70956da4f cmdutil: make_filename -> makefilename
Matt Mackall <mpm@selenic.com>
parents: 14289
diff changeset
440 dest = cmdutil.makefilename(repo, dest, node)
15381
c519cd8f0169 backout dbdb777502dc (issue3077) (issue3071)
Matt Mackall <mpm@selenic.com>
parents: 15373
diff changeset
441 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
442 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
443
11557
57bdc2239535 archival: move commands.archive.guess_type to archival.guesskind
Martin Geisler <mg@lazybytes.net>
parents: 11551
diff changeset
444 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
445 prefix = opts.get('prefix')
10650
9ea7238ad935 archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents: 10649
diff changeset
446
2476
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
447 if dest == '-':
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
448 if kind == 'files':
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
449 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
450 dest = cmdutil.makefileobj(repo, dest)
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10270
diff changeset
451 if not prefix:
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10270
diff changeset
452 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
453
14290
86e70956da4f cmdutil: make_filename -> makefilename
Matt Mackall <mpm@selenic.com>
parents: 14289
diff changeset
454 prefix = cmdutil.makefilename(repo, prefix, node)
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
455 matchfn = scmutil.match(ctx, [], opts)
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
456 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
457 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
458
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
459 @command('backout',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
460 [('', 'merge', None, _('merge with old dirstate parent after backout')),
23615
7cfe58983bff backout: add --commit option
Mateusz Kwapich <mitrandir@fb.com>
parents: 23547
diff changeset
461 ('', '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
462 ('', 'parent', '',
1209de02034e backout: deprecate/hide support for backing out merges
Matt Mackall <mpm@selenic.com>
parents: 15210
diff changeset
463 _('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
464 ('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
465 ('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
466 ] + mergetoolopts + walkopts + commitopts + commitopts2,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
467 _('[OPTION]... [-r] REV'))
23615
7cfe58983bff backout: add --commit option
Mateusz Kwapich <mitrandir@fb.com>
parents: 23547
diff changeset
468 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
469 '''reverse effect of earlier changeset
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
470
13340
02aa06a021a0 backout: make help more explicit about what backout does
Jonathan Nieder <jrnieder@gmail.com>
parents: 13328
diff changeset
471 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
472 current working directory.
02aa06a021a0 backout: make help more explicit about what backout does
Jonathan Nieder <jrnieder@gmail.com>
parents: 13328
diff changeset
473
13473
bbdd858e3229 backout: clarify which changesets are new in help text
Jonathan Nieder <jrnieder@gmail.com>
parents: 13472
diff changeset
474 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
475 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
476 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
477
15210
9d8115c5fbda backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents: 15209
diff changeset
478 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
479
15210
9d8115c5fbda backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents: 15209
diff changeset
480 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
481 incorrect merge.
9d8115c5fbda backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents: 15209
diff changeset
482
15209
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
483 .. container:: verbose
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
484
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
485 By default, the pending changeset will have one parent,
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
486 maintaining a linear history. With --merge, the pending
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
487 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
488 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
489
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
490 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
491 to specifying --merge followed by :hg:`update --clean .` to
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
492 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
493 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
494
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
495 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
496
20872
3f83fc5cfe71 backout: correct commit status of no changes made (BC) (issue4190)
Yuya Nishihara <yuya@tcha.org>
parents: 20871
diff changeset
497 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
498 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
499 '''
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
500 if rev and node:
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
501 raise util.Abort(_("please specify just one revision"))
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
502
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
503 if not rev:
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
504 rev = node
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
505
4726
f6e961c0155b Fix and test 'hg backout' without or with too many revisions.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4718
diff changeset
506 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
507 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
508
6139
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
509 date = opts.get('date')
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
510 if date:
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
511 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
512
19476
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
513 cmdutil.checkunfinished(repo)
14289
d68ddccf276b cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents: 14286
diff changeset
514 cmdutil.bailifchanged(repo)
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
515 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
516
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
517 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
518 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
519 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
520
2614
8ba1c31f6864 backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2613
diff changeset
521 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
522 if p1 == nullid:
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
523 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
524 if p2 != nullid:
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
525 if not opts.get('parent'):
15211
1209de02034e backout: deprecate/hide support for backing out merges
Matt Mackall <mpm@selenic.com>
parents: 15210
diff changeset
526 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
527 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
528 if p not in (p1, p2):
3679
2956948b81f3 fix warnings generated by pygettext.py.
Marcos Chaves <marcos.nospam@gmail.com>
parents: 3673
diff changeset
529 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
530 (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
531 parent = p
8ba1c31f6864 backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2613
diff changeset
532 else:
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
533 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
534 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
535 parent = p1
5568
de620356064f backout: disallow across branches (issue655)
Matt Mackall <mpm@selenic.com>
parents: 5542
diff changeset
536
6423
fb374b1b3911 backout: reverse changeset belongs on current branch
Matt Mackall <mpm@selenic.com>
parents: 6385
diff changeset
537 # 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
538 wlock = repo.wlock()
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
539 try:
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
540 branch = repo.dirstate.branch()
18689
12721a20ed30 backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents: 18688
diff changeset
541 bheads = repo.branchheads(branch)
18685
fafdff7e9c43 backout: use cmdutil.revert directly instead of commands.revert
Kevin Bullock <kbullock@ringworld.org>
parents: 18658
diff changeset
542 rctx = scmutil.revsingle(repo, hex(parent))
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
543 if not opts.get('merge') and op1 != node:
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
544 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
545 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
546 'backout')
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
547 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
548 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
549 node, False)
20275
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
550 repo.setparents(op1, op2)
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
551 repo.dirstate.endparentchange()
20275
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
552 hg._showstats(repo, stats)
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
553 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
554 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
555 "file merges\n"))
23615
7cfe58983bff backout: add --commit option
Mateusz Kwapich <mitrandir@fb.com>
parents: 23547
diff changeset
556 return 1
7cfe58983bff backout: add --commit option
Mateusz Kwapich <mitrandir@fb.com>
parents: 23547
diff changeset
557 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
558 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
559 "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
560 ui.status(msg % short(node))
23615
7cfe58983bff backout: add --commit option
Mateusz Kwapich <mitrandir@fb.com>
parents: 23547
diff changeset
561 return 0
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
562 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
563 ui.setconfig('ui', 'forcemerge', '', '')
20275
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
564 else:
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
565 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
566 repo.dirstate.setbranch(branch)
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
567 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
568
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
569
18689
12721a20ed30 backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents: 18688
diff changeset
570 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
571 editform = 'backout'
a5bb0c4001ae backout: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21986
diff changeset
572 e = cmdutil.getcommiteditor(editform=editform, **opts)
21412
6f6ccb0bb6af backout: avoid redundant message examination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21404
diff changeset
573 if not message:
6f6ccb0bb6af backout: avoid redundant message examination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21404
diff changeset
574 # we don't translate commit messages
6f6ccb0bb6af backout: avoid redundant message examination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21404
diff changeset
575 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
576 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
577 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
578 match, editor=e)
12721a20ed30 backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents: 18688
diff changeset
579 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
580 if not newnode:
3f83fc5cfe71 backout: correct commit status of no changes made (BC) (issue4190)
Yuya Nishihara <yuya@tcha.org>
parents: 20871
diff changeset
581 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
582 return 1
18689
12721a20ed30 backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents: 18688
diff changeset
583 cmdutil.commitstatus(repo, newnode, branch, bheads)
18687
1d183b33f007 backout: remove unnecessary dict copy
Kevin Bullock <kbullock@ringworld.org>
parents: 18686
diff changeset
584
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
585 def nice(node):
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
586 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
587 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
588 (nice(repo.changelog.tip()), nice(node)))
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
589 if opts.get('merge') and op1 != node:
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
590 hg.clean(repo, op1, show_stats=False)
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
591 ui.status(_('merging with changeset %s\n')
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
592 % nice(repo.changelog.tip()))
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
593 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
594 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
595 'backout')
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
596 return hg.merge(repo, hex(repo.changelog.tip()))
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
597 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
598 ui.setconfig('ui', 'forcemerge', '', '')
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
599 finally:
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
600 wlock.release()
12727
52971985be14 backout: provide linear backout as a default (without --merge option)
Gilles Moris <gilles.moris@free.fr>
parents: 12726
diff changeset
601 return 0
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
602
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
603 @command('bisect',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
604 [('r', 'reset', False, _('reset bisect state')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
605 ('g', 'good', False, _('mark changeset good')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
606 ('b', 'bad', False, _('mark changeset bad')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
607 ('s', 'skip', False, _('skip testing changeset')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
608 ('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
609 ('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
610 ('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
611 _("[-gbsr] [-U] [-c CMD] [REV]"))
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
612 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
613 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
614 noupdate=None):
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
615 """subdivision search of changesets
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
616
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
617 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
618 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
619 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
620 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
621 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
622 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
623 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
624 or announce that it has found the bad revision.
7184
380fda3eed13 clean up trailing spaces
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 7037
diff changeset
625
6928
1a4c66d741a2 bisect: expand help text to explain REV argument and --noupdate
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6858
diff changeset
626 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
627 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
628
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
629 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
630 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
631 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
632 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
633 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
634 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
635 is bad.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
636
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
637 .. 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
638
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
639 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
640
20151
734ff413eb7e help: fix backwards bisect help example
Santiago Pay=C3=A0 i Miralta <santiagopim@gmail.com>
parents: 20146
diff changeset
641 - 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
642
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 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
644 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
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 - 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
647 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
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 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
650 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
651
17424
e7cfe3587ea4 fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents: 17393
diff changeset
652 - 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
653 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
654
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
655 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
656 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
657
19958
25b02c6f73a6 doc: end line preceding command line example with double colon
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19941
diff changeset
658 - 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
659
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
660 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
661
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
662 - 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
663
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
664 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
665
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 - 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
667 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
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 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
670 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
671 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
672 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
673
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 - 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
675 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
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 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
678
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
679 - 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
680 if running with -U/--noupdate)::
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
681
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
682 hg log -r "bisect(current)"
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
683
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
684 - 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
685
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
686 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
687
20146
aa192af94321 bisect: don't mention obsolete graphlog extension in help
Martin Geisler <martin@geisler.net>
parents: 20107
diff changeset
688 - 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
689
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 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
691
15147
395ca8cd2669 revset.bisect: add 'ignored' set to the bisect keyword
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 15145
diff changeset
692 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
693
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
694 Returns 0 on success.
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
695 """
13601
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
696 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
697 # 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
698 # 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
699 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
700 if len(parents) > 1:
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
701 if good:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
702 side = state['bad']
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
703 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
704 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
705 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
706 if num == 1:
14157
a8f136f430da bisect: fix indent level
Yuya Nishihara <yuya@tcha.org>
parents: 14144
diff changeset
707 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
708 return None
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
709
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
710 def print_result(nodes, good):
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
711 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
712 if len(nodes) == 1:
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
713 # 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
714 if good:
bdeb380a10de commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents: 8042
diff changeset
715 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
716 else:
bdeb380a10de commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents: 8042
diff changeset
717 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
718 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
719 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
720 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
721 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
722 ' 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
723 '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
724 % extendnode)
6858
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
725 else:
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
726 # multiple possible revisions
8088
bdeb380a10de commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents: 8042
diff changeset
727 if good:
bdeb380a10de commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents: 8042
diff changeset
728 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
729 "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
730 else:
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 "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
733 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
734 displayer.show(repo[n])
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
735 displayer.close()
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
736
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
737 def check_state(state, interactive=True):
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
738 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
739 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
740 return
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
741 if not state['good']:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
742 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
743 else:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
744 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
745 return True
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
746
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
747 # backward compatibility
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
748 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
749 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
750 cmd, rev, extra = rev, extra, None
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
751 if cmd == "good":
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
752 good = True
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
753 elif cmd == "bad":
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
754 bad = True
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
755 else:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
756 reset = True
13601
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
757 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
758 raise util.Abort(_('incompatible arguments'))
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
759
19476
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
760 cmdutil.checkunfinished(repo)
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
761
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
762 if reset:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
763 p = repo.join("bisect.state")
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
764 if os.path.exists(p):
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
765 os.unlink(p)
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
766 return
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
767
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
768 state = hbisect.load_state(repo)
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
769
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
770 if command:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
771 changesets = 1
20237
0d32dd60016c bisect: --command without --noupdate should flag the parent rev it tested
Mads Kiilerich <madski@unity3d.com>
parents: 20235
diff changeset
772 if noupdate:
0d32dd60016c bisect: --command without --noupdate should flag the parent rev it tested
Mads Kiilerich <madski@unity3d.com>
parents: 20235
diff changeset
773 try:
0d32dd60016c bisect: --command without --noupdate should flag the parent rev it tested
Mads Kiilerich <madski@unity3d.com>
parents: 20235
diff changeset
774 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
775 except LookupError:
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
776 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
777 '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
778 else:
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
779 node, p2 = repo.dirstate.parents()
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
780 if p2 != nullid:
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
781 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
782 try:
7590
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
783 while changesets:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
784 # update state
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
785 state['current'] = [node]
16593
e462313ef1bd bisect: save current state before running a command
Bryan O'Sullivan <bryano@fb.com>
parents: 16591
diff changeset
786 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
787 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
788 if status == 125:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
789 transition = "skip"
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
790 elif status == 0:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
791 transition = "good"
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
792 # 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
793 elif status == 127:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
794 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
795 elif status < 0:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
796 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
797 else:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
798 transition = "bad"
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
799 ctx = scmutil.revsingle(repo, rev, node)
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
800 rev = None # clear for future iterations
8805
2726a6df11e9 bisect: improve --command output
Patrick Mezard <pmezard@gmail.com>
parents: 8802
diff changeset
801 state[transition].append(ctx.node())
16936
ee7dd2307031 bisect: lowercase status message
Martin Geisler <mg@aragost.com>
parents: 16935
diff changeset
802 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
803 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
804 # 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
805 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
806 # update to next check
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
807 node = nodes[0]
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
808 if not noupdate:
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
809 cmdutil.bailifchanged(repo)
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
810 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
811 finally:
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
812 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
813 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
814 print_result(nodes, bgood)
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
815 return
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
816
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
817 # update state
12177
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
818
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
819 if rev:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
820 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
821 else:
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
822 nodes = [repo.lookup('.')]
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
823
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
824 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
825 if good:
12177
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
826 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
827 elif bad:
12177
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
828 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
829 elif skip:
12177
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
830 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
831 hbisect.save_state(repo, state)
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
832
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
833 if not check_state(state):
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
834 return
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 # actually bisect
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
837 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
838 if extend:
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
839 if not changesets:
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
840 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
841 if extendnode is not None:
20868
5db105f216c3 i18n: fix "% inside _()" problems
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20772
diff changeset
842 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
843 % (extendnode.rev(), extendnode))
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
844 state['current'] = [extendnode.node()]
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
845 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
846 if noupdate:
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
847 return
14289
d68ddccf276b cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents: 14286
diff changeset
848 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
849 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
850 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
851
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
852 if changesets == 0:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
853 print_result(nodes, good)
6858
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
854 else:
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
855 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
856 node = nodes[0]
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
857 # compute the approximate number of remaining tests
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
858 tests, size = 0, 2
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
859 while size <= changesets:
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
860 tests, size = tests + 1, size * 2
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
861 rev = repo.changelog.rev(node)
9012
ada93c6bf554 bisect: fix format specifiers for integers
Cédric Duval <cedricduval@free.fr>
parents: 8995
diff changeset
862 ui.write(_("Testing changeset %d:%s "
ada93c6bf554 bisect: fix format specifiers for integers
Cédric Duval <cedricduval@free.fr>
parents: 8995
diff changeset
863 "(%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
864 % (rev, short(node), changesets, tests))
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
865 state['current'] = [node]
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
866 hbisect.save_state(repo, state)
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
867 if not noupdate:
14289
d68ddccf276b cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents: 14286
diff changeset
868 cmdutil.bailifchanged(repo)
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
869 return hg.clean(repo, node)
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
870
18075
2c1fc483efa4 commands: 'hg bookmark NAME' should work even with ui.strict=True
Kevin Bullock <kbullock@ringworld.org>
parents: 18068
diff changeset
871 @command('bookmarks|bookmark',
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
872 [('f', 'force', False, _('force')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
873 ('r', 'rev', '', _('revision'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
874 ('d', 'delete', False, _('delete a given bookmark')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
875 ('m', 'rename', '', _('rename a given bookmark'), _('NAME')),
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
876 ('i', 'inactive', False, _('mark a bookmark inactive')),
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
877 ] + formatteropts,
19147
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
878 _('hg bookmarks [OPTIONS]... [NAME]...'))
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
879 def bookmark(ui, repo, *names, **opts):
21762
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
880 '''create a new bookmark or list existing bookmarks
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
881
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
882 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
883 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
884 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
885
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
886 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
887 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
888 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
889 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
890 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
891
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
892 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
893 :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
894 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
895 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
896
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
897 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
898 check it out by default if it exists.
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 .. container:: verbose
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
901
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
902 Examples:
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
903
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
904 - 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
905
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
906 hg book new-feature
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
907
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
908 - create an inactive bookmark as a place marker::
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
909
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
910 hg book -i reviewed
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
911
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
912 - create an inactive bookmark on another changeset::
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
913
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
914 hg book -r .^ tested
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
915
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
916 - move the '@' bookmark from another branch::
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
917
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
918 hg book -f @
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
919 '''
19147
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
920 force = opts.get('force')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
921 rev = opts.get('rev')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
922 delete = opts.get('delete')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
923 rename = opts.get('rename')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
924 inactive = opts.get('inactive')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
925
17789
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
926 def checkformat(mark):
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
927 mark = mark.strip()
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
928 if not mark:
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
929 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
930 "whitespace"))
17821
361ab1e2086f scmutil: add bad character checking to checknewlabel
Kevin Bullock <kbullock@ringworld.org>
parents: 17818
diff changeset
931 scmutil.checknewlabel(repo, mark, 'bookmark')
17789
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
932 return mark
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
933
20233
410193f11422 commands.bookmarks: pass cur in explicitly to checkconflict
Siddharth Agarwal <sid0@fb.com>
parents: 20232
diff changeset
934 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
935 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
936 if target:
18781
99b78269a2ec bookmarks: allow (re-)activating a bookmark on the current changeset
Kevin Bullock <kbullock@ringworld.org>
parents: 18773
diff changeset
937 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
938 # re-activating a bookmark
99b78269a2ec bookmarks: allow (re-)activating a bookmark on the current changeset
Kevin Bullock <kbullock@ringworld.org>
parents: 18773
diff changeset
939 return
18773
56dd55da2f7d bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents: 18746
diff changeset
940 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
941 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
942 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
943 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
944
6439d78e14fb bookmarks: resolve divergent bookmark when moving across a branch
Sean Farley <sean.michael.farley@gmail.com>
parents: 19109
diff changeset
945 # 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
946 # 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
947 # 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
948 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
949 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
950 return
6439d78e14fb bookmarks: resolve divergent bookmark when moving across a branch
Sean Farley <sean.michael.farley@gmail.com>
parents: 19109
diff changeset
951
19109
26c51e87e807 bookmarks: resolve divergent bookmarks when fowarding bookmark to descendant
Sean Farley <sean.michael.farley@gmail.com>
parents: 19026
diff changeset
952 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
953 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
954 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
955 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
956 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
957 (mark, short(bmctx.node())))
56dd55da2f7d bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents: 18746
diff changeset
958 return
17789
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
959 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
960 "(use -f to force)") % mark)
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
961 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
962 and not force):
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
963 raise util.Abort(
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
964 _("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
965
17790
0291e122fb05 bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents: 17789
diff changeset
966 if delete and rename:
0291e122fb05 bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents: 17789
diff changeset
967 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
968 if delete and rev:
0291e122fb05 bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents: 17789
diff changeset
969 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
970 if rename and rev:
0291e122fb05 bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents: 17789
diff changeset
971 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
972 if not names and (delete or rev):
17791
1e30c1bbd8c0 bookmarks: simplify code
Kevin Bullock <kbullock@ringworld.org>
parents: 17790
diff changeset
973 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
974
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
975 if delete or rename or names or inactive:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
976 wlock = repo.wlock()
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
977 try:
20234
8a133190da89 commands.bookmarks: move cur initialization to inside wlock
Siddharth Agarwal <sid0@fb.com>
parents: 20233
diff changeset
978 cur = repo.changectx('.').node()
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
979 marks = repo._bookmarks
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
980 if delete:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
981 for mark in names:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
982 if mark not in marks:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
983 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
984 mark)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
985 if mark == repo._bookmarkcurrent:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
986 bookmarks.unsetcurrent(repo)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
987 del marks[mark]
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
988 marks.write()
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
989
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
990 elif rename:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
991 if not names:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
992 raise util.Abort(_("new bookmark name required"))
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
993 elif len(names) > 1:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
994 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
995 mark = checkformat(names[0])
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
996 if rename not in marks:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
997 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
998 checkconflict(repo, mark, cur, force)
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
999 marks[mark] = marks[rename]
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1000 if repo._bookmarkcurrent == rename and not inactive:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1001 bookmarks.setcurrent(repo, mark)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1002 del marks[rename]
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1003 marks.write()
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1004
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1005 elif names:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1006 newact = None
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1007 for mark in names:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1008 mark = checkformat(mark)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1009 if newact is None:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1010 newact = mark
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1011 if inactive and mark == repo._bookmarkcurrent:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1012 bookmarks.unsetcurrent(repo)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1013 return
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1014 tgt = cur
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1015 if rev:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1016 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
1017 checkconflict(repo, mark, cur, force, tgt)
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1018 marks[mark] = tgt
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1019 if not inactive and cur == marks[newact] and not rev:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1020 bookmarks.setcurrent(repo, newact)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1021 elif cur != tgt and newact == repo._bookmarkcurrent:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1022 bookmarks.unsetcurrent(repo)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1023 marks.write()
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1024
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1025 elif inactive:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1026 if len(marks) == 0:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1027 ui.status(_("no bookmarks set\n"))
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1028 elif not repo._bookmarkcurrent:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1029 ui.status(_("no active bookmark\n"))
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1030 else:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1031 bookmarks.unsetcurrent(repo)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1032 finally:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1033 wlock.release()
17822
c284085d17a8 bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents: 17821
diff changeset
1034 else: # show bookmarks
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1035 fm = ui.formatter('bookmarks', opts)
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1036 hexfn = fm.hexfunc
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
1037 marks = repo._bookmarks
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1038 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
1039 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
1040 for bmark, n in sorted(marks.iteritems()):
b17fd992d606 bookmarks: iterate bookmarks list even if it is known to be empty
Yuya Nishihara <yuya@tcha.org>
parents: 22705
diff changeset
1041 current = repo._bookmarkcurrent
b17fd992d606 bookmarks: iterate bookmarks list even if it is known to be empty
Yuya Nishihara <yuya@tcha.org>
parents: 22705
diff changeset
1042 if bmark == current:
b17fd992d606 bookmarks: iterate bookmarks list even if it is known to be empty
Yuya Nishihara <yuya@tcha.org>
parents: 22705
diff changeset
1043 prefix, label = '*', 'bookmarks.current'
b17fd992d606 bookmarks: iterate bookmarks list even if it is known to be empty
Yuya Nishihara <yuya@tcha.org>
parents: 22705
diff changeset
1044 else:
b17fd992d606 bookmarks: iterate bookmarks list even if it is known to be empty
Yuya Nishihara <yuya@tcha.org>
parents: 22705
diff changeset
1045 prefix, label = ' ', ''
b17fd992d606 bookmarks: iterate bookmarks list even if it is known to be empty
Yuya Nishihara <yuya@tcha.org>
parents: 22705
diff changeset
1046
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1047 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
1048 if not ui.quiet:
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1049 fm.plain(' %s ' % prefix, label=label)
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1050 fm.write('bookmark', '%s', bmark, label=label)
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1051 pad = " " * (25 - encoding.colwidth(bmark))
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1052 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
1053 repo.changelog.rev(n), hexfn(n), label=label)
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1054 fm.data(active=(bmark == current))
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1055 fm.plain('\n')
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1056 fm.end()
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
1057
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1058 @command('branch',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1059 [('f', 'force', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1060 _('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
1061 ('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
1062 _('[-fC] [NAME]'))
4202
b2873c587b1a branch: require --force to shadow existing branches
Brendan Cully <brendan@kublai.com>
parents: 4200
diff changeset
1063 def branch(ui, repo, label=None, **opts):
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1064 """set or show the current branch name
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1065
15610
09b200396384 branch: move note about permanence to the top, add 'global'
Matt Mackall <mpm@selenic.com>
parents: 15511
diff changeset
1066 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
1067
15610
09b200396384 branch: move note about permanence to the top, add 'global'
Matt Mackall <mpm@selenic.com>
parents: 15511
diff changeset
1068 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
1069 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
1070 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
1071
4601
e69da61e467e Notify the user that hg branch does not create a branch until commit
Brendan Cully <brendan@kublai.com>
parents: 4593
diff changeset
1072 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
1073 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
1074 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
1075 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
1076 branch.
4202
b2873c587b1a branch: require --force to shadow existing branches
Brendan Cully <brendan@kublai.com>
parents: 4200
diff changeset
1077
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
1078 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
1079 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
1080
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
1081 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
1082 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
1083 change.
7006
92d44ec32430 branch: added more support for named branches
Sune Foldager <cryo@cyanite.org>
parents: 7003
diff changeset
1084
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
1085 Use the command :hg:`update` to switch to an existing branch. Use
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
1086 :hg:`commit --close-branch` to mark this branch as closed.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1087
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1088 Returns 0 on success.
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1089 """
19180
12dbdd348bb0 branch: strip whitespace before testing known branch name
Yuya Nishihara <yuya@tcha.org>
parents: 19112
diff changeset
1090 if label:
12dbdd348bb0 branch: strip whitespace before testing known branch name
Yuya Nishihara <yuya@tcha.org>
parents: 19112
diff changeset
1091 label = label.strip()
12dbdd348bb0 branch: strip whitespace before testing known branch name
Yuya Nishihara <yuya@tcha.org>
parents: 19112
diff changeset
1092
16471
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1093 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
1094 ui.write("%s\n" % repo.dirstate.branch())
16471
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1095 return
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1096
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1097 wlock = repo.wlock()
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1098 try:
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1099 if opts.get('clean'):
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1100 label = repo[None].p1().branch()
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1101 repo.dirstate.setbranch(label)
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1102 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
1103 elif label:
16719
e7bf09acd410 localrepo: add branchtip() method for faster single-branch lookups
Brodie Rao <brodie@sf.io>
parents: 16715
diff changeset
1104 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
1105 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
1106 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
1107 ' exists'),
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1108 # i18n: "it" refers to an existing branch
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1109 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
1110 scmutil.checknewlabel(repo, label, 'branch')
16471
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1111 repo.dirstate.setbranch(label)
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1112 ui.status(_('marked working directory as branch %s\n') % label)
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1113 ui.status(_('(branches are permanent and global, '
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1114 'did you want a bookmark?)\n'))
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1115 finally:
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1116 wlock.release()
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1117
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1118 @command('branches',
23620
3d4aa20b775d branches: deprecate -a
Matt Mackall <mpm@selenic.com>
parents: 23615
diff changeset
1119 [('a', 'active', False,
3d4aa20b775d branches: deprecate -a
Matt Mackall <mpm@selenic.com>
parents: 23615
diff changeset
1120 _('show only branches that have unmerged heads (DEPRECATED)')),
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1121 ('c', 'closed', False, _('show normal and closed branches')),
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1122 ] + formatteropts,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1123 _('[-ac]'))
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1124 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
1125 """list repository named branches
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1126
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
1127 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
1128 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
1129 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
1130
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
1131 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
1132
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1133 Returns 0.
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1134 """
8991
7e0b31dfc66f branches: add --closed flag for consistency with heads
Matt Mackall <mpm@selenic.com>
parents: 8958
diff changeset
1135
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1136 fm = ui.formatter('branches', opts)
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1137 hexfunc = fm.hexfunc
16721
3e6d59ae4dc2 branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents: 16720
diff changeset
1138
20182
04036798ebed branches: avoid unnecessary changectx.branch() calls
Brodie Rao <brodie@sf.io>
parents: 20156
diff changeset
1139 allheads = set(repo.heads())
16721
3e6d59ae4dc2 branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents: 16720
diff changeset
1140 branches = []
20192
38fad5e76ee8 branches: simplify with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io>
parents: 20191
diff changeset
1141 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
1142 isactive = not isclosed and bool(set(heads) & allheads)
38fad5e76ee8 branches: simplify with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io>
parents: 20191
diff changeset
1143 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
1144 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
1145 reverse=True)
3e6d59ae4dc2 branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents: 16720
diff changeset
1146
20182
04036798ebed branches: avoid unnecessary changectx.branch() calls
Brodie Rao <brodie@sf.io>
parents: 20156
diff changeset
1147 for tag, ctx, isactive, isopen in branches:
22639
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1148 if active and not isactive:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1149 continue
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1150 if isactive:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1151 label = 'branches.active'
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1152 notice = ''
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1153 elif not isopen:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1154 if not closed:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1155 continue
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1156 label = 'branches.closed'
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1157 notice = _(' (closed)')
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1158 else:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1159 label = 'branches.inactive'
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1160 notice = _(' (inactive)')
22705
d4869b280cd6 branches: include active, closed and current flags in template output
Yuya Nishihara <yuya@tcha.org>
parents: 22704
diff changeset
1161 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
1162 if current:
22639
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1163 label = 'branches.current'
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1164
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1165 fm.startitem()
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1166 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
1167 rev = ctx.rev()
08a4e70ed183 branches: format rev as integer that is necessary for generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22701
diff changeset
1168 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
1169 fmt = ' ' * padsize + ' %d:%s'
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1170 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
1171 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
1172 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
1173 if not ui.quiet:
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1174 fm.plain(notice)
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1175 fm.plain('\n')
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1176 fm.end()
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1177
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1178 @command('bundle',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1179 [('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
1180 ('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
1181 _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1182 ('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
1183 _('BRANCH')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1184 ('', 'base', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1185 _('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
1186 _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1187 ('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
1188 ('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
1189 ] + remoteopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1190 _('[-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
1191 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
1192 """create a changegroup file
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1193
3511
aa8f086cb141 Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3510
diff changeset
1194 Generate a compressed changegroup file collecting changesets not
7807
bd8f44638847 help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents: 7765
diff changeset
1195 known to be in another repository.
3511
aa8f086cb141 Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3510
diff changeset
1196
10376
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
1197 If you omit the destination repository, then hg assumes the
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
1198 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
1199 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
1200 -a/--all (or --base null).
d403cf4eb32d help: describe bundle compression methods (issue1523)
Henrik Stuart <hg@hstuart.dk>
parents: 8902
diff changeset
1201
8958
8358cf63f612 commands: improve bundle compression methods description
Stefano Mioli <jstevie@gmail.com>
parents: 8955
diff changeset
1202 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
1203 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
1204 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
1205
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
1206 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
1207 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
1208 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
1209 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
1210
aa8f086cb141 Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3510
diff changeset
1211 Applying bundles preserves all changeset contents including
aa8f086cb141 Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3510
diff changeset
1212 permissions, copy/rename information, and revision history.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1213
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1214 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
1215 """
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
1216 revs = None
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
1217 if 'rev' in opts:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
1218 revs = scmutil.revrange(repo, opts['rev'])
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
1219
16427
d54d4de56aa7 commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents: 16389
diff changeset
1220 bundletype = opts.get('type', 'bzip2').lower()
23896
becfecaf9087 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com>
parents: 23895
diff changeset
1221 btypes = {'none': 'HG10UN',
becfecaf9087 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com>
parents: 23895
diff changeset
1222 'bzip2': 'HG10BZ',
becfecaf9087 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com>
parents: 23895
diff changeset
1223 'gzip': 'HG10GZ',
becfecaf9087 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com>
parents: 23895
diff changeset
1224 'bundle2': 'HG2Y'}
16427
d54d4de56aa7 commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents: 16389
diff changeset
1225 bundletype = btypes.get(bundletype)
d54d4de56aa7 commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents: 16389
diff changeset
1226 if bundletype not in changegroup.bundletypes:
d54d4de56aa7 commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents: 16389
diff changeset
1227 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
1228
6171
73b1de288801 Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents: 6163
diff changeset
1229 if opts.get('all'):
73b1de288801 Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents: 6163
diff changeset
1230 base = ['null']
73b1de288801 Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents: 6163
diff changeset
1231 else:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
1232 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
1233 # 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
1234 bundlecaps = None
3284
d89e98840b08 add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3278
diff changeset
1235 if base:
d89e98840b08 add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3278
diff changeset
1236 if dest:
8669
6f0f69da003e commands: typo in bundle abort message
Martin Geisler <mg@lazybytes.net>
parents: 8664
diff changeset
1237 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
1238 "a destination"))
14073
72c84f24b420 discovery: drop findoutgoing and simplify findcommonincoming's api
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14064
diff changeset
1239 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
1240 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
1241 cg = changegroup.getchangegroup(repo, 'bundle', heads=heads,
e2806b8613ca changegroup: rename bundle-related functions and classes
Sune Foldager <cryo@cyanite.org>
parents: 22383
diff changeset
1242 common=common, bundlecaps=bundlecaps)
15993
0b05e0bfdc1c scmutil: unify some 'no changes found' messages
Matt Mackall <mpm@selenic.com>
parents: 15991
diff changeset
1243 outgoing = None
3284
d89e98840b08 add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3278
diff changeset
1244 else:
10365
d757bc0c7865 interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents: 10364
diff changeset
1245 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
1246 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
1247 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
1248 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
1249 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
1250 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
1251 onlyheads=heads,
16736
025b3b763ba9 bundle: make bundles more portable (isue3441)
Sune Foldager <cryo@cyanite.org>
parents: 16637
diff changeset
1252 force=opts.get('force'),
025b3b763ba9 bundle: make bundles more portable (isue3441)
Sune Foldager <cryo@cyanite.org>
parents: 16637
diff changeset
1253 portable=True)
22390
e2806b8613ca changegroup: rename bundle-related functions and classes
Sune Foldager <cryo@cyanite.org>
parents: 22383
diff changeset
1254 cg = changegroup.getlocalchangegroup(repo, 'bundle', outgoing,
e2806b8613ca changegroup: rename bundle-related functions and classes
Sune Foldager <cryo@cyanite.org>
parents: 22383
diff changeset
1255 bundlecaps)
14073
72c84f24b420 discovery: drop findoutgoing and simplify findcommonincoming's api
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14064
diff changeset
1256 if not cg:
17248
6ffb35b2284c discovery: add extinct changesets to outgoing.excluded
Patrick Mezard <patrick@mezard.eu>
parents: 17218
diff changeset
1257 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
1258 return 1
10616
65b178f30eae bundle: fix bundle generation for empty changegroup
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10596
diff changeset
1259
23895
cda18ded2c48 changegroup.writebundle: provide ui
Eric Sumner <ericsumner@fb.com>
parents: 23891
diff changeset
1260 changegroup.writebundle(ui, cg, fname, bundletype)
1218
cde6818e082a Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents: 1215
diff changeset
1261
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1262 @command('cat',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1263 [('o', 'output', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1264 _('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
1265 ('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
1266 ('', '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
1267 ] + walkopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
1268 _('[OPTION]... FILE...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
1269 inferrepo=True)
1254
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
1270 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
1271 """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
1272
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
1273 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
1274 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
1275
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1276 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
1277 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
1278
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1279 :``%%``: literal "%" character
9892
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
1280 :``%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
1281 :``%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
1282 :``%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
1283 :``%H``: changeset hash (40 hexadecimal digits)
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1284 :``%R``: changeset revision number
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1285 :``%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
1286 :``%r``: zero-padded changeset revision number
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1287 :``%b``: basename of the exporting repository
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1288
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1289 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1290 """
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
1291 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
1292 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
1293
21041
a2cc3c08c3ac cat: support cat with explicit paths in subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 21040
diff changeset
1294 return cmdutil.cat(ui, repo, ctx, m, '', **opts)
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
1295
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1296 @command('^clone',
24364
135b23868f45 commands: replace "working copy" with "working directory" in help/messages
Yuya Nishihara <yuya@tcha.org>
parents: 24359
diff changeset
1297 [('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
1298 'directory (only a repository)')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1299 ('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
1300 ('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
1301 ('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
1302 ('', '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
1303 ('', '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
1304 ] + remoteopts,
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1305 _('[OPTION]... SOURCE [DEST]'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1306 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
1307 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
1308 """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
1309
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1310 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
1311
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1312 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
1313 basename of the source.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1314
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1315 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
1316 ``.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
1317
15177
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1318 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
1319 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
1320 ``.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
1321
15174
9f1a08c00931 clone: improve help on -r/-b and tags
Matt Mackall <mpm@selenic.com>
parents: 15147
diff changeset
1322 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
1323 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
1324 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
1325 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
1326 --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
1327 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
1328 containing the tag.
9714
2f1ab7f77ddc clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents: 9698
diff changeset
1329
18474
e031e10cdc06 help: document '@' bookmark in 'help bookmarks' and 'help clone'
Kevin Bullock <kbullock@ringworld.org>
parents: 18471
diff changeset
1330 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
1331 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
1332
15178
04e5449e25dc clone: add a note about -u/-U
Matt Mackall <mpm@selenic.com>
parents: 15177
diff changeset
1333 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
1334 -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
1335
15177
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1336 .. container:: verbose
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1337
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1338 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
1339 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
1340 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
1341 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
1342 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
1343 --pull option to avoid hardlinking.
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1344
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1345 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
1346 directory using full hardlinks with ::
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1347
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1348 $ cp -al REPO REPOCLONE
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1349
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1350 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
1351 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
1352 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
1353 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
1354 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
1355 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
1356
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1357 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
1358 revision from this list:
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1359
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1360 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
1361 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
1362 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
1363 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
1364 latest head of that branch)
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1365 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
1366 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
1367 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
1368 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
1369 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
1370 i) tip
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1371
15179
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1372 Examples:
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1373
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1374 - clone a remote repository to a new directory named hg/::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1375
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1376 hg clone http://selenic.com/hg
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1377
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1378 - create a lightweight local clone::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1379
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1380 hg clone project/ project-feature/
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1381
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1382 - 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
1383
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1384 hg clone ssh://user@server//home/projects/alpha/
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1385
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1386 - 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
1387 specified version::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1388
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1389 hg clone --uncompressed http://server/repo -u 1.5
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 - create a repository without changesets after a particular revision::
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 -r 04e544 experimental/ good/
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 - clone (and track) a particular named branch::
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 http://selenic.com/hg#stable
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1398
15175
282db9102c43 clone: move url crossref to bottom
Matt Mackall <mpm@selenic.com>
parents: 15174
diff changeset
1399 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
1400
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1401 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1402 """
9714
2f1ab7f77ddc clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents: 9698
diff changeset
1403 if opts.get('noupdate') and opts.get('updaterev'):
2f1ab7f77ddc clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents: 9698
diff changeset
1404 raise util.Abort(_("cannot specify both --noupdate and --updaterev"))
2f1ab7f77ddc clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents: 9698
diff changeset
1405
14553
d976542986d2 hg: add opts argument to clone for internal remoteui
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14551
diff changeset
1406 r = hg.clone(ui, opts, source, dest,
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1407 pull=opts.get('pull'),
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1408 stream=opts.get('uncompressed'),
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1409 rev=opts.get('rev'),
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1410 update=opts.get('updaterev') or not opts.get('noupdate'),
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1411 branch=opts.get('branch'))
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1412
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1413 return r is None
515
03f27b1381f9 Whitespace cleanups
mpm@selenic.com
parents: 513
diff changeset
1414
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1415 @command('^commit|ci',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1416 [('A', 'addremove', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1417 _('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
1418 ('', 'close-branch', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1419 _('mark a branch as closed, hiding it from the branch list')),
24365
f1eaf03dd608 commands: say "working directory" in full spelling
Yuya Nishihara <yuya@tcha.org>
parents: 24364
diff changeset
1420 ('', '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
1421 ('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
1422 ('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
1423 ('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
1424 ] + walkopts + commitopts + commitopts2 + subrepoopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
1425 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
1426 inferrepo=True)
813
80fd2958235a Adapt commit to use file matching code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 812
diff changeset
1427 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
1428 """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
1429
7983
7b813bdbd5d0 Change double spaces to single spaces in help texts.
Martin Geisler <mg@daimi.au.dk>
parents: 7982
diff changeset
1430 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
1431 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
1432 :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
1433
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
1434 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
1435 will be committed.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1436
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
1437 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
1438 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
1439
11877
8f40125a0ed8 commit: explicitly document the existence of "last-message.txt"
Greg Ward <greg-hg@gerg.ca>
parents: 11836
diff changeset
1440 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
1441 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
1442 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
1443 ``.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
1444
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1445 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
1446 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
1447 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
1448 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
1449 ``.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
1450 on how to restore it).
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1451
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1452 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
1453 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
1454 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
1455
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1456 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
1457 or changesets that have children.
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1458
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
1459 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
1460
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1461 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
1462 """
24278
0b94b68aace9 record: add interactive option to the commit command
Laurent Charignon <lcharignon@fb.com>
parents: 24275
diff changeset
1463 if opts.get('interactive'):
0b94b68aace9 record: add interactive option to the commit command
Laurent Charignon <lcharignon@fb.com>
parents: 24275
diff changeset
1464 opts.pop('interactive')
24309
fefcafda10b8 record: change interface of dorecord to accept new filters
Laurent Charignon <lcharignon@fb.com>
parents: 24306
diff changeset
1465 cmdutil.dorecord(ui, repo, commit, 'commit', False,
fefcafda10b8 record: change interface of dorecord to accept new filters
Laurent Charignon <lcharignon@fb.com>
parents: 24306
diff changeset
1466 cmdutil.recordfilter, *pats, **opts)
24278
0b94b68aace9 record: add interactive option to the commit command
Laurent Charignon <lcharignon@fb.com>
parents: 24275
diff changeset
1467 return
0b94b68aace9 record: add interactive option to the commit command
Laurent Charignon <lcharignon@fb.com>
parents: 24275
diff changeset
1468
15321
e174353e8cda subrepos: abort commit by default if a subrepo is dirty (BC)
Martin Geisler <mg@lazybytes.net>
parents: 15307
diff changeset
1469 if opts.get('subrepos'):
19232
b592fd33233a amend: complain more comprehensibly about subrepos
Matt Mackall <mpm@selenic.com>
parents: 19217
diff changeset
1470 if opts.get('amend'):
b592fd33233a amend: complain more comprehensibly about subrepos
Matt Mackall <mpm@selenic.com>
parents: 19217
diff changeset
1471 raise util.Abort(_('cannot amend with --subrepos'))
17504
593c5ca70a63 spelling: override
timeless@mozdev.org
parents: 17500
diff changeset
1472 # 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
1473 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
1474
19496
607191a45f8c checkunfinished: accommodate histedit quirk
Matt Mackall <mpm@selenic.com>
parents: 19493
diff changeset
1475 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
1476
19305
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1477 branch = repo[None].branch()
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1478 bheads = repo.branchheads(branch)
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1479
7655
cce37dab7ad6 branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents: 7643
diff changeset
1480 extra = {}
cce37dab7ad6 branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents: 7643
diff changeset
1481 if opts.get('close_branch'):
cce37dab7ad6 branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents: 7643
diff changeset
1482 extra['close'] = 1
6336
4b0c9c674707 warn about new heads on commit (issue842)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6321
diff changeset
1483
19305
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1484 if not bheads:
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1485 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
1486 elif opts.get('amend'):
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1487 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
1488 repo.parents()[0].p2().branch() != branch:
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1489 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
1490
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1491 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
1492 if ui.configbool('ui', 'commitsubrepos'):
19232
b592fd33233a amend: complain more comprehensibly about subrepos
Matt Mackall <mpm@selenic.com>
parents: 19217
diff changeset
1493 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
1494
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1495 old = repo['.']
22417
ca854cd4a26a commit: correctly check commit mutability during commit --amend
Augie Fackler <raf@durin42.com>
parents: 22405
diff changeset
1496 if not old.mutable():
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1497 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
1498 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
1499 raise util.Abort(_('cannot amend while merging'))
22952
8792ac090e3b obsolete: add allowunstable option
Durham Goode <durham@fb.com>
parents: 22926
diff changeset
1500 allowunstable = obsolete.isenabled(repo, obsolete.allowunstableopt)
8792ac090e3b obsolete: add allowunstable option
Durham Goode <durham@fb.com>
parents: 22926
diff changeset
1501 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
1502 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
1503
20700
b0153cb8b64e commit: create new amend changeset as secret correctly for "--secret" option
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20633
diff changeset
1504 # 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
1505 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
1506 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
1507 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
1508 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
1509 match,
b0153cb8b64e commit: create new amend changeset as secret correctly for "--secret" option
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20633
diff changeset
1510 extra=extra)
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1511
17264
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1512 current = repo._bookmarkcurrent
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1513 marks = old.bookmarks()
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1514 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
1515 if node == old.node():
13899
a7cd0eee396b commit: note when files are missing
Martin Geisler <mg@aragost.com>
parents: 13893
diff changeset
1516 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
1517 return 1
17264
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1518 elif marks:
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1519 ui.debug('moving bookmarks %r from %s to %s\n' %
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1520 (marks, old.hex(), hex(node)))
17922
7f5dab94e48c bookmarks: introduce a bmstore to manage bookmark persistence
Augie Fackler <raf@durin42.com>
parents: 17912
diff changeset
1521 newmarks = repo._bookmarks
17264
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1522 for bm in marks:
17922
7f5dab94e48c bookmarks: introduce a bmstore to manage bookmark persistence
Augie Fackler <raf@durin42.com>
parents: 17912
diff changeset
1523 newmarks[bm] = node
17264
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1524 if bm == current:
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1525 bookmarks.setcurrent(repo, bm)
17922
7f5dab94e48c bookmarks: introduce a bmstore to manage bookmark persistence
Augie Fackler <raf@durin42.com>
parents: 17912
diff changeset
1526 newmarks.write()
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1527 else:
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1528 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
1529 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
1530 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
1531 basebackup = baseui.backupconfig('phases', 'new-commit')
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1532 try:
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1533 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
1534 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
1535 # 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
1536 baseui.setconfig('phases', 'new-commit', 'secret', 'commit')
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1537
22248
75618a223e18 commit: change "editform" to distinguish merge commits from others
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22218
diff changeset
1538 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
1539 editor = cmdutil.getcommiteditor(editform=editform, **opts)
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1540 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
1541 match,
22010
41e969cb9468 commit: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22009
diff changeset
1542 editor=editor,
21414
37a302f0e297 commit: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21413
diff changeset
1543 extra=extra)
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1544 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
1545 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
1546 repo.baseui.restoreconfig(basebackup)
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1547
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1548
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1549 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
1550
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1551 if not node:
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1552 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
1553 if stat[3]:
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1554 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
1555 "'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
1556 else:
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1557 ui.status(_("nothing changed\n"))
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1558 return 1
11173
5b48d819d5f9 commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents: 11169
diff changeset
1559
18688
79107fad06aa commit: factor out status printing into a helper function
Kevin Bullock <kbullock@ringworld.org>
parents: 18687
diff changeset
1560 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
1561
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1562 @command('config|showconfig|debugconfig',
20572
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1563 [('u', 'untrusted', None, _('show untrusted configuration options')),
20782
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1564 ('e', 'edit', None, _('edit user config')),
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1565 ('l', 'local', None, _('edit repository config')),
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1566 ('g', 'global', None, _('edit global config'))],
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
1567 _('[-u] [NAME]...'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
1568 optionalrepo=True)
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1569 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
1570 """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
1571
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1572 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
1573
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1574 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
1575 of that config item.
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1576
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1577 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
1578 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
1579
20783
43054dc84abd config: mention edit options and config topic in help
Matt Mackall <mpm@selenic.com>
parents: 20782
diff changeset
1580 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
1581 --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
1582 repository-level config file.
43054dc84abd config: mention edit options and config topic in help
Matt Mackall <mpm@selenic.com>
parents: 20782
diff changeset
1583
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1584 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
1585 for each config item.
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1586
20783
43054dc84abd config: mention edit options and config topic in help
Matt Mackall <mpm@selenic.com>
parents: 20782
diff changeset
1587 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
1588
22316
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1589 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
1590
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1591 """
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1592
20782
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1593 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
1594 if opts.get('local') and opts.get('global'):
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1595 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
1596
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1597 if opts.get('local'):
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1598 if not repo:
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1599 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
1600 paths = [repo.join('hgrc')]
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1601 elif opts.get('global'):
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1602 paths = scmutil.systemrcpath()
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1603 else:
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1604 paths = scmutil.userrcpath()
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1605
20572
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1606 for f in paths:
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1607 if os.path.exists(f):
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1608 break
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1609 else:
22383
f58b41f6708b config: give more fine-tuned sample hgrcs to this command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 22381
diff changeset
1610 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
1611 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
1612 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
1613 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
1614 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
1615 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
1616
20572
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1617 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
1618 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
1619 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
1620 fp.close()
02d0d3aa42e3 config: add example config file when -e called with no config
Matt Mackall <mpm@selenic.com>
parents: 20572
diff changeset
1621
20572
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1622 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
1623 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
1624 onerr=util.Abort, errprefix=_("edit failed"))
20572
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1625 return
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1626
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1627 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
1628 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
1629 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
1630 if values:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1631 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
1632 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
1633 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
1634 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
1635 matched = False
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1636 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
1637 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
1638 sectname = section + '.' + name
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1639 if values:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1640 for v in values:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1641 if v == section:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1642 ui.debug('%s: ' %
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1643 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
1644 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
1645 matched = True
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1646 elif v == sectname:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1647 ui.debug('%s: ' %
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1648 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
1649 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
1650 matched = True
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1651 else:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1652 ui.debug('%s: ' %
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1653 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
1654 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
1655 matched = True
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1656 if matched:
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1657 return 0
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1658 return 1
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1659
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1660 @command('copy|cp',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1661 [('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
1662 ('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
1663 ] + walkopts + dryrunopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1664 _('[OPTION]... [SOURCE]... DEST'))
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
1665 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
1666 """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
1667
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
1668 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
1669 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
1670 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
1671
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1672 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
1673 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
1674 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
1675
7807
bd8f44638847 help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents: 7765
diff changeset
1676 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
1677 before that, see :hg:`revert`.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1678
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1679 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
1680 """
4914
9a2a73ea6135 repo locks: use True/False
Matt Mackall <mpm@selenic.com>
parents: 4906
diff changeset
1681 wlock = repo.wlock(False)
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
1682 try:
5610
2493a478f395 copy: handle rename internally
Matt Mackall <mpm@selenic.com>
parents: 5589
diff changeset
1683 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
1684 finally:
8109
496ae1ea4698 switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents: 8088
diff changeset
1685 wlock.release()
363
ae96b7e1318d Add hg copy
mpm@selenic.com
parents: 355
diff changeset
1686
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
1687 @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
1688 def debugancestor(ui, repo, *args):
1262
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1689 """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
1690 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
1691 index, rev1, rev2 = args
13970
d13913355390 move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents: 13965
diff changeset
1692 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
1693 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
1694 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
1695 if not repo:
12067
a4fbbe0fbc38 Lowercase error messages
Martin Geisler <mg@lazybytes.net>
parents: 11881
diff changeset
1696 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
1697 "(.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
1698 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
1699 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
1700 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
1701 else:
81afdd016867 debugancestor: make the index argument optional, defaulting to 00changelog.i
Bryan O'Sullivan <bos@serpentine.com>
parents: 6171
diff changeset
1702 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
1703 a = r.ancestor(lookup(rev1), lookup(rev2))
1262
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1704 ui.write("%d:%s\n" % (r.rev(a), hex(a)))
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1705
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1706 @command('debugbuilddag',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1707 [('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
1708 ('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
1709 ('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
1710 _('[OPTION]... [TEXT]'))
14283
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1711 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
1712 mergeable_file=False,
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1713 overwritten_file=False,
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1714 new_file=False):
14283
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1715 """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
1716
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1717 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
1718 command line.
11337
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1719
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1720 Elements:
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1721
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1722 - "+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
1723 - "." 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
1724 - "$" 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
1725 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
1726 - "<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
1727 - "*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
1728 - "*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
1729 - "/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
1730 - ":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
1731 - "@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
1732 - "#...\\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
1733
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1734 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
1735
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1736 A backref is either
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1737
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1738 - 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
1739 node, or
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1740 - 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
1741 - 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
1742
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1743 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
1744 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
1745 """
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1746
14283
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1747 if text is None:
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1748 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
1749 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
1750
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1751 cl = repo.changelog
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1752 if len(cl) > 0:
11342
aecabad8dd7a commands: get rid of generic exception in debugbuilddag
Martin Geisler <mg@aragost.com>
parents: 11338
diff changeset
1753 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
1754
14279
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1755 # determine number of revs in DAG
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1756 total = 0
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1757 for type, data in dagparser.parsedag(text):
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1758 if type == 'n':
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1759 total += 1
11337
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1760
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1761 if mergeable_file:
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1762 linesperrev = 2
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1763 # make a file with k lines per rev
14279
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1764 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
1765 initialmergedlines.append("")
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1766
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1767 tags = []
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1768
15875
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1769 lock = tr = None
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1770 try:
15875
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1771 lock = repo.lock()
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1772 tr = repo.transaction("builddag")
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1773
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1774 at = -1
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1775 atbranch = 'default'
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1776 nodeids = []
16219
28c5648771d1 debugbuilddag: fix starting a dag on a non-default branch
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 16191
diff changeset
1777 id = 0
28c5648771d1 debugbuilddag: fix starting a dag on a non-default branch
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 16191
diff changeset
1778 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
1779 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
1780 if type == 'n':
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
1781 ui.note(('node %s\n' % str(data)))
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1782 id, ps = data
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1783
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1784 files = []
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1785 fctxs = {}
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1786
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1787 p2 = None
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1788 if mergeable_file:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1789 fn = "mf"
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1790 p1 = repo[ps[0]]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1791 if len(ps) > 1:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1792 p2 = repo[ps[1]]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1793 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
1794 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
1795 p2)]
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1796 m3 = simplemerge.Merge3Text(base, local, other)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1797 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
1798 ml.append("")
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1799 elif at > 0:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1800 ml = p1[fn].data().split("\n")
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1801 else:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1802 ml = initialmergedlines
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1803 ml[id * linesperrev] += " r%i" % id
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1804 mergedtext = "\n".join(ml)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1805 files.append(fn)
21689
503bb3af70fe memfilectx: call super.__init__ instead of duplicating code
Sean Farley <sean.michael.farley@gmail.com>
parents: 21585
diff changeset
1806 fctxs[fn] = context.memfilectx(repo, fn, mergedtext)
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1807
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1808 if overwritten_file:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1809 fn = "of"
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1810 files.append(fn)
21689
503bb3af70fe memfilectx: call super.__init__ instead of duplicating code
Sean Farley <sean.michael.farley@gmail.com>
parents: 21585
diff changeset
1811 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
1812
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1813 if new_file:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1814 fn = "nf%i" % id
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1815 files.append(fn)
21689
503bb3af70fe memfilectx: call super.__init__ instead of duplicating code
Sean Farley <sean.michael.farley@gmail.com>
parents: 21585
diff changeset
1816 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
1817 if len(ps) > 1:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1818 if not p2:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1819 p2 = repo[ps[1]]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1820 for fn in p2:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1821 if fn.startswith("nf"):
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1822 files.append(fn)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1823 fctxs[fn] = p2[fn]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1824
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1825 def fctxfn(repo, cx, path):
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1826 return fctxs.get(path)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1827
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1828 if len(ps) == 0 or ps[0] < 0:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1829 pars = [None, None]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1830 elif len(ps) == 1:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1831 pars = [nodeids[ps[0]], None]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1832 else:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1833 pars = [nodeids[p] for p in ps]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1834 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
1835 date=(id, 0),
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1836 user="debugbuilddag",
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1837 extra={'branch': atbranch})
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1838 nodeid = repo.commitctx(cx)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1839 nodeids.append(nodeid)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1840 at = id
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1841 elif type == 'l':
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1842 id, name = data
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
1843 ui.note(('tag %s\n' % name))
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1844 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
1845 elif type == 'a':
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
1846 ui.note(('branch %s\n' % data))
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1847 atbranch = data
14279
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1848 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
1849 tr.close()
15875
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1850
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1851 if tags:
23877
7cc77030c557 localrepo: remove all external users of localrepo.opener
Angel Ezquerra <angel.ezquerra@gmail.com>
parents: 23840
diff changeset
1852 repo.vfs.write("localtags", "".join(tags))
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1853 finally:
14279
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1854 ui.progress(_('building'), None)
15875
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1855 release(tr, lock)
11337
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1856
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1857 @command('debugbundle',
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1858 [('a', 'all', None, _('show all details'))],
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1859 _('FILE'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1860 norepo=True)
13724
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1861 def debugbundle(ui, bundlepath, all=None, **opts):
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1862 """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
1863 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
1864 try:
21064
4d9d490d7bbe bundle2: add a ui argument to readbundle
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21063
diff changeset
1865 gen = exchange.readbundle(ui, f, bundlepath)
23888
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1866 if isinstance(gen, bundle2.unbundle20):
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1867 return _debugbundle2(ui, gen, all=all, **opts)
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1868 if all:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
1869 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
1870
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1871 def showchunks(named):
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1872 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
1873 chain = None
14494
1ffeeb91c55d check-code: flag 0/1 used as constant Boolean expression
Martin Geisler <mg@lazybytes.net>
parents: 14485
diff changeset
1874 while True:
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1875 chunkdata = gen.deltachunk(chain)
13724
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1876 if not chunkdata:
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1877 break
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1878 node = chunkdata['node']
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1879 p1 = chunkdata['p1']
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1880 p2 = chunkdata['p2']
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1881 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
1882 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
1883 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
1884 ui.write("%s %s %s %s %s %s\n" %
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1885 (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
1886 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
1887 chain = node
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1888
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1889 chunkdata = gen.changelogheader()
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1890 showchunks("changelog")
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1891 chunkdata = gen.manifestheader()
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1892 showchunks("manifest")
14494
1ffeeb91c55d check-code: flag 0/1 used as constant Boolean expression
Martin Geisler <mg@lazybytes.net>
parents: 14485
diff changeset
1893 while True:
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1894 chunkdata = gen.filelogheader()
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1895 if not chunkdata:
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1896 break
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1897 fname = chunkdata['filename']
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1898 showchunks(fname)
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1899 else:
23888
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1900 if isinstance(gen, bundle2.unbundle20):
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1901 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
1902 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
1903 chain = None
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.deltachunk(chain)
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1906 if not chunkdata:
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1907 break
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1908 node = chunkdata['node']
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1909 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
1910 chain = node
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
1911 finally:
13724
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1912 f.close()
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1913
23888
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1914 def _debugbundle2(ui, gen, **opts):
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1915 """lists the contents of a bundle2"""
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1916 if not isinstance(gen, bundle2.unbundle20):
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1917 raise util.Abort(_('not a bundle2 file'))
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1918 ui.write(('Stream params: %s\n' % repr(gen.params)))
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1919 for part in gen.iterparts():
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1920 ui.write('%s -- %r\n' % (part.type, repr(part.params)))
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1921 if part.type == 'b2x:changegroup':
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1922 version = part.params.get('version', '01')
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1923 cg = changegroup.packermap[version][1](part, 'UN')
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1924 chunkdata = cg.changelogheader()
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1925 chain = None
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1926 while True:
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1927 chunkdata = cg.deltachunk(chain)
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1928 if not chunkdata:
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1929 break
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1930 node = chunkdata['node']
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1931 ui.write(" %s\n" % hex(node))
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1932 chain = node
6d8bebf4d6d4 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com>
parents: 23885
diff changeset
1933
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1934 @command('debugcheckstate', [], '')
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
1935 def debugcheckstate(ui, repo):
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
1936 """validate the correctness of the current dirstate"""
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1937 parent1, parent2 = repo.dirstate.parents()
6747
f6c00b17387c use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents: 6746
diff changeset
1938 m1 = repo[parent1].manifest()
f6c00b17387c use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents: 6746
diff changeset
1939 m2 = repo[parent2].manifest()
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1940 errors = 0
4906
30847b8af7ca dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents: 4904
diff changeset
1941 for f in repo.dirstate:
30847b8af7ca dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents: 4904
diff changeset
1942 state = repo.dirstate[f]
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1943 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
1944 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
1945 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1946 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
1947 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
1948 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1949 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
1950 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
1951 (f, state))
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1952 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1953 for f in m1:
4906
30847b8af7ca dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents: 4904
diff changeset
1954 state = repo.dirstate[f]
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1955 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
1956 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
1957 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1958 if errors:
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
1959 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
1960 raise util.Abort(error)
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1961
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1962 @command('debugcommands', [], _('[COMMAND]'), norepo=True)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1963 def debugcommands(ui, cmd='', *args):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1964 """list all available commands and options"""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1965 for cmd, vals in sorted(table.iteritems()):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1966 cmd = cmd.split('|')[0].strip('^')
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1967 opts = ', '.join([i[1] for i in vals[1]])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1968 ui.write('%s: %s\n' % (cmd, opts))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1969
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1970 @command('debugcomplete',
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1971 [('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
1972 _('[-o] CMD'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1973 norepo=True)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1974 def debugcomplete(ui, cmd='', **opts):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1975 """returns the completion list associated with the given command"""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1976
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1977 if opts.get('options'):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1978 options = []
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1979 otables = [globalopts]
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1980 if cmd:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1981 aliases, entry = cmdutil.findcmd(cmd, table, False)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1982 otables.append(entry[1])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1983 for t in otables:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1984 for o in t:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1985 if "(DEPRECATED)" in o[3]:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1986 continue
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1987 if o[0]:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1988 options.append('-%s' % o[0])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1989 options.append('--%s' % o[1])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1990 ui.write("%s\n" % "\n".join(options))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1991 return
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1992
24222
02d7b5cd373b dispatch: offer suggestions of similar-named commands
Augie Fackler <augie@google.com>
parents: 24191
diff changeset
1993 cmdlist, unused_allcmds = cmdutil.findpossible(cmd, table)
11276
f28b58e35768 revset: add a debugrevspec command
Matt Mackall <mpm@selenic.com>
parents: 11273
diff changeset
1994 if ui.verbose:
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1995 cmdlist = [' '.join(c[0]) for c in cmdlist.values()]
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1996 ui.write("%s\n" % "\n".join(sorted(cmdlist)))
8812
859f841937d0 subrepo: introduce basic state parsing
Matt Mackall <mpm@selenic.com>
parents: 8810
diff changeset
1997
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1998 @command('debugdag',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1999 [('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
2000 ('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
2001 ('', 'dots', None, _('use dots for runs')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2002 ('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
2003 _('[OPTION]... [FILE [REV]...]'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2004 optionalrepo=True)
11336
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2005 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
2006 """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
2007
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2008 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
2009 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
2010
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2011 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
2012 """
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2013 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
2014 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
2015 if file_:
13970
d13913355390 move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents: 13965
diff changeset
2016 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
2017 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
2018 def events():
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2019 for r in rlog:
22310
aabf367306d5 debugdag: stop wrongly sorting parents
Henrik Stuart <hg@hstuart.dk>
parents: 22305
diff changeset
2020 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
2021 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
2022 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
2023 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
2024 elif repo:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2025 cl = repo.changelog
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2026 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
2027 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
2028 if tags:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2029 labels = {}
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2030 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
2031 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
2032 def events():
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2033 b = "default"
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2034 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
2035 if branches:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2036 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
2037 if newb != b:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2038 yield 'a', newb
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2039 b = newb
22310
aabf367306d5 debugdag: stop wrongly sorting parents
Henrik Stuart <hg@hstuart.dk>
parents: 22305
diff changeset
2040 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
2041 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
2042 if tags:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2043 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
2044 if ls:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2045 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
2046 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
2047 else:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2048 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
2049
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2050 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
2051 addspaces=spaces,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2052 wraplabels=True,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2053 wrapannotations=True,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2054 wrapnonlinear=dots,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2055 usedots=dots,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2056 maxlinewidth=70):
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2057 ui.write(line)
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2058 ui.write("\n")
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
2059
14323
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2060 @command('debugdata',
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2061 [('c', 'changelog', False, _('open changelog')),
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2062 ('m', 'manifest', False, _('open manifest'))],
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2063 _('-c|-m|FILE REV'))
19872
681f7b9213a4 check-code: check for spaces around = for named parameters
Mads Kiilerich <madski@unity3d.com>
parents: 19801
diff changeset
2064 def debugdata(ui, repo, file_, rev=None, **opts):
4258
b11a2fb59cf5 revlog: simplify revlog version handling
Matt Mackall <mpm@selenic.com>
parents: 4257
diff changeset
2065 """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
2066 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
2067 file_, rev = None, file_
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2068 elif rev is None:
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2069 raise error.CommandError('debugdata', _('invalid arguments'))
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2070 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
2071 try:
1cc7c0cbc30b Fix traceback during invalid rev identifier for debugdata
Anupam Kapoor<anupam.kapoor@gmail.com>
parents: 1312
diff changeset
2072 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
2073 except KeyError:
3072
bc3fe3b5b785 Never apply string formatting to generated errors with util.Abort.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3071
diff changeset
2074 raise util.Abort(_('invalid revision identifier %s') % rev)
1039
4296754ba7b4 Add debugdata for dumping revlog revision data
mpm@selenic.com
parents: 1037
diff changeset
2075
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2076 @command('debugdate',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2077 [('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
2078 _('[-e] DATE [RANGE]'),
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2079 norepo=True, optionalrepo=True)
3812
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2080 def debugdate(ui, date, range=None, **opts):
3805
299d6cce6c0b add debugdate command
Matt Mackall <mpm@selenic.com>
parents: 3804
diff changeset
2081 """parse and display a date"""
3812
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2082 if opts["extended"]:
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2083 d = util.parsedate(date, util.extendeddateformats)
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2084 else:
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2085 d = util.parsedate(date)
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2086 ui.write(("internal: %s %s\n") % d)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2087 ui.write(("standard: %s\n") % util.datestr(d))
3812
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2088 if range:
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2089 m = util.matchdate(range)
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2090 ui.write(("match: %s\n") % m(d[0]))
3805
299d6cce6c0b add debugdate command
Matt Mackall <mpm@selenic.com>
parents: 3804
diff changeset
2091
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2092 @command('debugdiscovery',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2093 [('', 'old', None, _('use old-style discovery')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2094 ('', 'nonheads', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2095 _('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
2096 ] + remoteopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2097 _('[-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
2098 def debugdiscovery(ui, repo, remoteurl="default", **opts):
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2099 """runs the changeset discovery protocol in isolation"""
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2100 remoteurl, branches = hg.parseurl(ui.expandpath(remoteurl),
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2101 opts.get('branch'))
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
2102 remote = hg.peer(repo, opts, remoteurl)
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2103 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
2104
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2105 # make sure tests are repeatable
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2106 random.seed(12323)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2107
17191
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
2108 def doit(localheads, remoteheads, remote=remote):
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2109 if opts.get('old'):
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2110 if localheads:
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2111 raise util.Abort('cannot use localheads with old style '
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2112 'discovery')
17192
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17191
diff changeset
2113 if not util.safehasattr(remote, 'branches'):
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17191
diff changeset
2114 # enable in-client legacy support
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17191
diff changeset
2115 remote = localrepo.locallegacypeer(remote.local())
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2116 common, _in, hds = treediscovery.findcommonincoming(repo, remote,
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2117 force=True)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2118 common = set(common)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2119 if not opts.get('nonheads'):
18254
2dfe519d435d debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents: 18210
diff changeset
2120 ui.write(("unpruned common: %s\n") %
2dfe519d435d debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents: 18210
diff changeset
2121 " ".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
2122 dag = dagutil.revlogdag(repo.changelog)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2123 all = dag.ancestorset(dag.internalizeall(common))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2124 common = dag.externalizeall(dag.headsetofconnecteds(all))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2125 else:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2126 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
2127 common = set(common)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2128 rheads = set(hds)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2129 lheads = set(repo.heads())
18254
2dfe519d435d debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents: 18210
diff changeset
2130 ui.write(("common heads: %s\n") %
2dfe519d435d debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents: 18210
diff changeset
2131 " ".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
2132 if lheads <= common:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2133 ui.write(("local is subset\n"))
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2134 elif rheads <= common:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2135 ui.write(("remote is subset\n"))
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2136
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2137 serverlogs = opts.get('serverlog')
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2138 if serverlogs:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2139 for filename in serverlogs:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2140 logfile = open(filename, 'r')
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2141 try:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2142 line = logfile.readline()
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2143 while line:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2144 parts = line.strip().split(';')
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2145 op = parts[1]
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2146 if op == 'cg':
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2147 pass
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2148 elif op == 'cgss':
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2149 doit(parts[2].split(' '), parts[3].split(' '))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2150 elif op == 'unb':
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2151 doit(parts[3].split(' '), parts[2].split(' '))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2152 line = logfile.readline()
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2153 finally:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2154 logfile.close()
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2155
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2156 else:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2157 remoterevs, _checkout = hg.addbranchrevs(repo, remote, branches,
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2158 opts.get('remote_head'))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2159 localrevs = opts.get('local_head')
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2160 doit(localrevs, remoterevs)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2161
17370
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2162 @command('debugfileset',
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2163 [('r', 'rev', '', _('apply the filespec on this revision'), _('REV'))],
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2164 _('[-r REV] FILESPEC'))
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2165 def debugfileset(ui, repo, expr, **opts):
14511
30506b894359 filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents: 14509
diff changeset
2166 '''parse and apply a fileset specification'''
17370
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2167 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
2168 if ui.verbose:
30506b894359 filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents: 14509
diff changeset
2169 tree = fileset.parse(expr)[0]
30506b894359 filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents: 14509
diff changeset
2170 ui.note(tree, "\n")
14673
b0566467c492 fileset: drop matchfn
Matt Mackall <mpm@selenic.com>
parents: 14671
diff changeset
2171
20404
466707047c8d commands: use ctx.getfileset instead of fileset.getfileset
Augie Fackler <raf@durin42.com>
parents: 20389
diff changeset
2172 for f in ctx.getfileset(expr):
14551
68d814a3cefd fileset: basic pattern and boolean support
Matt Mackall <mpm@selenic.com>
parents: 14548
diff changeset
2173 ui.write("%s\n" % f)
14511
30506b894359 filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents: 14509
diff changeset
2174
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2175 @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
2176 def debugfsinfo(ui, path="."):
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2177 """show information detected about current filesystem"""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2178 util.writefile('.debugfsinfo', '')
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2179 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
2180 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
2181 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
2182 ui.write(('case-sensitive: %s\n') % (util.checkcase('.debugfsinfo')
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2183 and 'yes' or 'no'))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2184 os.unlink('.debugfsinfo')
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2185
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2186 @command('debuggetbundle',
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2187 [('H', 'head', [], _('id of head node'), _('ID')),
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2188 ('C', 'common', [], _('id of common node'), _('ID')),
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2189 ('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
2190 _('REPO FILE [-H|-C ID]...'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2191 norepo=True)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2192 def debuggetbundle(ui, repopath, bundlepath, head=None, common=None, **opts):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2193 """retrieves a bundle from a repo
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2194
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2195 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
2196 given file.
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2197 """
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
2198 repo = hg.peer(ui, opts, repopath)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2199 if not repo.capable('getbundle'):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2200 raise util.Abort("getbundle() not supported by target repository")
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2201 args = {}
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2202 if common:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2203 args['common'] = [bin(s) for s in common]
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2204 if head:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2205 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
2206 # 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
2207 args['bundlecaps'] = None
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2208 bundle = repo.getbundle('debug', **args)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2209
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2210 bundletype = opts.get('type', 'bzip2').lower()
23896
becfecaf9087 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com>
parents: 23895
diff changeset
2211 btypes = {'none': 'HG10UN',
becfecaf9087 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com>
parents: 23895
diff changeset
2212 'bzip2': 'HG10BZ',
becfecaf9087 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com>
parents: 23895
diff changeset
2213 'gzip': 'HG10GZ',
becfecaf9087 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com>
parents: 23895
diff changeset
2214 'bundle2': 'HG2Y'}
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2215 bundletype = btypes.get(bundletype)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2216 if bundletype not in changegroup.bundletypes:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2217 raise util.Abort(_('unknown bundle type specified with --type'))
23895
cda18ded2c48 changegroup.writebundle: provide ui
Eric Sumner <ericsumner@fb.com>
parents: 23891
diff changeset
2218 changegroup.writebundle(ui, bundle, bundlepath, bundletype)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2219
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2220 @command('debugignore', [], '')
13396
3e66eec9a814 add debugignore which yields the combined ignore patten of the .hgignore files
jfh <jason@jasonfharris.com>
parents: 13388
diff changeset
2221 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
2222 """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
2223 ignore = repo.dirstate._ignore
14949
a4435770cf57 debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents: 14943
diff changeset
2224 includepat = getattr(ignore, 'includepat', None)
a4435770cf57 debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents: 14943
diff changeset
2225 if includepat is not None:
a4435770cf57 debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents: 14943
diff changeset
2226 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
2227 else:
5e57c199848d debugignore: catch the case when ignore.includepat doesn't exist
jfh <jason@jasonfharris.com>
parents: 13400
diff changeset
2228 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
2229
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2230 @command('debugindex',
14323
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2231 [('c', 'changelog', False, _('open changelog')),
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2232 ('m', 'manifest', False, _('open manifest')),
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2233 ('f', 'format', 0, _('revlog format'), _('FORMAT'))],
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2234 _('[-f FORMAT] -c|-m|FILE'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2235 optionalrepo=True)
19872
681f7b9213a4 check-code: check for spaces around = for named parameters
Mads Kiilerich <madski@unity3d.com>
parents: 19801
diff changeset
2236 def debugindex(ui, repo, file_=None, **opts):
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
2237 """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
2238 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
2239 format = opts.get('format', 0)
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2240 if format not in (0, 1):
13470
64ce09e93aff commands: mark strings for translation
Martin Geisler <mg@aragost.com>
parents: 13454
diff changeset
2241 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
2242
14254
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2243 generaldelta = r.version & revlog.REVLOGGENERALDELTA
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2244 if generaldelta:
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2245 basehdr = ' delta'
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2246 else:
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2247 basehdr = ' base'
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2248
23547
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2249 if ui.debugflag:
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2250 shortfn = hex
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2251 else:
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2252 shortfn = short
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2253
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2254 # 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
2255 idlen = 12
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2256 for i in r:
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2257 idlen = len(shortfn(r.node(i)))
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2258 break
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2259
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2260 if format == 0:
14254
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2261 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
2262 " %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
2263 elif format == 1:
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2264 ui.write(" rev flag offset length"
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2265 " size " + basehdr + " link p1 p2"
23547
21446f4d5c62 debugindex: respect --debug flag to show full nodeids
Kyle Lippincott <spectral@google.com>
parents: 23538
diff changeset
2266 " %s\n" % "nodeid".rjust(idlen))
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2267
6750
fb42030d79d6 add __len__ and __iter__ methods to repo and revlog
Matt Mackall <mpm@selenic.com>
parents: 6749
diff changeset
2268 for i in r:
2072
74d3f5336b66 Implement revlogng.
mason@suse.com
parents: 2042
diff changeset
2269 node = r.node(i)
14254
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2270 if generaldelta:
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2271 base = r.deltaparent(i)
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2272 else:
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2273 base = r.chainbase(i)
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2274 if format == 0:
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2275 try:
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2276 pp = r.parents(node)
16689
f366d4c2ff34 cleanup: replace naked excepts with except Exception: ...
Brodie Rao <brodie@sf.io>
parents: 16683
diff changeset
2277 except Exception:
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2278 pp = [nullid, nullid]
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2279 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
2280 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
2281 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
2282 elif format == 1:
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2283 pr = r.parentrevs(i)
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2284 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
2285 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
2286 base, r.linkrev(i), pr[0], pr[1], shortfn(node)))
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
2287
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2288 @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
2289 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
2290 """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
2291 r = None
8a0e5b0c0ba9 debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents: 12131
diff changeset
2292 if repo:
8a0e5b0c0ba9 debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents: 12131
diff changeset
2293 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
2294 if len(filelog):
8a0e5b0c0ba9 debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents: 12131
diff changeset
2295 r = filelog
8a0e5b0c0ba9 debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents: 12131
diff changeset
2296 if not r:
13970
d13913355390 move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents: 13965
diff changeset
2297 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
2298 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
2299 for i in r:
2287
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
2300 node = r.node(i)
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
2301 pp = r.parents(node)
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
2302 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
2303 if pp[1] != nullid:
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
2304 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
2305 ui.write("}\n")
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
2306
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2307 @command('debuginstall', [], '', norepo=True)
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2308 def debuginstall(ui):
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
2309 '''test Mercurial installation
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
2310
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
2311 Returns 0 on success.
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
2312 '''
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2313
3846
18855084b922 Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents: 3844
diff changeset
2314 def writetemp(contents):
4849
035489f60842 Use a prefix for debuginstall tempfiles.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4818
diff changeset
2315 (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
2316 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
2317 f.write(contents)
18855084b922 Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents: 3844
diff changeset
2318 f.close()
18855084b922 Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents: 3844
diff changeset
2319 return name
18855084b922 Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents: 3844
diff changeset
2320
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2321 problems = 0
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2322
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2323 # encoding
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2324 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
2325 try:
7948
de377b1a9a84 move encoding bits from util to encoding
Matt Mackall <mpm@selenic.com>
parents: 7942
diff changeset
2326 encoding.fromlocal("test")
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2327 except util.Abort, inst:
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2328 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
2329 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
2330 problems += 1
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2331
20740
535283a7f5dd debuginstall: add Python information to debuginstall output (issue4128)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents: 20702
diff changeset
2332 # Python
20741
f1dfef0a9352 debuginstall: change showing to checking for consistency and future checking
Matt Mackall <mpm@selenic.com>
parents: 20740
diff changeset
2333 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
2334 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
2335 % ("%s.%s.%s" % sys.version_info[:3]))
17392
bdd248666dbc debuginstall: show directory for Python lib
Adrian Buehlmann <adrian@cadifra.com>
parents: 17386
diff changeset
2336 ui.status(_("checking Python lib (%s)...\n")
bdd248666dbc debuginstall: show directory for Python lib
Adrian Buehlmann <adrian@cadifra.com>
parents: 17386
diff changeset
2337 % os.path.dirname(os.__file__))
bdd248666dbc debuginstall: show directory for Python lib
Adrian Buehlmann <adrian@cadifra.com>
parents: 17386
diff changeset
2338
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2339 # compiled modules
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2340 ui.status(_("checking installed modules (%s)...\n")
12004
1fe4702fe2df debuginstall: report installpath
Matt Mackall <mpm@selenic.com>
parents: 11969
diff changeset
2341 % os.path.dirname(__file__))
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2342 try:
12004
1fe4702fe2df debuginstall: report installpath
Matt Mackall <mpm@selenic.com>
parents: 11969
diff changeset
2343 import bdiff, mpatch, base85, osutil
15223
fc035e5370ca pyflakes: clean up some import noise
Matt Mackall <mpm@selenic.com>
parents: 15221
diff changeset
2344 dir(bdiff), dir(mpatch), dir(base85), dir(osutil) # quiet pyflakes
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2345 except Exception, inst:
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2346 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
2347 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
2348 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
2349 problems += 1
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2350
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2351 # templates
15200
797bf1dc1ff8 debuginstall: report the template path
Matt Mackall <mpm@selenic.com>
parents: 15198
diff changeset
2352 import templater
22634
e48a5d3996c2 templater: introduce templatepaths for getting paths searched for templates
Mads Kiilerich <madski@unity3d.com>
parents: 22626
diff changeset
2353 p = templater.templatepaths()
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2354 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
2355 if p:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2356 m = templater.templatepath("map-cmdline.default")
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2357 if m:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2358 # template found, check if it is working
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2359 try:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2360 templater.templater(m)
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2361 except Exception, inst:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2362 ui.write(" %s\n" % inst)
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2363 p = None
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2364 else:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2365 ui.write(_(" template 'default' not found\n"))
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2366 p = None
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2367 else:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2368 ui.write(_(" no template directories found\n"))
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2369 if not p:
3848
8cbf060f637e Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents: 3846
diff changeset
2370 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
2371 problems += 1
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2372
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2373 # editor
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2374 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
2375 editor = ui.geteditor()
21957
2122b82b6987 debuginstall: handle quoted path for editor (issue4316)
Alexandre Garnier <zigarn@gmail.com>
parents: 21952
diff changeset
2376 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
2377 if not cmdpath:
3855
b9cdd6f2aa43 debuginstall: fix a copy/paste error
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3848
diff changeset
2378 if editor == 'vi':
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2379 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
2380 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
2381 " file)\n"))
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2382 else:
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2383 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
2384 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
2385 " file)\n"))
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2386 problems += 1
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2387
3848
8cbf060f637e Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents: 3846
diff changeset
2388 # check username
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2389 ui.status(_("checking username...\n"))
9734
36c388a1aa51 commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents: 9725
diff changeset
2390 try:
12063
516b000fbb7e cleanup: remove unused variables
Brodie Rao <brodie@bitheap.org>
parents: 12033
diff changeset
2391 ui.username()
9734
36c388a1aa51 commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents: 9725
diff changeset
2392 except util.Abort, e:
36c388a1aa51 commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents: 9725
diff changeset
2393 ui.write(" %s\n" % e)
12083
ebfc46929f3e help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents: 12067
diff changeset
2394 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
2395 problems += 1
3848
8cbf060f637e Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents: 3846
diff changeset
2396
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2397 if not problems:
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2398 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
2399 else:
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2400 ui.write(_("%s problems detected,"
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2401 " please check your install!\n") % problems)
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2402
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2403 return problems
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2404
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2405 @command('debugknown', [], _('REPO ID...'), norepo=True)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2406 def debugknown(ui, repopath, *ids, **opts):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2407 """test whether node ids are known to a repo
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2408
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2409 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
2410 and 1s indicating unknown/known.
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2411 """
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
2412 repo = hg.peer(ui, opts, repopath)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2413 if not repo.capable('known'):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2414 raise util.Abort("known() not supported by target repository")
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2415 flags = repo.known([bin(s) for s in ids])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2416 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
2417
18790
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2418 @command('debuglabelcomplete', [], _('LABEL...'))
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2419 def debuglabelcomplete(ui, repo, *args):
23762
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2420 '''backwards compatibility with old bash completion scripts (DEPRECATED)'''
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2421 debugnamecomplete(ui, repo, *args)
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2422
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2423 @command('debugnamecomplete', [], _('NAME...'))
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2424 def debugnamecomplete(ui, repo, *args):
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2425 '''complete "names" - tags, open branch names, bookmark names'''
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2426
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2427 names = set()
23763
7ad155e13f0f debugnamecomplete: use new name api
Sean Farley <sean.michael.farley@gmail.com>
parents: 23762
diff changeset
2428 # 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
2429 # specially (after this for loop)
7ad155e13f0f debugnamecomplete: use new name api
Sean Farley <sean.michael.farley@gmail.com>
parents: 23762
diff changeset
2430 for name, ns in repo.names.iteritems():
7ad155e13f0f debugnamecomplete: use new name api
Sean Farley <sean.michael.farley@gmail.com>
parents: 23762
diff changeset
2431 if name != 'branches':
7ad155e13f0f debugnamecomplete: use new name api
Sean Farley <sean.michael.farley@gmail.com>
parents: 23762
diff changeset
2432 names.update(ns.listnames(repo))
23762
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2433 names.update(tag for (tag, heads, tip, closed)
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2434 in repo.branchmap().iterbranches() if not closed)
18790
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2435 completions = set()
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2436 if not args:
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2437 args = ['']
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2438 for a in args:
23762
0390cc327dd5 debugnamecomplete: rename from debuglabelcomplete
Sean Farley <sean.michael.farley@gmail.com>
parents: 23742
diff changeset
2439 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
2440 ui.write('\n'.join(sorted(completions)))
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2441 ui.write('\n')
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2442
22559
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2443 @command('debuglocks',
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2444 [('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
2445 ('W', 'force-wlock', None,
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2446 _('free the working state lock (DANGEROUS)'))],
23123
c26b7a810749 debuglocks: add missing usage summary
Matt Mackall <mpm@selenic.com>
parents: 23122
diff changeset
2447 _('[OPTION]...'))
22559
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2448 def debuglocks(ui, repo, **opts):
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2449 """show or modify state of locks
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2450
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2451 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
2452 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
2453 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
2454 running if it's not local.
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2455
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2456 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
2457 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
2458 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
2459 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
2460
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2461 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
2462 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
2463 blocked by filesystem permissions.
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 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
2466
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2467 """
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2468
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2469 if opts.get('force_lock'):
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2470 repo.svfs.unlink('lock')
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2471 if opts.get('force_wlock'):
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2472 repo.vfs.unlink('wlock')
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2473 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
2474 return 0
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2475
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2476 now = time.time()
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2477 held = 0
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 def report(vfs, name, method):
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2480 # 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
2481 try:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2482 l = method(False)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2483 except error.LockHeld:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2484 l = None
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2485
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2486 if l:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2487 l.release()
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2488 else:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2489 try:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2490 stat = repo.svfs.lstat(name)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2491 age = now - stat.st_mtime
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2492 user = util.username(stat.st_uid)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2493 locker = vfs.readlock(name)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2494 if ":" in locker:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2495 host, pid = locker.split(':')
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2496 if host == socket.gethostname():
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2497 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
2498 else:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2499 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
2500 % (user, pid, host)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2501 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
2502 return 1
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2503 except OSError, e:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2504 if e.errno != errno.ENOENT:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2505 raise
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2506
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2507 ui.write("%-6s free\n" % (name + ":"))
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2508 return 0
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2509
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2510 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
2511 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
2512
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2513 return held
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2514
17830
1cb51d65453d debugobsolete: add --flags option
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 17822
diff changeset
2515 @command('debugobsolete',
1cb51d65453d debugobsolete: add --flags option
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 17822
diff changeset
2516 [('', '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
2517 ('', 'record-parents', False,
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2518 _('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
2519 ('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
2520 ] + commitopts2,
17074
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2521 _('[OBSOLETED [REPLACEMENT] [REPL... ]'))
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2522 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
2523 """create arbitrary obsolete marker
d4a79e075303 debugobsolete: improve command help
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 18479
diff changeset
2524
18854
afab180307be commands: fix typo in debugobsolete docstring
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 18701
diff changeset
2525 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
2526
17292
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2527 def parsenodeid(s):
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2528 try:
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2529 # 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
2530 # 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
2531 # local repository.
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2532 n = bin(s)
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2533 if len(n) != len(nullid):
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2534 raise TypeError()
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2535 return n
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2536 except TypeError:
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2537 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
2538 'node identifiers')
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2539
17074
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2540 if precursor is not None:
22274
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2541 if opts['rev']:
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2542 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
2543 metadata = {}
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2544 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
2545 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
2546 l = repo.lock()
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2547 try:
17126
8fa8717b47b6 obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 17123
diff changeset
2548 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
2549 try:
22176
328efb5ca0b4 debugobsolete: catch ValueError that may be raised by obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22103
diff changeset
2550 try:
22218
b629397ca15f debugobsolete: use the new date argument on obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22216
diff changeset
2551 date = opts.get('date')
b629397ca15f debugobsolete: use the new date argument on obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22216
diff changeset
2552 if date:
b629397ca15f debugobsolete: use the new date argument on obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22216
diff changeset
2553 date = util.parsedate(date)
b629397ca15f debugobsolete: use the new date argument on obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22216
diff changeset
2554 else:
b629397ca15f debugobsolete: use the new date argument on obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22216
diff changeset
2555 date = None
22272
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2556 prec = parsenodeid(precursor)
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2557 parents = None
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2558 if opts['record_parents']:
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2559 if prec not in repo.unfiltered():
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2560 raise util.Abort('cannot used --record-parents on '
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2561 'unknown changesets')
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2562 parents = repo.unfiltered()[prec].parents()
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2563 parents = tuple(p.node() for p in parents)
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2564 repo.obsstore.create(tr, prec, succs, opts['flags'],
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2565 parents=parents, date=date,
22218
b629397ca15f debugobsolete: use the new date argument on obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22216
diff changeset
2566 metadata=metadata)
22176
328efb5ca0b4 debugobsolete: catch ValueError that may be raised by obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22103
diff changeset
2567 tr.close()
328efb5ca0b4 debugobsolete: catch ValueError that may be raised by obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22103
diff changeset
2568 except ValueError, exc:
328efb5ca0b4 debugobsolete: catch ValueError that may be raised by obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22103
diff changeset
2569 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
2570 finally:
8fa8717b47b6 obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 17123
diff changeset
2571 tr.release()
17074
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2572 finally:
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2573 l.release()
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2574 else:
22274
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2575 if opts['rev']:
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2576 revs = scmutil.revrange(repo, opts['rev'])
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2577 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
2578 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
2579 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
2580 else:
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2581 markers = obsolete.getmarkers(repo)
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2582
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2583 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
2584 cmdutil.showmarker(ui, m)
17071
11f26e2669aa command: creation of obsolete marker
Pierre-Yves.David@ens-lyon.org
parents: 17059
diff changeset
2585
18792
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2586 @command('debugpathcomplete',
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2587 [('f', 'full', None, _('complete an entire path')),
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2588 ('n', 'normal', None, _('show only normal files')),
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2589 ('a', 'added', None, _('show only added files')),
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2590 ('r', 'removed', None, _('show only removed files'))],
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2591 _('FILESPEC...'))
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2592 def debugpathcomplete(ui, repo, *specs, **opts):
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2593 '''complete part or all of a tracked path
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2594
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2595 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
2596 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
2597
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2598 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
2599 --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
2600
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2601 def complete(path, acceptable):
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2602 dirstate = repo.dirstate
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2603 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
2604 rootdir = repo.root + os.sep
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2605 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
2606 return [], []
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2607 if os.path.isdir(spec):
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2608 spec += '/'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2609 spec = spec[len(rootdir):]
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2610 fixpaths = os.sep != '/'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2611 if fixpaths:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2612 spec = spec.replace(os.sep, '/')
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2613 speclen = len(spec)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2614 fullpaths = opts['full']
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2615 files, dirs = set(), set()
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2616 adddir, addfile = dirs.add, files.add
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2617 for f, st in dirstate.iteritems():
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2618 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
2619 if fixpaths:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2620 f = f.replace('/', os.sep)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2621 if fullpaths:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2622 addfile(f)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2623 continue
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2624 s = f.find(os.sep, speclen)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2625 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
2626 adddir(f[:s])
18792
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2627 else:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2628 addfile(f)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2629 return files, dirs
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2630
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2631 acceptable = ''
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2632 if opts['normal']:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2633 acceptable += 'nm'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2634 if opts['added']:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2635 acceptable += 'a'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2636 if opts['removed']:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2637 acceptable += 'r'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2638 cwd = repo.getcwd()
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2639 if not specs:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2640 specs = ['.']
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2641
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2642 files, dirs = set(), set()
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2643 for spec in specs:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2644 f, d = complete(spec, acceptable or 'nmar')
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2645 files.update(f)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2646 dirs.update(d)
18796
fa6d5c62f3bd pathcomplete: complete directories more conservatively
Bryan O'Sullivan <bryano@fb.com>
parents: 18792
diff changeset
2647 files.update(dirs)
18792
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2648 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
2649 ui.write('\n')
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2650
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2651 @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
2652 def debugpushkey(ui, repopath, namespace, *keyinfo, **opts):
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2653 '''access the pushkey key/value protocol
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2654
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2655 With two args, list the keys in the given namespace.
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2656
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2657 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
2658 Reports success or failure.
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2659 '''
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2660
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
2661 target = hg.peer(ui, {}, repopath)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2662 if keyinfo:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2663 key, old, new = keyinfo
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2664 r = target.pushkey(namespace, key, old, new)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2665 ui.status(str(r) + '\n')
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2666 return not r
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2667 else:
18255
7ca534f31a83 debugpushkey: list keys sorted
Mads Kiilerich <mads at kiilerich.com>
parents: 18254
diff changeset
2668 for k, v in sorted(target.listkeys(namespace).iteritems()):
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2669 ui.write("%s\t%s\n" % (k.encode('string-escape'),
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2670 v.encode('string-escape')))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2671
16249
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2672 @command('debugpvec', [], _('A B'))
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2673 def debugpvec(ui, repo, a, b=None):
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2674 ca = scmutil.revsingle(repo, a)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2675 cb = scmutil.revsingle(repo, b)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2676 pa = pvec.ctxpvec(ca)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2677 pb = pvec.ctxpvec(cb)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2678 if pa == pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2679 rel = "="
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2680 elif pa > pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2681 rel = ">"
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2682 elif pa < pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2683 rel = "<"
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2684 elif pa | pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2685 rel = "|"
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2686 ui.write(_("a: %s\n") % pa)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2687 ui.write(_("b: %s\n") % pb)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2688 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
2689 ui.write(_("delta: %d hdist: %d distance: %d relation: %s\n") %
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2690 (abs(pa._depth - pb._depth), pvec._hamming(pa._vec, pb._vec),
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2691 pa.distance(pb), rel))
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2692
18963
c31b8dc9de67 debugrebuildstate: rename to debugrebuilddirstate
Mads Kiilerich <madski@unity3d.com>
parents: 18962
diff changeset
2693 @command('debugrebuilddirstate|debugrebuildstate',
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2694 [('r', 'rev', '', _('revision to rebuild to'), _('REV'))],
18961
cd1ac2e54847 debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents: 18956
diff changeset
2695 _('[-r REV]'))
18963
c31b8dc9de67 debugrebuildstate: rename to debugrebuilddirstate
Mads Kiilerich <madski@unity3d.com>
parents: 18962
diff changeset
2696 def debugrebuilddirstate(ui, repo, rev):
18961
cd1ac2e54847 debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents: 18956
diff changeset
2697 """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
2698
cd1ac2e54847 debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents: 18956
diff changeset
2699 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
2700
cd1ac2e54847 debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents: 18956
diff changeset
2701 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
2702 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
2703 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
2704
cd1ac2e54847 debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents: 18956
diff changeset
2705 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
2706 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
2707 """
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
2708 ctx = scmutil.revsingle(repo, rev)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2709 wlock = repo.wlock()
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2710 try:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2711 repo.dirstate.rebuild(ctx.node(), ctx.manifest())
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2712 finally:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2713 wlock.release()
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2714
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2715 @command('debugrename',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2716 [('r', 'rev', '', _('revision to debug'), _('REV'))],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2717 _('[-r REV] FILE'))
3652
f4dece0f7016 refactor debugrenamed
Matt Mackall <mpm@selenic.com>
parents: 3651
diff changeset
2718 def debugrename(ui, repo, file1, *pats, **opts):
1194
c165cbf56bb1 Add doc string for debugrename.
bos@serpentine.internal.keyresearch.com
parents: 1193
diff changeset
2719 """dump rename information"""
3652
f4dece0f7016 refactor debugrenamed
Matt Mackall <mpm@selenic.com>
parents: 3651
diff changeset
2720
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
2721 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
2722 m = scmutil.match(ctx, (file1,) + pats, opts)
6764
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
2723 for abs in ctx.walk(m):
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
2724 fctx = ctx[abs]
6579
0159b7a36184 walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents: 6578
diff changeset
2725 o = fctx.filelog().renamed(fctx.filenode())
6584
29c77e5dfb3c walk: remove rel and exact returns
Matt Mackall <mpm@selenic.com>
parents: 6583
diff changeset
2726 rel = m.rel(abs)
6579
0159b7a36184 walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents: 6578
diff changeset
2727 if o:
0159b7a36184 walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents: 6578
diff changeset
2728 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
2729 else:
f4dece0f7016 refactor debugrenamed
Matt Mackall <mpm@selenic.com>
parents: 3651
diff changeset
2730 ui.write(_("%s not renamed\n") % rel)
1116
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
2731
14323
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2732 @command('debugrevlog',
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2733 [('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
2734 ('m', 'manifest', False, _('open manifest')),
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2735 ('d', 'dump', False, _('dump index data'))],
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2736 _('-c|-m|FILE'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2737 optionalrepo=True)
19872
681f7b9213a4 check-code: check for spaces around = for named parameters
Mads Kiilerich <madski@unity3d.com>
parents: 19801
diff changeset
2738 def debugrevlog(ui, repo, file_=None, **opts):
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2739 """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
2740 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
2741
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2742 if opts.get("dump"):
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2743 numrevs = len(r)
21032
67b6f1144e90 debugrevlog: format columns (more) nicely when dumping index data
Mads Kiilerich <madski@unity3d.com>
parents: 21021
diff changeset
2744 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
2745 " 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
2746 ts = 0
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2747 heads = set()
22311
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2748
14326
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2749 for rev in xrange(numrevs):
14371
ec2aae8b375d revlog: drop base() again
Matt Mackall <mpm@selenic.com>
parents: 14363
diff changeset
2750 dbase = r.deltaparent(rev)
ec2aae8b375d revlog: drop base() again
Matt Mackall <mpm@selenic.com>
parents: 14363
diff changeset
2751 if dbase == -1:
ec2aae8b375d revlog: drop base() again
Matt Mackall <mpm@selenic.com>
parents: 14363
diff changeset
2752 dbase = rev
23254
d23834b871ac debugrevlog: fix computing chain length in debugrevlog -d
Mateusz Kwapich <mitrandir@fb.com>
parents: 23137
diff changeset
2753 cbase = r.chainbase(rev)
d23834b871ac debugrevlog: fix computing chain length in debugrevlog -d
Mateusz Kwapich <mitrandir@fb.com>
parents: 23137
diff changeset
2754 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
2755 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
2756 rs = r.rawsize(rev)
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2757 ts = ts + rs
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2758 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
2759 heads.add(rev)
22311
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2760 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
2761 "%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
2762 (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
2763 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
2764 r.start(p1), r.start(p2),
22311
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2765 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
2766 return 0
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2767
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2768 v = r.version
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2769 format = v & 0xFFFF
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2770 flags = []
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2771 gdelta = False
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2772 if v & revlog.REVLOGNGINLINEDATA:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2773 flags.append('inline')
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2774 if v & revlog.REVLOGGENERALDELTA:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2775 gdelta = True
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2776 flags.append('generaldelta')
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2777 if not flags:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2778 flags = ['(none)']
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2779
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2780 nummerges = 0
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2781 numfull = 0
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2782 numprev = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2783 nump1 = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2784 nump2 = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2785 numother = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2786 nump1prev = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2787 nump2prev = 0
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2788 chainlengths = []
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2789
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2790 datasize = [None, 0, 0L]
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2791 fullsize = [None, 0, 0L]
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2792 deltasize = [None, 0, 0L]
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2793
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2794 def addsize(size, l):
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2795 if l[0] is None or size < l[0]:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2796 l[0] = size
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2797 if size > l[1]:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2798 l[1] = size
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2799 l[2] += size
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2800
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2801 numrevs = len(r)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2802 for rev in xrange(numrevs):
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2803 p1, p2 = r.parentrevs(rev)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2804 delta = r.deltaparent(rev)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2805 if format > 0:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2806 addsize(r.rawsize(rev), datasize)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2807 if p2 != nullrev:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2808 nummerges += 1
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2809 size = r.length(rev)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2810 if delta == nullrev:
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2811 chainlengths.append(0)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2812 numfull += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2813 addsize(size, fullsize)
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2814 else:
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2815 chainlengths.append(chainlengths[delta] + 1)
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2816 addsize(size, deltasize)
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2817 if delta == rev - 1:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2818 numprev += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2819 if delta == p1:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2820 nump1prev += 1
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2821 elif delta == p2:
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2822 nump2prev += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2823 elif delta == p1:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2824 nump1 += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2825 elif delta == p2:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2826 nump2 += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2827 elif delta != nullrev:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2828 numother += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2829
17188
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2830 # Adjust size min value for empty cases
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2831 for size in (datasize, fullsize, deltasize):
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2832 if size[0] is None:
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2833 size[0] = 0
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2834
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2835 numdeltas = numrevs - numfull
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2836 numoprev = numprev - nump1prev - nump2prev
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2837 totalrawsize = datasize[2]
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2838 datasize[2] /= numrevs
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2839 fulltotal = fullsize[2]
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2840 fullsize[2] /= numfull
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2841 deltatotal = deltasize[2]
17188
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2842 if numrevs - numfull > 0:
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2843 deltasize[2] /= numrevs - numfull
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2844 totalsize = fulltotal + deltatotal
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2845 avgchainlen = sum(chainlengths) / numrevs
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2846 compratio = totalrawsize / totalsize
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2847
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2848 basedfmtstr = '%%%dd\n'
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2849 basepcfmtstr = '%%%dd %s(%%5.2f%%%%)\n'
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2850
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2851 def dfmtstr(max):
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2852 return basedfmtstr % len(str(max))
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2853 def pcfmtstr(max, padding=0):
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2854 return basepcfmtstr % (len(str(max)), ' ' * padding)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2855
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2856 def pcfmt(value, total):
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2857 return (value, 100 * float(value) / total)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2858
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2859 ui.write(('format : %d\n') % format)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2860 ui.write(('flags : %s\n') % ', '.join(flags))
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2861
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2862 ui.write('\n')
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2863 fmt = pcfmtstr(totalsize)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2864 fmt2 = dfmtstr(totalsize)
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2865 ui.write(('revisions : ') + fmt2 % numrevs)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2866 ui.write((' merges : ') + fmt % pcfmt(nummerges, numrevs))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2867 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
2868 ui.write(('revisions : ') + fmt2 % numrevs)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2869 ui.write((' full : ') + fmt % pcfmt(numfull, numrevs))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2870 ui.write((' deltas : ') + fmt % pcfmt(numdeltas, numrevs))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2871 ui.write(('revision size : ') + fmt2 % totalsize)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2872 ui.write((' full : ') + fmt % pcfmt(fulltotal, totalsize))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2873 ui.write((' deltas : ') + fmt % pcfmt(deltatotal, totalsize))
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2874
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2875 ui.write('\n')
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2876 fmt = dfmtstr(max(avgchainlen, compratio))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2877 ui.write(('avg chain length : ') + fmt % avgchainlen)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2878 ui.write(('compression ratio : ') + fmt % compratio)
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2879
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2880 if format > 0:
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2881 ui.write('\n')
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2882 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
2883 % tuple(datasize))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2884 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
2885 % tuple(fullsize))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2886 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
2887 % tuple(deltasize))
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2888
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2889 if numdeltas > 0:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2890 ui.write('\n')
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2891 fmt = pcfmtstr(numdeltas)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2892 fmt2 = pcfmtstr(numdeltas, 4)
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2893 ui.write(('deltas against prev : ') + fmt % pcfmt(numprev, numdeltas))
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2894 if numprev > 0:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2895 ui.write((' where prev = p1 : ') + fmt2 % pcfmt(nump1prev,
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2896 numprev))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2897 ui.write((' where prev = p2 : ') + fmt2 % pcfmt(nump2prev,
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2898 numprev))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2899 ui.write((' other : ') + fmt2 % pcfmt(numoprev,
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2900 numprev))
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2901 if gdelta:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2902 ui.write(('deltas against p1 : ')
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2903 + fmt % pcfmt(nump1, numdeltas))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2904 ui.write(('deltas against p2 : ')
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2905 + fmt % pcfmt(nump2, numdeltas))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2906 ui.write(('deltas against other : ') + fmt % pcfmt(numother,
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2907 numdeltas))
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2908
20497
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2909 @command('debugrevspec',
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2910 [('', '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
2911 ('REVSPEC'))
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2912 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
2913 """parse and apply a revision specification
5535e66b3016 debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents: 16097
diff changeset
2914
5535e66b3016 debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents: 16097
diff changeset
2915 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
2916 expansion.
5535e66b3016 debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents: 16097
diff changeset
2917 """
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2918 if ui.verbose:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2919 tree = revset.parse(expr)[0]
16218
81a1a00f5738 debugrevspec: pretty print output
Patrick Mezard <patrick@mezard.eu>
parents: 16192
diff changeset
2920 ui.note(revset.prettyformat(tree), "\n")
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2921 newtree = revset.findaliases(ui, tree)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2922 if newtree != tree:
16218
81a1a00f5738 debugrevspec: pretty print output
Patrick Mezard <patrick@mezard.eu>
parents: 16192
diff changeset
2923 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
2924 tree = newtree
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23690
diff changeset
2925 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
2926 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
2927 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
2928 if opts["optimize"]:
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2929 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
2930 ui.note("* optimized:\n", revset.prettyformat(optimizedtree), "\n")
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2931 func = revset.match(ui, expr)
24114
fafd9a1284cf revset: make match function initiate query from full set by default
Yuya Nishihara <yuya@tcha.org>
parents: 23896
diff changeset
2932 for c in func(repo):
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2933 ui.write("%s\n" % c)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2934
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2935 @command('debugsetparents', [], _('REV1 [REV2]'))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2936 def debugsetparents(ui, repo, rev1, rev2=None):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2937 """manually set the parents of the current working directory
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2938
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2939 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
2940 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
2941 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
2942 command.
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2943
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2944 Returns 0 on success.
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2945 """
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2946
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
2947 r1 = scmutil.revsingle(repo, rev1).node()
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
2948 r2 = scmutil.revsingle(repo, rev2, 'null').node()
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2949
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2950 wlock = repo.wlock()
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2951 try:
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
2952 repo.dirstate.beginparentchange()
16551
ebf6d38c9063 localrepo: add setparents() to adjust dirstate copies (issue3407)
Patrick Mezard <patrick@mezard.eu>
parents: 16505
diff changeset
2953 repo.setparents(r1, r2)
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
2954 repo.dirstate.endparentchange()
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2955 finally:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2956 wlock.release()
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2957
18962
c0b2cb62067f debugstate: rename to debugdirstate
Mads Kiilerich <madski@unity3d.com>
parents: 18961
diff changeset
2958 @command('debugdirstate|debugstate',
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2959 [('', 'nodates', None, _('do not display the saved mtime')),
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2960 ('', 'datesort', None, _('sort by saved mtime'))],
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2961 _('[OPTION]...'))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2962 def debugstate(ui, repo, nodates=None, datesort=None):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2963 """show the contents of the current dirstate"""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2964 timestr = ""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2965 if datesort:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2966 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
2967 else:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2968 keyfunc = None # sort by filename
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2969 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
2970 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
2971 timestr = 'unset '
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 23839
diff changeset
2972 elif nodates:
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 23839
diff changeset
2973 timestr = 'set '
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 23839
diff changeset
2974 else:
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 23839
diff changeset
2975 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
2976 time.localtime(ent[3]))
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2977 if ent[1] & 020000:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2978 mode = 'lnk'
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2979 else:
15440
9ab2b3b730ee windows: use umask 022 in debugstate output
Mads Kiilerich <mads@kiilerich.com>
parents: 15424
diff changeset
2980 mode = '%3o' % (ent[1] & 0777 & ~util.umask)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2981 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
2982 for f in repo.dirstate.copies():
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2983 ui.write(_("copy: %s -> %s\n") % (repo.dirstate.copied(f), f))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2984
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2985 @command('debugsub',
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2986 [('r', 'rev', '',
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2987 _('revision to check'), _('REV'))],
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2988 _('[-r REV] [REV]'))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2989 def debugsub(ui, repo, rev=None):
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
2990 ctx = scmutil.revsingle(repo, rev, None)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2991 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
2992 ui.write(('path %s\n') % k)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2993 ui.write((' source %s\n') % v[0])
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2994 ui.write((' revision %s\n') % v[1])
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2995
18068
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2996 @command('debugsuccessorssets',
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2997 [],
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2998 _('[REV]'))
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2999 def debugsuccessorssets(ui, repo, *revs):
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3000 """show set of successors for revision
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3001
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3002 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
3003 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
3004
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3005 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
3006 successor (changeset A replaced by A').
18068
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3007
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3008 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
3009 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
3010
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3011 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
3012 more than one successor.
18068
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3013
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3014 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
3015 "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
3016 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
3017
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3018 Results are displayed as follows::
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3019
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3020 <rev1>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3021 <successors-1A>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3022 <rev2>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3023 <successors-2A>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3024 <successors-2B1> <successors-2B2> <successors-2B3>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3025
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3026 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
3027 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
3028 been split).
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3029 """
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3030 # 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
3031 cache = {}
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3032 ctx2str = str
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3033 node2str = short
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3034 if ui.debug():
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3035 def ctx2str(ctx):
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3036 return ctx.hex()
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3037 node2str = hex
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3038 for rev in scmutil.revrange(repo, revs):
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3039 ctx = repo[rev]
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3040 ui.write('%s\n'% ctx2str(ctx))
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3041 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
3042 if succsset:
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3043 ui.write(' ')
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3044 ui.write(node2str(succsset[0]))
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3045 for node in succsset[1:]:
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3046 ui.write(' ')
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3047 ui.write(node2str(node))
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
3048 ui.write('\n')
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
3049
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3050 @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
3051 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
3052 """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
3053 m = scmutil.match(repo[None], pats, opts)
6585
d3d1d39da2fa walk: remove cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents: 6584
diff changeset
3054 items = list(repo.walk(m))
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3055 if not items:
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3056 return
16953
634ad0b24ba2 debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents: 16949
diff changeset
3057 f = lambda fn: fn
634ad0b24ba2 debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents: 16949
diff changeset
3058 if ui.configbool('ui', 'slash') and os.sep != '/':
634ad0b24ba2 debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents: 16949
diff changeset
3059 f = lambda fn: util.normpath(fn)
6586
d3463007d368 walk: return a single value
Matt Mackall <mpm@selenic.com>
parents: 6585
diff changeset
3060 fmt = 'f %%-%ds %%-%ds %%s' % (
d3463007d368 walk: return a single value
Matt Mackall <mpm@selenic.com>
parents: 6585
diff changeset
3061 max([len(abs) for abs in items]),
d3463007d368 walk: return a single value
Matt Mackall <mpm@selenic.com>
parents: 6585
diff changeset
3062 max([len(m.rel(abs)) for abs in items]))
d3463007d368 walk: return a single value
Matt Mackall <mpm@selenic.com>
parents: 6585
diff changeset
3063 for abs in items:
16953
634ad0b24ba2 debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents: 16949
diff changeset
3064 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
3065 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
3066
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3067 @command('debugwireargs',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3068 [('', 'three', '', 'three'),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3069 ('', 'four', '', 'four'),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3070 ('', 'five', '', 'five'),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3071 ] + remoteopts,
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
3072 _('REPO [OPTIONS]... [ONE [TWO]]'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
3073 norepo=True)
13720
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
3074 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
3075 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
3076 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
3077 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
3078 args = {}
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
3079 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
3080 if v:
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
3081 args[k] = v
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
3082 # 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
3083 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
3084 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
3085 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
3086 if res1 != res2:
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
3087 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
3088
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3089 @command('^diff',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3090 [('r', 'rev', [], _('revision'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3091 ('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
3092 ] + diffopts + diffopts2 + walkopts + subrepoopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3093 _('[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
3094 inferrepo=True)
732
ba0b6d17a6de Convert diff command over to using walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 731
diff changeset
3095 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
3096 """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
3097
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3098 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
3099
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3100 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
3101
12389
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
3102 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
3103
12389
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
3104 diff may generate unexpected results for merges, as it will
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
3105 default to comparing against the working directory's first
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
3106 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
3107
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3108 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
3109 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
3110 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
3111 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
3112 to its parent.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3113
10527
9c0ba837dc65 commands: correct diff -c explanation
timeless <timeless@mozdev.org>
parents: 10520
diff changeset
3114 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
3115 the changes in that changeset relative to its first parent.
10520
75361931884d commands: mention diff -c
timeless <timeless@mozdev.org>
parents: 10515
diff changeset
3116
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3117 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
3118 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
3119 anyway, probably with undesirable results.
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3120
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3121 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
3122 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
3123
15110
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3124 .. container:: verbose
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3125
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3126 Examples:
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3127
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3128 - 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
3129
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3130 hg diff foo.c
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3131
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3132 - compare two historical versions of a directory, with rename info::
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3133
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3134 hg diff --git -r 1.0:1.2 lib/
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3135
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3136 - 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
3137
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3138 hg diff --stat -r "date('may 2')"
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3139
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3140 - diff all newly-added files that contain a keyword::
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3141
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3142 hg diff "set:added() and grep(GNU)"
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3143
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3144 - compare a revision and its parents::
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3145
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3146 hg diff -c 9353 # compare against first parent
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3147 hg diff -r 9353^:9353 # same using revset syntax
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3148 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
3149
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3150 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3151 """
7628
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3152
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3153 revs = opts.get('rev')
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3154 change = opts.get('change')
9640
9e76232fbfbe diff: add --stat for diffstat output
Brodie Rao <me+hg@dackz.net>
parents: 9636
diff changeset
3155 stat = opts.get('stat')
9857
24bc6e414610 diff: change --inverse to --reverse
Martin Geisler <mg@lazybytes.net>
parents: 9839
diff changeset
3156 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
3157
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3158 if revs and change:
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3159 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
3160 raise util.Abort(msg)
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3161 elif change:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
3162 node2 = scmutil.revsingle(repo, change, None).node()
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
3163 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
3164 else:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
3165 node1, node2 = scmutil.revpair(repo, revs)
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
3166
9857
24bc6e414610 diff: change --inverse to --reverse
Martin Geisler <mg@lazybytes.net>
parents: 9839
diff changeset
3167 if reverse:
9725
3f522d2fa633 diff: add --inverse option
Yannick Gingras <ygingras@ygingras.net>
parents: 9718
diff changeset
3168 node1, node2 = node2, node1
3f522d2fa633 diff: add --inverse option
Yannick Gingras <ygingras@ygingras.net>
parents: 9718
diff changeset
3169
23456
e1086c7dd3c4 diff: explicitly honor all diffopts
Siddharth Agarwal <sid0@fb.com>
parents: 23455
diff changeset
3170 diffopts = patch.diffallopts(ui, opts)
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
3171 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
3172 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
3173 listsubrepos=opts.get('subrepos'),
24455
16961d43dc89 diff: rename --relative option to --root
Sean Farley <sean@farley.io>
parents: 24432
diff changeset
3174 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
3175
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3176 @command('^export',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3177 [('o', 'output', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3178 _('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
3179 ('', '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
3180 ('r', 'rev', [], _('revisions to export'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3181 ] + diffopts,
18956
1a9ad84583ee export: export working directory parent by default
Mads Kiilerich <mads@kiilerich.com>
parents: 18955
diff changeset
3182 _('[OPTION]... [-o OUTFILESPEC] [-r] [REV]...'))
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
3183 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
3184 """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
3185
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3186 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
3187 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
3188
10334
3d75c691b77d commands: fix the list of changeset header information in 'hg help export'
Steve Losh <steve@stevelosh.com>
parents: 10331
diff changeset
3189 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
3190 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
3191 comment.
3822
28134d82db9b Add notes about diff/merge asymmetry to export, diff, and log
Matt Mackall <mpm@selenic.com>
parents: 3815
diff changeset
3192
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
3193 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
3194
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
3195 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
3196 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
3197 first parent only.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3198
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3199 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
3200 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
3201
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
3202 :``%%``: literal "%" character
11718
3e979f47a4c9 help: fix bytes/digit confusion for hashes
Matt Mackall <mpm@selenic.com>
parents: 11697
diff changeset
3203 :``%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
3204 :``%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
3205 :``%R``: changeset revision number
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
3206 :``%b``: basename of the exporting repository
11718
3e979f47a4c9 help: fix bytes/digit confusion for hashes
Matt Mackall <mpm@selenic.com>
parents: 11697
diff changeset
3207 :``%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
3208 :``%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
3209 :``%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
3210 :``%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
3211
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3212 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
3213 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
3214 diff anyway, probably with undesirable results.
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3215
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3216 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
3217 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
3218
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
3219 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
3220 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
3221
15111
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3222 .. container:: verbose
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3223
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3224 Examples:
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3225
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3226 - 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
3227 branch::
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3228
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3229 hg export -r 9353 | hg import -
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3230
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3231 - 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
3232 rename information::
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3233
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3234 hg export --git -r 123:150 > changes.txt
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3235
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3236 - split outgoing changes into a series of patches with
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3237 descriptive names::
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3238
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3239 hg export -r "outgoing()" -o "%n-%m.patch"
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3240
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3241 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3242 """
10015
b5f352f33520 commands.export: accept -r option as revision specification
Alexander Solovyov <piranha@piranha.org.ua>
parents: 10014
diff changeset
3243 changesets += tuple(opts.get('rev', []))
18956
1a9ad84583ee export: export working directory parent by default
Mads Kiilerich <mads@kiilerich.com>
parents: 18955
diff changeset
3244 if not changesets:
1a9ad84583ee export: export working directory parent by default
Mads Kiilerich <mads@kiilerich.com>
parents: 18955
diff changeset
3245 changesets = ['.']
16357
8ca7187d479f export: catch exporting empty revsets (issue3353)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16231
diff changeset
3246 revs = scmutil.revrange(repo, changesets)
8ca7187d479f export: catch exporting empty revsets (issue3353)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16231
diff changeset
3247 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
3248 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
3249 if len(revs) > 1:
4ec58b157265 refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2871
diff changeset
3250 ui.note(_('exporting patches:\n'))
4ec58b157265 refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2871
diff changeset
3251 else:
4ec58b157265 refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2871
diff changeset
3252 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
3253 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
3254 switch_parent=opts.get('switch_parent'),
23690
de5c76aaeaf4 export: explicitly honor all diffopts
Siddharth Agarwal <sid0@fb.com>
parents: 23620
diff changeset
3255 opts=patch.diffallopts(ui, opts))
246
96cde50a746f Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents: 245
diff changeset
3256
22423
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3257 @command('files',
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3258 [('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
3259 ('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
3260 ] + walkopts + formatteropts + subrepoopts,
22423
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3261 _('[OPTION]... [PATTERN]...'))
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3262 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
3263 """list tracked files
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3264
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3265 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
3266 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
3267 removed files).
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3268
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3269 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
3270 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
3271
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3272 .. container:: verbose
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3273
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3274 Examples:
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3275
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3276 - 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
3277
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3278 hg files .
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3279
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3280 - 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
3281
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3282 hg files -vr .
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3283
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3284 - list all files named README::
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3285
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3286 hg files -I "**/README"
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3287
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3288 - list all binary files::
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3289
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3290 hg files "set:binary()"
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3291
23074
21a55dbc3940 files: fix example list syntax
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 23024
diff changeset
3292 - 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
3293
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3294 hg files "set:grep('bob')"
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3295
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3296 - 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
3297
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3298 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
3299
23414
759202b64f49 help: fix typo in files help
Matt Mackall <mpm@selenic.com>
parents: 23400
diff changeset
3300 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
3301 on specifying file patterns.
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3302
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3303 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
3304
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3305 """
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3306 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
3307
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3308 end = '\n'
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3309 if opts.get('print0'):
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3310 end = '\0'
22552
bb14cca8c4e4 files: correct topic of formatter
Yuya Nishihara <yuya@tcha.org>
parents: 22502
diff changeset
3311 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
3312 fmt = '%s' + end
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3313
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3314 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
3315 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
3316
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3317 fm.end()
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 return ret
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3320
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3321 @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
3322 def forget(ui, repo, *pats, **opts):
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3323 """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
3324
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3325 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
3326 after the next commit.
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3327
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3328 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
3329 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
3330 working directory.
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3331
11193
687c7d395f20 Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents: 11185
diff changeset
3332 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
3333
15118
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3334 .. container:: verbose
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3335
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3336 Examples:
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3337
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3338 - forget newly-added binary files::
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3339
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3340 hg forget "set:added() and binary()"
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3341
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3342 - forget files that would be excluded by .hgignore::
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3343
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3344 hg forget "set:hgignore()"
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3345
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3346 Returns 0 on success.
8902
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3347 """
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3348
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3349 if not pats:
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3350 raise util.Abort(_('no files specified'))
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3351
15912
2bd54ffaa27e forget: fix subrepo recursion for explicit path handling
David M. Carr <david@carrclan.us>
parents: 15911
diff changeset
3352 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
3353 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
3354 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
3355
15240
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3356 @command(
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3357 'graft',
16992
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3358 [('r', 'rev', [], _('revisions to graft'), _('REV')),
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3359 ('c', 'continue', False, _('resume interrupted graft')),
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3360 ('e', 'edit', False, _('invoke editor on commit messages')),
16660
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3361 ('', '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
3362 ('f', 'force', False, _('force graft')),
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3363 ('D', 'currentdate', False,
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3364 _('record the current date as commit date')),
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3365 ('U', 'currentuser', False,
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3366 _('record the current user as committer'), _('DATE'))]
16389
79fecd735d26 graft: add --dry-run support (issue3362)
Matt Mackall <mpm@selenic.com>
parents: 16373
diff changeset
3367 + commitopts2 + mergetoolopts + dryrunopts,
16992
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3368 _('[OPTION]... [-r] REV...'))
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3369 def graft(ui, repo, *revs, **opts):
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3370 '''copy changes from other branches onto the current branch
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3371
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3372 This command uses Mercurial's merge logic to copy individual
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3373 changes from other branches without merging branches in the
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3374 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
3375 '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
3376 description from the source changesets.
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3377
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3378 Changesets that are ancestors of the current revision, that have
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3379 already been grafted, or that are merges will be skipped.
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3380
16660
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3381 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
3382 of the form::
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3383
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3384 (grafted from CHANGESETHASH)
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3385
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3386 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
3387 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
3388 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
3389
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3390 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
3391 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
3392 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
3393 continued with the -c/--continue option.
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3394
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3395 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
3396
21980
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3397 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
3398 for --force.
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3399
15242
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3400 .. container:: verbose
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3401
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3402 Examples:
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3403
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3404 - 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
3405
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3406 hg update stable
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3407 hg graft --edit 9393
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3408
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3409 - 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
3410
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3411 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
3412
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3413 - continue a graft after resolving conflicts::
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3414
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3415 hg graft -c
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3416
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3417 - 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
3418
19401
49acaa2b9701 log: remove tip from example
Matt Mackall <mpm@selenic.com>
parents: 19400
diff changeset
3419 hg log --debug -r .
15242
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3420
21949
ad56fc55cbc3 graft: add a reference to revsets to the help text (issue3362)
Alexander Becher <Alexander.Becher@RuD-Steuerungstechnik.De>
parents: 21947
diff changeset
3421 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
3422 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
3423
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3424 Returns 0 on successful completion.
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3425 '''
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3426
16992
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3427 revs = list(revs)
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3428 revs.extend(opts['rev'])
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3429
15240
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3430 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
3431 opts['user'] = ui.username()
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3432 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
3433 opts['date'] = "%d %d" % util.makedate()
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3434
22008
b02ab548ab5c graft: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22007
diff changeset
3435 editor = cmdutil.getcommiteditor(editform='graft', **opts)
15239
f5d9d0d0f588 graft: add --edit
Matt Mackall <mpm@selenic.com>
parents: 15238
diff changeset
3436
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3437 cont = False
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3438 if opts['continue']:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3439 cont = True
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3440 if revs:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3441 raise util.Abort(_("can't specify --continue and revisions"))
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3442 # read in unfinished revisions
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3443 try:
23877
7cc77030c557 localrepo: remove all external users of localrepo.opener
Angel Ezquerra <angel.ezquerra@gmail.com>
parents: 23840
diff changeset
3444 nodes = repo.vfs.read('graftstate').splitlines()
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3445 revs = [repo[node].rev() for node in nodes]
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3446 except IOError, inst:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3447 if inst.errno != errno.ENOENT:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3448 raise
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3449 raise util.Abort(_("no graft state found, can't continue"))
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3450 else:
19476
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
3451 cmdutil.checkunfinished(repo)
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3452 cmdutil.bailifchanged(repo)
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3453 if not revs:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3454 raise util.Abort(_('no revisions specified'))
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3455 revs = scmutil.revrange(repo, revs)
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3456
22824
9271630f4720 strip: stop calling `remove` on smartset
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22776
diff changeset
3457 skipped = set()
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3458 # check for merges
15404
c1eb8398fe82 localrepo: convert various repo.set() users to repo.revs()
Matt Mackall <mpm@selenic.com>
parents: 15381
diff changeset
3459 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
3460 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
3461 skipped.add(rev)
9271630f4720 strip: stop calling `remove` on smartset
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22776
diff changeset
3462 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
3463 if not revs:
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3464 return -1
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3465
21980
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3466 # 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
3467 # --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
3468 # 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
3469 # 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
3470 # 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
3471 # 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
3472 if not (cont or opts.get('force')):
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3473 # check for ancestors of dest branch
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3474 crev = repo['.'].rev()
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3475 ancestors = repo.changelog.ancestors([crev], inclusive=True)
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3476 # 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
3477 # XXX make this lazy in the future
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3478 revs = list(revs)
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3479 # 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
3480 for rev in list(revs):
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3481 if rev in ancestors:
23507
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3482 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
3483 (rev, repo[rev]))
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3484 # XXX remove on list is slow
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3485 revs.remove(rev)
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3486 if not revs:
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3487 return -1
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3488
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3489 # analyze revs for earlier grafts
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3490 ids = {}
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3491 for ctx in repo.set("%ld", revs):
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3492 ids[ctx.hex()] = ctx.rev()
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3493 n = ctx.extra().get('source')
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3494 if n:
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3495 ids[n] = ctx.rev()
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3496
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3497 # check ancestors for earlier grafts
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3498 ui.debug('scanning for duplicate grafts\n')
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3499
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3500 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
3501 ctx = repo[rev]
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3502 n = ctx.extra().get('source')
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3503 if n in ids:
22305
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3504 try:
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3505 r = repo[n].rev()
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3506 except error.RepoLookupError:
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3507 r = None
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3508 if r in revs:
23507
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3509 ui.warn(_('skipping revision %d:%s '
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3510 '(already grafted to %d:%s)\n')
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3511 % (r, repo[r], rev, ctx))
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3512 revs.remove(r)
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3513 elif ids[n] in revs:
22305
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3514 if r is None:
23507
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3515 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
3516 '(%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
3517 % (ids[n], repo[ids[n]], rev, ctx, n[:12]))
22305
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3518 else:
23507
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3519 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
3520 '(%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
3521 % (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
3522 revs.remove(ids[n])
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3523 elif ctx.hex() in ids:
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3524 r = ids[ctx.hex()]
23507
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3525 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
3526 '(was grafted from %d:%s)\n') %
67045b5a903a graft: show hashes in user-facing messages
Mads Kiilerich <madski@unity3d.com>
parents: 23506
diff changeset
3527 (r, repo[r], rev, ctx))
15360
73628b32d0c0 graft: fix duplicate filter logic
Matt Mackall <mpm@selenic.com>
parents: 15359
diff changeset
3528 revs.remove(r)
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3529 if not revs:
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3530 return -1
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3531
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3532 wlock = repo.wlock()
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3533 try:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3534 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
3535 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
3536 ctx.description().split('\n', 1)[0])
bd5dbb8a05c8 graft: show more useful status information while grafting
Mads Kiilerich <madski@unity3d.com>
parents: 23456
diff changeset
3537 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
3538 if names:
bd5dbb8a05c8 graft: show more useful status information while grafting
Mads Kiilerich <madski@unity3d.com>
parents: 23456
diff changeset
3539 desc += ' (%s)' % ' '.join(names)
bd5dbb8a05c8 graft: show more useful status information while grafting
Mads Kiilerich <madski@unity3d.com>
parents: 23456
diff changeset
3540 ui.status(_('grafting %s\n') % desc)
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3541 if opts.get('dry_run'):
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3542 continue
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3543
18038
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3544 source = ctx.extra().get('source')
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3545 if not source:
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3546 source = ctx.hex()
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3547 extra = {'source': source}
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3548 user = ctx.user()
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3549 if opts.get('user'):
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3550 user = opts['user']
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3551 date = ctx.date()
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3552 if opts.get('date'):
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3553 date = opts['date']
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3554 message = ctx.description()
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3555 if opts.get('log'):
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3556 message += '\n(grafted from %s)' % ctx.hex()
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3557
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3558 # 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
3559 if not cont:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3560 # 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
3561 try:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3562 # 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
3563 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
3564 'graft')
22903
3d51e756b1ec graft: use merge.graft
Matt Mackall <mpm@selenic.com>
parents: 22901
diff changeset
3565 stats = mergemod.graft(repo, ctx, ctx.p1(),
3d51e756b1ec graft: use merge.graft
Matt Mackall <mpm@selenic.com>
parents: 22901
diff changeset
3566 ['local', 'graft'])
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3567 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
3568 repo.ui.setconfig('ui', 'forcemerge', '', 'graft')
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3569 # report any conflicts
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3570 if stats and stats[3] > 0:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3571 # write out state for --continue
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3572 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
3573 repo.vfs.write('graftstate', ''.join(nodelines))
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3574 raise util.Abort(
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3575 _("unresolved conflicts, can't continue"),
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3576 hint=_('use hg resolve and hg graft --continue'))
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3577 else:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3578 cont = False
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3579
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3580 # commit
16660
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3581 node = repo.commit(text=message, user=user,
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3582 date=date, extra=extra, editor=editor)
16600
b54f3c502e63 graft: remark on empty graft
Matt Mackall <mpm@selenic.com>
parents: 16591
diff changeset
3583 if node is None:
23508
2164226a5637 graft: drop cset description from empty commit message
Matt Mackall <mpm@selenic.com>
parents: 23507
diff changeset
3584 ui.warn(
2164226a5637 graft: drop cset description from empty commit message
Matt Mackall <mpm@selenic.com>
parents: 23507
diff changeset
3585 _('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
3586 (ctx.rev(), ctx))
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3587 finally:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3588 wlock.release()
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3589
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3590 # remove state when we complete successfully
18386
03442135dff4 refactoring: use unlinkpath with ignoremissing
Mads Kiilerich <madski@unity3d.com>
parents: 18366
diff changeset
3591 if not opts.get('dry_run'):
03442135dff4 refactoring: use unlinkpath with ignoremissing
Mads Kiilerich <madski@unity3d.com>
parents: 18366
diff changeset
3592 util.unlinkpath(repo.join('graftstate'), ignoremissing=True)
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3593
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3594 return 0
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3595
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3596 @command('grep',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3597 [('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
3598 ('', '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
3599 ('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
3600 ('f', 'follow', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3601 _('follow changeset history,'
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3602 ' 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
3603 ('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
3604 ('l', 'files-with-matches', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3605 _('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
3606 ('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
3607 ('r', 'rev', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3608 _('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
3609 ('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
3610 ('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
3611 ] + walkopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3612 _('[OPTION]... PATTERN [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3613 inferrepo=True)
1108
7a75d8fbbdaf Remove some options from 'hg grep':
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1106
diff changeset
3614 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
3615 """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
3616
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3617 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
3618
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
3619 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
3620 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
3621 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
3622 match appears.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3623
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3624 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
3625 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
3626 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
3627 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
3628 use the --all flag.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3629
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3630 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
3631 """
15765
1ef46bcd76f8 grep: make multiline mode the default (BC)
Matt Mackall <mpm@selenic.com>
parents: 15744
diff changeset
3632 reflags = re.M
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3633 if opts.get('ignore_case'):
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3634 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
3635 try:
21911
760f4055e656 commands: use util.re.compile instead of util.compilere
Siddharth Agarwal <sid0@fb.com>
parents: 21848
diff changeset
3636 regexp = util.re.compile(pattern, reflags)
12385
9a93f4fb141b grep: only catch re.error when compiling regular expressions
Brodie Rao <brodie@bitheap.org>
parents: 12382
diff changeset
3637 except re.error, inst:
6057
218d5b9aa466 Remove trailing ! from two error messages as this was confusing.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6048
diff changeset
3638 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
3639 return 1
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
3640 sep, eol = ':', '\n'
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3641 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
3642 sep = eol = '\0'
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3643
9097
431462bd8478 fix memory usage of revlog caches by limiting cache size [issue1639]
Matt Mackall <mpm@selenic.com>
parents: 8995
diff changeset
3644 getfile = util.lrucachefunc(repo.file)
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3645
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3646 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
3647 begin = 0
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
3648 linenum = 0
17949
407209261f63 grep: remove useless while condition
Kevin Bullock <kbullock@ringworld.org>
parents: 17931
diff changeset
3649 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
3650 match = regexp.search(body, begin)
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3651 if not match:
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3652 break
1059
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
3653 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
3654 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
3655 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
3656 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
3657 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
3658 yield linenum, mstart - lstart, mend - lstart, body[lstart:lend]
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3659
1559
59b3639df0a9 Convert all classes to new-style classes by deriving them from object.
Eric Hopper <hopper@omnifarious.org>
parents: 1552
diff changeset
3660 class linestate(object):
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3661 def __init__(self, line, linenum, colstart, colend):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3662 self.line = line
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3663 self.linenum = linenum
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3664 self.colstart = colstart
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3665 self.colend = colend
2869
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3666
6469
fb502719c75c python 2.6 compatibility: add __hash__ to classes that have __eq__
Paul Moore <p.f.moore@gmail.com>
parents: 6468
diff changeset
3667 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
3668 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
3669
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3670 def __eq__(self, other):
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3671 return self.line == other.line
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3672
21011
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3673 def __iter__(self):
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3674 yield (self.line[:self.colstart], '')
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3675 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
3676 rest = self.line[self.colend:]
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3677 while rest != '':
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3678 match = regexp.search(rest)
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3679 if not match:
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3680 yield (rest, '')
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3681 break
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3682 mstart, mend = match.span()
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3683 yield (rest[:mstart], '')
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3684 yield (rest[mstart:mend], 'grep.match')
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3685 rest = rest[mend:]
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3686
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3687 matches = {}
2870
8eaaf1321bfe grep: add --follow support.
Brendan Cully <brendan@kublai.com>
parents: 2869
diff changeset
3688 copies = {}
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3689 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
3690 matches[rev].setdefault(fn, [])
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3691 m = matches[rev][fn]
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3692 for lnum, cstart, cend, line in matchlines(body):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3693 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
3694 m.append(s)
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3695
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3696 def difflinestates(a, b):
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3697 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
3698 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
3699 if tag == 'insert':
3472
df7202f6887c use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3471
diff changeset
3700 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
3701 yield ('+', b[i])
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3702 elif tag == 'delete':
3472
df7202f6887c use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3471
diff changeset
3703 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
3704 yield ('-', a[i])
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3705 elif tag == 'replace':
3472
df7202f6887c use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3471
diff changeset
3706 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
3707 yield ('-', a[i])
3472
df7202f6887c use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3471
diff changeset
3708 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
3709 yield ('+', b[i])
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3710
9655
6d7d3f849062 walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents: 9654
diff changeset
3711 def display(fn, ctx, pstates, states):
6d7d3f849062 walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents: 9654
diff changeset
3712 rev = ctx.rev()
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
3713 if ui.quiet:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
3714 datefunc = util.shortdate
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
3715 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
3716 datefunc = util.datestr
3951
cb66641cdee3 grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3950
diff changeset
3717 found = False
20836
a8b4541bb961 grep: reuse the first "util.binary()" result for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20834
diff changeset
3718 @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
3719 def binary():
332e400764e5 grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents: 13911
diff changeset
3720 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
3721 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
3722
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3723 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
3724 iter = difflinestates(pstates, states)
2869
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3725 else:
8849
80cc4b1a62d0 compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 8834
diff changeset
3726 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
3727 for change, l in iter:
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3728 cols = [(fn, 'grep.filename'), (str(rev), 'grep.rev')]
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3729
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3730 if opts.get('line_number'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3731 cols.append((str(l.linenum), 'grep.linenumber'))
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3732 if opts.get('all'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3733 cols.append((change, 'grep.change'))
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3734 if opts.get('user'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3735 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
3736 if opts.get('date'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3737 cols.append((datefunc(ctx.date()), 'grep.date'))
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3738 for col, label in cols[:-1]:
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3739 ui.write(col, label=label)
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3740 ui.write(sep, label='grep.sep')
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3741 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
3742 if not opts.get('files_with_matches'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3743 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
3744 if not opts.get('text') and binary():
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3745 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
3746 else:
21011
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3747 for s, label in l:
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3748 ui.write(s, label=label)
10816
635d601e8f21 grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents: 10654
diff changeset
3749 ui.write(eol)
3951
cb66641cdee3 grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3950
diff changeset
3750 found = True
21011
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3751 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
3752 break
3951
cb66641cdee3 grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3950
diff changeset
3753 return found
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3754
1145
bd917e1a26dd grep: change default to printing first matching rev.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1116
diff changeset
3755 skip = {}
8849
80cc4b1a62d0 compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 8834
diff changeset
3756 revfiles = {}
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
3757 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
3758 found = False
2870
8eaaf1321bfe grep: add --follow support.
Brendan Cully <brendan@kublai.com>
parents: 2869
diff changeset
3759 follow = opts.get('follow')
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3760
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3761 def prep(ctx, fns):
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3762 rev = ctx.rev()
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
3763 pctx = ctx.p1()
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3764 parent = pctx.rev()
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3765 matches.setdefault(rev, {})
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3766 matches.setdefault(parent, {})
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3767 files = revfiles.setdefault(rev, [])
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3768 for fn in fns:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3769 flog = getfile(fn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3770 try:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3771 fnode = ctx.filenode(fn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3772 except error.LookupError:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3773 continue
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3774
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3775 copied = flog.renamed(fnode)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3776 copy = follow and copied and copied[0]
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3777 if copy:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3778 copies.setdefault(rev, {})[fn] = copy
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3779 if fn in skip:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3780 if copy:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3781 skip[copy] = True
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3782 continue
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3783 files.append(fn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3784
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3785 if fn not in matches[rev]:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3786 grepbody(fn, rev, flog.read(fnode))
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3787
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3788 pfn = copy or fn
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3789 if pfn not in matches[parent]:
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3790 try:
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3791 fnode = pctx.filenode(pfn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3792 grepbody(pfn, parent, flog.read(fnode))
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents: 7632
diff changeset
3793 except error.LookupError:
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3794 pass
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3795
9665
1de5ebfa5585 walkchangerevs: drop ui arg
Matt Mackall <mpm@selenic.com>
parents: 9663
diff changeset
3796 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
3797 rev = ctx.rev()
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
3798 parent = ctx.p1().rev()
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3799 for fn in sorted(revfiles.get(rev, [])):
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3800 states = matches[rev][fn]
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3801 copy = copies.get(rev, {}).get(fn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3802 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
3803 if copy:
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3804 skip[copy] = True
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3805 continue
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3806 pstates = matches.get(parent, {}).get(copy or fn, [])
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3807 if pstates or states:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3808 r = display(fn, ctx, pstates, states)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3809 found = found or r
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3810 if r and not opts.get('all'):
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3811 skip[fn] = True
8849
80cc4b1a62d0 compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 8834
diff changeset
3812 if copy:
80cc4b1a62d0 compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 8834
diff changeset
3813 skip[copy] = True
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3814 del matches[rev]
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3815 del revfiles[rev]
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3816
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3817 return not found
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3818
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3819 @command('heads',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3820 [('r', 'rev', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3821 _('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
3822 ('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
3823 ('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
3824 ('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
3825 ] + templateopts,
16869
00e1e40d709c help: drop -a from heads syntax summary (issue3483)
Matt Mackall <mpm@selenic.com>
parents: 16850
diff changeset
3826 _('[-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
3827 def heads(ui, repo, *branchrevs, **opts):
19469
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3828 """show branch heads
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3829
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3830 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
3831 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
3832 same branch. They are where development generally takes place and
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3833 are the usual targets for update and merge operations.
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3834
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3835 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
3836 branches associated with the specified changesets are shown. This
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3837 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
3838 currently checked-out branch.
9502
8d7d68dd91fd commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents: 9189
diff changeset
3839
8d7d68dd91fd commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents: 9189
diff changeset
3840 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
3841 (see :hg:`commit --close-branch`).
9502
8d7d68dd91fd commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents: 9189
diff changeset
3842
8d7d68dd91fd commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents: 9189
diff changeset
3843 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
3844 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
3845
fd511e9eeea6 commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10349
diff changeset
3846 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
3847 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
3848
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3849 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
3850 """
10328
0798a3d5f812 commands: simplify heads a little bit before I start hacking it up
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10326
diff changeset
3851
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
3852 start = None
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
3853 if 'rev' in opts:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
3854 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
3855
10350
fd511e9eeea6 commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10349
diff changeset
3856 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
3857 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
3858 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
3859 heads = []
14466
bd34a027f3ed commands: use repo.branchheads in heads command
Martin Geisler <mg@aragost.com>
parents: 14465
diff changeset
3860 for branch in repo.branchmap():
bd34a027f3ed commands: use repo.branchheads in heads command
Martin Geisler <mg@aragost.com>
parents: 14465
diff changeset
3861 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
3862 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
3863
fd511e9eeea6 commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10349
diff changeset
3864 if branchrevs:
13047
6c375e07d673 branch: operate on branch names in local string space where possible
Matt Mackall <mpm@selenic.com>
parents: 13022
diff changeset
3865 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
3866 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
3867
10349
20356e69710c commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10348
diff changeset
3868 if opts.get('active') and branchrevs:
20356e69710c commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10348
diff changeset
3869 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
3870 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
3871
20356e69710c commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10348
diff changeset
3872 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
3873 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
3874 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
3875 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
3876 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
3877 if opts.get('rev'):
16231
ce292f1379ba i18n: fix all remaining uses of % inside _()
Matt Mackall <mpm@selenic.com>
parents: 16230
diff changeset
3878 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
3879 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
3880
4648
8e503fa54d2d Add option to heads to show only heads for current branch.
Eric Hopper <hopper@omnifarious.org>
parents: 4646
diff changeset
3881 if not heads:
8e503fa54d2d Add option to heads to show only heads for current branch.
Eric Hopper <hopper@omnifarious.org>
parents: 4646
diff changeset
3882 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
3883
10350
fd511e9eeea6 commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10349
diff changeset
3884 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
3885 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
3886 for ctx in heads:
ec5240a22f4a commands: always order heads recent to oldest
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10330
diff changeset
3887 displayer.show(ctx)
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
3888 displayer.close()
221
2bfe525ef6ca Beginning of multi-head support
mpm@selenic.com
parents: 220
diff changeset
3889
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3890 @command('help',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3891 [('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
3892 ('c', 'command', None, _('show only help for commands')),
497deec204d1 help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents: 16708
diff changeset
3893 ('k', 'keyword', '', _('show topics matching keyword')),
497deec204d1 help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents: 16708
diff changeset
3894 ],
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
3895 _('[-ec] [TOPIC]'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
3896 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
3897 def help_(ui, name=None, **opts):
7210
833d1250ce00 help: update help
Matt Mackall <mpm@selenic.com>
parents: 7197
diff changeset
3898 """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
3899
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
3900 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
3901
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
3902 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
3903 topic.
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3904
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3905 Returns 0 if successful.
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3906 """
15023
157a294444b2 help: move option text display into a helper function
Matt Mackall <mpm@selenic.com>
parents: 15022
diff changeset
3907
13608
63ab6b0ccedc help: limit documentation width to at most 80 characters
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 13601
diff changeset
3908 textwidth = min(ui.termwidth(), 80) - 2
3655
da361aa7a118 alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents: 3654
diff changeset
3909
22585
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3910 keep = []
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3911 if ui.verbose:
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3912 keep.append('verbose')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3913 if sys.platform.startswith('win'):
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3914 keep.append('windows')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3915 elif sys.platform == 'OpenVMS':
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3916 keep.append('vms')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3917 elif sys.platform == 'plan9':
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3918 keep.append('plan9')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3919 else:
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3920 keep.append('unix')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3921 keep.append(sys.platform.lower())
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3922
22587
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3923 section = None
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3924 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
3925 name, section = name.split('.', 1)
22587
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3926
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
3927 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
3928
22587
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3929 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
3930 section=section)
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3931 if section and not formatted:
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3932 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
3933
17837
b623e323c561 help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17830
diff changeset
3934 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
3935 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
3936 else:
b623e323c561 help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17830
diff changeset
3937 keep.append('notomitted')
22587
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3938 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
3939 section=section)
16854
d71ada5a6a33 help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents: 16853
diff changeset
3940 ui.write(formatted)
6653
a78d8edaeedd help: list special help topics with -v
Johannes Stezenbach <js@sig21.net>
parents: 6652
diff changeset
3941
221
2bfe525ef6ca Beginning of multi-head support
mpm@selenic.com
parents: 220
diff changeset
3942
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3943 @command('identify|id',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3944 [('r', 'rev', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3945 _('identify the specified revision'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3946 ('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
3947 ('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
3948 ('b', 'branch', None, _('show branch')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3949 ('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
3950 ('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
3951 ] + remoteopts,
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
3952 _('[-nibtB] [-r REV] [SOURCE]'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
3953 optionalrepo=True)
13477
0fb2ff949790 id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents: 13473
diff changeset
3954 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
3955 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
3956 """identify the working directory or specified revision
4665
091c9e54d306 identify: accept a revision argument
Matt Mackall <mpm@selenic.com>
parents: 4664
diff changeset
3957
13963
3c753f9a2fbc identify: further clarification of help
Kevin Bullock <kbullock@ringworld.org>
parents: 13952
diff changeset
3958 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
3959 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
3960 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
3961 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
3962
1416b9118540 identify/help: say what the command does first, mention bookmarks
Idan Kamara <idankk86@gmail.com>
parents: 13693
diff changeset
3963 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
3964 repository.
4671
150afe6becf6 identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents: 4667
diff changeset
3965
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
3966 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
3967 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
3968
15112
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3969 .. container:: verbose
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3970
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3971 Examples:
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3972
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3973 - generate a build identifier for the working directory::
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3974
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3975 hg id --id > build-id.dat
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3976
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3977 - find the revision corresponding to a tag::
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3978
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3979 hg id -n -r 1.3
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3980
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3981 - check the most recent revision of a remote repository::
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3982
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3983 hg id -r tip http://selenic.com/hg/
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3984
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3985 Returns 0 if successful.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3986 """
4662
f9b8ea362b49 identify: show nullid for empty repo
Matt Mackall <mpm@selenic.com>
parents: 4659
diff changeset
3987
5330
4528858e7202 make identify an optionalrepo command
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 5329
diff changeset
3988 if not repo and not source:
12067
a4fbbe0fbc38 Lowercase error messages
Martin Geisler <mg@lazybytes.net>
parents: 11881
diff changeset
3989 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
3990 "(.hg not found)"))
4528858e7202 make identify an optionalrepo command
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 5329
diff changeset
3991
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
3992 if ui.debugflag:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
3993 hexfunc = hex
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
3994 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
3995 hexfunc = short
13477
0fb2ff949790 id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents: 13473
diff changeset
3996 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
3997 output = []
7757
af6a63438a8a identify: have consistent output for local repositories
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 7743
diff changeset
3998 revs = []
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3999
4671
150afe6becf6 identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents: 4667
diff changeset
4000 if source:
10365
d757bc0c7865 interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents: 10364
diff changeset
4001 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
4002 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
4003 repo = peer.local()
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
4004 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
4005
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
4006 if not repo:
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4007 if num or branch or tags:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4008 raise util.Abort(
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4009 _("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
4010 if not rev and revs:
150afe6becf6 identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents: 4667
diff changeset
4011 rev = revs[0]
4667
c7a81e3ae80f identify: work with remote repos
Matt Mackall <mpm@selenic.com>
parents: 4666
diff changeset
4012 if not rev:
c7a81e3ae80f identify: work with remote repos
Matt Mackall <mpm@selenic.com>
parents: 4666
diff changeset
4013 rev = "tip"
13644
7e6c2f58ad56 identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents: 13639
diff changeset
4014
17191
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
4015 remoterev = peer.lookup(rev)
4666
48c94bffdb28 identify: add support for output flags
Matt Mackall <mpm@selenic.com>
parents: 4665
diff changeset
4016 if default or id:
13644
7e6c2f58ad56 identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents: 13639
diff changeset
4017 output = [hexfunc(remoterev)]
7e6c2f58ad56 identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents: 13639
diff changeset
4018
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4019 def getbms():
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4020 bms = []
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4021
17191
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
4022 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
4023 hexremoterev = hex(remoterev)
17191
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
4024 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
4025 if bmr == hexremoterev]
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4026
18366
fdf2f5730bd4 identity: report bookmarks sorted
Mads Kiilerich <mads@kiilerich.com>
parents: 18267
diff changeset
4027 return sorted(bms)
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4028
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4029 if bookmarks:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4030 output.extend(getbms())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4031 elif default and not ui.quiet:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4032 # 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
4033 bm = '/'.join(getbms())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4034 if bm:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4035 output.append(bm)
4665
091c9e54d306 identify: accept a revision argument
Matt Mackall <mpm@selenic.com>
parents: 4664
diff changeset
4036 else:
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4037 if not rev:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4038 ctx = repo[None]
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4039 parents = ctx.parents()
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4040 changed = ""
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4041 if default or id or num:
17255
3e856d8abe9c identity: show trailing '+' for dirty subrepos (issue2839)
Patrick Mezard <patrick@mezard.eu>
parents: 17248
diff changeset
4042 if (util.any(repo.status())
3e856d8abe9c identity: show trailing '+' for dirty subrepos (issue2839)
Patrick Mezard <patrick@mezard.eu>
parents: 17248
diff changeset
4043 or util.any(ctx.sub(s).dirty() for s in ctx.substate)):
3e856d8abe9c identity: show trailing '+' for dirty subrepos (issue2839)
Patrick Mezard <patrick@mezard.eu>
parents: 17248
diff changeset
4044 changed = '+'
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4045 if default or id:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4046 output = ["%s%s" %
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4047 ('+'.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
4048 if num:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4049 output.append("%s%s" %
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4050 ('+'.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
4051 else:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
4052 ctx = scmutil.revsingle(repo, rev)
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4053 if default or id:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4054 output = [hexfunc(ctx.node())]
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4055 if num:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4056 output.append(str(ctx.rev()))
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4057
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4058 if default and not ui.quiet:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4059 b = ctx.branch()
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4060 if b != 'default':
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4061 output.append("(%s)" % b)
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4062
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4063 # multiple tags for a single parent separated by '/'
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4064 t = '/'.join(ctx.tags())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4065 if t:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4066 output.append(t)
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4067
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4068 # 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
4069 bm = '/'.join(ctx.bookmarks())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4070 if bm:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4071 output.append(bm)
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4072 else:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4073 if branch:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4074 output.append(ctx.branch())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4075
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4076 if tags:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4077 output.extend(ctx.tags())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4078
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4079 if bookmarks:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
4080 output.extend(ctx.bookmarks())
13477
0fb2ff949790 id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents: 13473
diff changeset
4081
386
494c8e3f47f3 Improvements for hg identify:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 371
diff changeset
4082 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
4083
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4084 @command('import|patch',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4085 [('p', 'strip', 1,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4086 _('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
4087 'meaning as the corresponding patch option'), _('NUM')),
14532
2498128821a9 import: deprecate --base
Patrick Mezard <pmezard@gmail.com>
parents: 14529
diff changeset
4088 ('b', 'base', '', _('base path (DEPRECATED)'), _('PATH')),
15221
269374b89b74 import: add --edit switch
Matt Mackall <mpm@selenic.com>
parents: 15212
diff changeset
4089 ('e', 'edit', False, _('invoke editor on commit messages')),
19409
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
4090 ('f', 'force', None,
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
4091 _('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
4092 ('', 'no-commit', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4093 _("don't commit, just update the working directory")),
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4094 ('', 'bypass', None,
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4095 _("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
4096 ('', '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
4097 _('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
4098 ('', 'exact', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4099 _('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
4100 ('', 'prefix', '',
24390
72d7d390ef5d patch._applydiff: resolve prefix with respect to the cwd
Siddharth Agarwal <sid0@fb.com>
parents: 24365
diff changeset
4101 _('apply patch to subdirectory'), _('DIR')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4102 ('', 'import-branch', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4103 _('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
4104 commitopts + commitopts2 + similarityopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4105 _('[OPTION]... PATCH...'))
15327
67e92d29ecb5 import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents: 15321
diff changeset
4106 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
4107 """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
4108
9649
20b91f91f9ca minor documentation improvements
timeless@mozdev.org
parents: 9646
diff changeset
4109 Import a list of patches and commit them individually (unless
20b91f91f9ca minor documentation improvements
timeless@mozdev.org
parents: 9646
diff changeset
4110 --no-commit is specified).
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4111
19409
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
4112 Because import first applies changes to the working directory,
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
4113 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
4114
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
4115 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
4116 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
4117 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
4118 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
4119 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
4120 message.
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
4121
11193
687c7d395f20 Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents: 11185
diff changeset
4122 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
4123 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
4124 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
4125 override these.
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4126
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4127 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
4128 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
4129 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
4130 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
4131 deficiencies in the text patch format.
4263
47ba52121433 Add import --exact.
Brendan Cully <brendan@kublai.com>
parents: 4256
diff changeset
4132
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4133 Use --bypass to apply and commit patches directly to the
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4134 repository, not touching the working directory. Without --exact,
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4135 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
4136 revision.
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4137
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
4138 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
4139 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
4140
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
4141 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
4142 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
4143 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
4144 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
4145 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
4146 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
4147 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
4148 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
4149 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
4150
8931
4c99eafb101e commands: add note about import retrieving patches from URLs
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8927
diff changeset
4151 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
4152 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
4153 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
4154
15113
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4155 .. container:: verbose
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4156
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4157 Examples:
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4158
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4159 - import a traditional patch from a website and detect renames::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4160
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4161 hg import -s 80 http://example.com/bugfix.patch
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4162
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4163 - import a changeset from an hgweb server::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4164
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4165 hg import http://www.selenic.com/hg/rev/5ca8c111e9aa
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4166
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4167 - import all the patches in an Unix-style mbox::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4168
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4169 hg import incoming-patches.mbox
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4170
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4171 - attempt to exactly restore an exported changeset (not always
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4172 possible)::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4173
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4174 hg import --exact proposed-fix.patch
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4175
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
4176 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
4177 """
15327
67e92d29ecb5 import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents: 15321
diff changeset
4178
67e92d29ecb5 import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents: 15321
diff changeset
4179 if not patch1:
67e92d29ecb5 import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents: 15321
diff changeset
4180 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
4181
437
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
4182 patches = (patch1,) + patches
500
ebc4714a7632 [PATCH] Clean up destination directory if a clone fails.
mpm@selenic.com
parents: 499
diff changeset
4183
6139
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
4184 date = opts.get('date')
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
4185 if date:
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
4186 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
4187
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4188 update = not opts.get('bypass')
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4189 if not update and opts.get('no_commit'):
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4190 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
4191 try:
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4192 sim = float(opts.get('similarity') or 0)
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4193 except ValueError:
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4194 raise util.Abort(_('similarity must be a number'))
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4195 if sim < 0 or sim > 100:
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4196 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
4197 if sim and not update:
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4198 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
4199 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
4200 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
4201 if opts.get('exact') and opts.get('prefix'):
093e8a5e995f commands.import: accept a prefix option
Siddharth Agarwal <sid0@fb.com>
parents: 24251
diff changeset
4202 raise util.Abort(_('cannot use --exact with --prefix'))
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4203
19476
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
4204 if update:
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
4205 cmdutil.checkunfinished(repo)
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4206 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
4207 cmdutil.bailifchanged(repo)
966
022bcc738389 hg import: abort with uncommitted changes, override with --force
mpm@selenic.com
parents: 965
diff changeset
4208
15195
5b2a3bb06cef import: rename some local variables
Greg Ward <greg@gerg.ca>
parents: 15194
diff changeset
4209 base = opts["base"]
15198
62dc0e7ab092 import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents: 15197
diff changeset
4210 wlock = lock = tr = None
12913
0e0a52bd58f9 import: --no-commit should update .hg/last-message.txt
Steve Borho <steve@borho.org>
parents: 12893
diff changeset
4211 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
4212 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
4213
10405
2d30d66a89ad whitespace cleanup
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 10394
diff changeset
4214
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
4215 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
4216 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
4217 wlock = repo.wlock()
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
4218 repo.dirstate.beginparentchange()
16274
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4219 if not opts.get('no_commit'):
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4220 lock = repo.lock()
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4221 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
4222 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
4223 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
4224 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
4225 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
4226 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
4227 patchurl = 'stdin' # for error message
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4228 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
4229 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
4230 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
4231 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
4232
2ed335669e18 commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15265
diff changeset
4233 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
4234 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
4235 (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
4236 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
4237 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
4238 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
4239 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
4240 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
4241 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
4242 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
4243 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
4244 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
4245 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
4246 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
4247 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
4248 "`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
4249 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
4250 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
4251
2ed335669e18 commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15265
diff changeset
4252 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
4253 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
4254
16274
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4255 if tr:
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4256 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
4257 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
4258 repo.savecommitmessage('\n* * *\n'.join(msgs))
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
4259 repo.dirstate.endparentchange()
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
4260 return ret
16705
c2d9ef43ff6c check-code: ignore naked excepts with a "re-raise" comment
Brodie Rao <brodie@sf.io>
parents: 16690
diff changeset
4261 except: # re-raises
15278
2ed335669e18 commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15265
diff changeset
4262 # wlock.release() indirectly calls dirstate.write(): since
2ed335669e18 commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15265
diff changeset
4263 # we're crashing, we do not want to change the working dir
2ed335669e18 commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15265
diff changeset
4264 # parent after all, so make sure it writes nothing
2ed335669e18 commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15265
diff changeset
4265 repo.dirstate.invalidate()
2ed335669e18 commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15265
diff changeset
4266 raise
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
4267 finally:
15198
62dc0e7ab092 import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents: 15197
diff changeset
4268 if tr:
62dc0e7ab092 import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents: 15197
diff changeset
4269 tr.release()
8109
496ae1ea4698 switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents: 8088
diff changeset
4270 release(lock, wlock)
437
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
4271
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4272 @command('incoming|in',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4273 [('f', 'force', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4274 _('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
4275 ('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
4276 ('', 'bundle', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4277 _('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
4278 ('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
4279 ('B', 'bookmarks', False, _("compare bookmarks")),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4280 ('b', 'branch', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4281 _('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
4282 ] + logopts + remoteopts + subrepoopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4283 _('[-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
4284 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
4285 """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
4286
1979
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
4287 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
4288 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
4289 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
4290
1979
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
4291 See pull for valid source format details.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4292
20834
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4293 .. container:: verbose
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4294
24248
913347bcd59c incoming: hide help about use of --bundle option by default
Yuya Nishihara <yuya@tcha.org>
parents: 24222
diff changeset
4295 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
4296 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
4297
20834
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4298 Examples:
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4299
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4300 - show incoming changes with patches and full description::
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4301
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4302 hg incoming -vp
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4303
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4304 - show incoming changes excluding merges, store a bundle::
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4305
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4306 hg in -vpM --bundle incoming.hg
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4307 hg pull incoming.hg
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4308
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4309 - briefly list changes inside a bundle::
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4310
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4311 hg in changes.hg -T "{desc|firstline}\\n"
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4312
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4313 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
4314 """
17182
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4315 if opts.get('graph'):
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4316 cmdutil.checkunsupportedgraphflags([], opts)
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4317 def display(other, chlist, displayer):
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4318 revdag = cmdutil.graphrevs(other, chlist, opts)
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4319 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
4320 cmdutil.displaygraph(ui, revdag, displayer, showparents,
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4321 graphmod.asciiedges)
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4322
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4323 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
4324 return 0
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4325
12274
c02e1ed3d407 incoming: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents: 12273
diff changeset
4326 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
4327 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
4328
13366
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4329 if opts.get('bookmarks'):
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4330 source, branches = hg.parseurl(ui.expandpath(source),
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4331 opts.get('branch'))
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
4332 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
4333 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
4334 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
4335 return 0
14076
924c82157d46 url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents: 14073
diff changeset
4336 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
4337 return bookmarks.incoming(ui, repo, other)
13366
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4338
14360
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4339 repo._subtoppath = ui.expandpath(source)
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4340 try:
14362
8c740a850ad7 commands: replace 'x = f(); return x' with 'return f()'
Martin Geisler <mg@lazybytes.net>
parents: 14361
diff changeset
4341 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
4342 finally:
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4343 del repo._subtoppath
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4344
1944
fdf40c9b3306 incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1943
diff changeset
4345
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
4346 @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
4347 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
4348 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
4349 """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
4350
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
4351 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
4352 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
4353
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4354 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
4355
9970
36760956f6d3 commands: mark "ssh://" as inline literals in help texts
Martin Geisler <mg@lazybytes.net>
parents: 9952
diff changeset
4356 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
4357 See :hg:`help urls` for more information.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4358
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4359 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4360 """
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
4361 hg.peer(ui, opts, ui.expandpath(dest), create=True)
338
1e091b3293d5 default path support with .hg/hgrc
mpm@selenic.com
parents: 335
diff changeset
4362
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4363 @command('locate',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4364 [('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
4365 ('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
4366 ('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
4367 ] + walkopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4368 _('[OPTION]... [PATTERN]...'))
627
b6c42714d900 Add locate command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 625
diff changeset
4369 def locate(ui, repo, *pats, **opts):
22431
eaeee6f95fc0 locate: deprecate in favor of files
Matt Mackall <mpm@selenic.com>
parents: 22429
diff changeset
4370 """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
4371
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4372 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
4373 names match the given patterns.
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4374
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4375 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
4376 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
4377 subdirectories, use "--include .".
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4378
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4379 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
4380 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
4381
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4382 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
4383 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
4384 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
4385 contain whitespace as multiple filenames.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4386
22433
ae1932dce9c1 locate: add pointer to files command in help
Matt Mackall <mpm@selenic.com>
parents: 22431
diff changeset
4387 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
4388
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4389 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
4390 """
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4391 if opts.get('print0'):
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4392 end = '\0'
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4393 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4394 end = '\n'
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
4395 rev = scmutil.revsingle(repo, opts.get('rev'), None).node()
742
092937de2ad7 Refactor matchpats and walk
mpm@selenic.com
parents: 740
diff changeset
4396
4196
1c69c73d85d9 locate: exit(1) if we didn't print any file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 4195
diff changeset
4397 ret = 1
21986
48166e46f111 locate: use ctx.matches instead of ctx.walk
Siddharth Agarwal <sid0@fb.com>
parents: 21980
diff changeset
4398 ctx = repo[rev]
48166e46f111 locate: use ctx.matches instead of ctx.walk
Siddharth Agarwal <sid0@fb.com>
parents: 21980
diff changeset
4399 m = scmutil.match(ctx, pats, opts, default='relglob')
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10270
diff changeset
4400 m.bad = lambda x, y: False
21986
48166e46f111 locate: use ctx.matches instead of ctx.walk
Siddharth Agarwal <sid0@fb.com>
parents: 21980
diff changeset
4401
48166e46f111 locate: use ctx.matches instead of ctx.walk
Siddharth Agarwal <sid0@fb.com>
parents: 21980
diff changeset
4402 for abs in ctx.matches(m):
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
4403 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
4404 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
4405 else:
6584
29c77e5dfb3c walk: remove rel and exact returns
Matt Mackall <mpm@selenic.com>
parents: 6583
diff changeset
4406 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
4407 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
4408
1c69c73d85d9 locate: exit(1) if we didn't print any file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 4195
diff changeset
4409 return ret
627
b6c42714d900 Add locate command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 625
diff changeset
4410
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4411 @command('^log|history',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4412 [('f', 'follow', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4413 _('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
4414 ('', 'follow-first', None,
15405
e4a17bb8472f log: hide some low-utility options
Matt Mackall <mpm@selenic.com>
parents: 15404
diff changeset
4415 _('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
4416 ('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
4417 ('C', 'copies', None, _('show copied files')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4418 ('k', 'keyword', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4419 _('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
4420 ('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
4421 ('', '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
4422 ('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
4423 ('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
4424 ('', 'only-branch', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4425 _('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
4426 _('BRANCH')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4427 ('b', 'branch', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4428 _('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
4429 ('P', 'prune', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4430 _('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
4431 ] + logopts + walkopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
4432 _('[OPTION]... [FILE]'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
4433 inferrepo=True)
1031
503aaf19a040 Rewrite log command. New version is faster and more featureful.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1030
diff changeset
4434 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
4435 """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
4436
2741
ae5ce3454ef5 log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2739
diff changeset
4437 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
4438 project.
ae5ce3454ef5 log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2739
diff changeset
4439
15104
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4440 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
4441 --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
4442 used as the starting revision.
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4443
2741
ae5ce3454ef5 log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2739
diff changeset
4444 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
4445 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
4446 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
4447 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
4448
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4449 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
4450 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
4451 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
4452 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
4453
20544
8982a5397687 log: describe graph symbols in the help
Mads Kiilerich <madski@unity3d.com>
parents: 20526
diff changeset
4454 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
4455 recent changeset at the top.
8982a5397687 log: describe graph symbols in the help
Mads Kiilerich <madski@unity3d.com>
parents: 20526
diff changeset
4456 '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
4457 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
4458 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
4459
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
4460 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
4461
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
4462 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
4463 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
4464 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
4465 will appear in files:.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4466
15105
6e91fba485fa log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents: 15104
diff changeset
4467 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
4468
15105
6e91fba485fa log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents: 15104
diff changeset
4469 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
4470 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
4471 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
4472
15103
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4473 .. container:: verbose
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4474
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4475 Some examples:
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4476
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4477 - 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
4478
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4479 hg log -v
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4480
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4481 - changesets ancestral to the working directory::
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4482
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4483 hg log -f
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4484
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4485 - 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
4486
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4487 hg log -l 10 -b .
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4488
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4489 - 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
4490
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4491 hg log --removed file.c
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4492
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4493 - 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
4494
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4495 hg log -Mp lib/
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4496
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4497 - 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
4498
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4499 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
4500
21944
0483ff40e326 templates: re-add template listing support
Matt Mackall <mpm@selenic.com>
parents: 21940
diff changeset
4501 - list available log templates::
0483ff40e326 templates: re-add template listing support
Matt Mackall <mpm@selenic.com>
parents: 21940
diff changeset
4502
0483ff40e326 templates: re-add template listing support
Matt Mackall <mpm@selenic.com>
parents: 21940
diff changeset
4503 hg log -T list
0483ff40e326 templates: re-add template listing support
Matt Mackall <mpm@selenic.com>
parents: 21940
diff changeset
4504
22576
c712238c4f9b help: fix typo in log examples
Matt Mackall <mpm@selenic.com>
parents: 22493
diff changeset
4505 - 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
4506
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4507 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
4508
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4509 - 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
4510
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4511 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
4512
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4513 - 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
4514
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4515 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
4516
15104
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4517 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
4518
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4519 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
4520 specifying revisions.
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4521
16568
770190bff625 help: add reference to template help (issue3413)
A. S. Budden <abudden@gmail.com>
parents: 16551
diff changeset
4522 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
4523 specifying custom templates.
770190bff625 help: add reference to template help (issue3413)
A. S. Budden <abudden@gmail.com>
parents: 16551
diff changeset
4524
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4525 Returns 0 on success.
22493
abf4e98b8ff2 help: mention mode in hg log --removed help (issue4381)
Matt Mackall <mpm@selenic.com>
parents: 22316
diff changeset
4526
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4527 """
24189
8b4b9ee6001a log: make -fr show complete history from the given revs
Durham Goode <durham@fb.com>
parents: 24171
diff changeset
4528 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
4529 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
4530 del opts['follow']
8b4b9ee6001a log: make -fr show complete history from the given revs
Durham Goode <durham@fb.com>
parents: 24171
diff changeset
4531
17181
6f71167292f2 log: support --graph without graphlog extension
Patrick Mezard <patrick@mezard.eu>
parents: 17168
diff changeset
4532 if opts.get('graph'):
6f71167292f2 log: support --graph without graphlog extension
Patrick Mezard <patrick@mezard.eu>
parents: 17168
diff changeset
4533 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
4534
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4535 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
4536 limit = cmdutil.loglimit(opts)
1756
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
4537 count = 0
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
4538
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4539 getrenamed = None
16175
280e834c9d15 log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents: 16163
diff changeset
4540 if opts.get('copies'):
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4541 endrev = None
16175
280e834c9d15 log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents: 16163
diff changeset
4542 if opts.get('rev'):
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4543 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
4544 getrenamed = templatekw.getrenamedfn(repo, endrev=endrev)
3197
e18c3d08528d Show copies in hg log.
Brendan Cully <brendan@kublai.com>
parents: 3194
diff changeset
4545
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4546 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
4547 for rev in revs:
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4548 if count == limit:
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4549 break
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4550 ctx = repo[rev]
10060
f780b1098efc templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents: 10021
diff changeset
4551 copies = None
16175
280e834c9d15 log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents: 16163
diff changeset
4552 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
4553 copies = []
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
4554 for fn in ctx.files():
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
4555 rename = getrenamed(fn, rev)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
4556 if rename:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
4557 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
4558 if filematcher:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4559 revmatchfn = filematcher(ctx.rev())
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4560 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
4561 revmatchfn = None
11488
f786fc4b8764 log: follow filenames through renames (issue647)
Mads Kiilerich <mads@kiilerich.com>
parents: 11459
diff changeset
4562 displayer.show(ctx, copies=copies, matchfn=revmatchfn)
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4563 if displayer.flush(rev):
18711
6b786dc88612 commands: exit from the log loop at the right time
Bryan O'Sullivan <bryano@fb.com>
parents: 18703
diff changeset
4564 count += 1
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4565
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
4566 displayer.close()
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4567
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4568 @command('manifest',
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4569 [('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
4570 ('', '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
4571 + formatteropts,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4572 _('[-r REV]'))
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4573 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
4574 """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
4575
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4576 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
4577 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
4578 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
4579
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4580 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
4581 With --debug, print file revision hashes.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4582
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4583 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
4584 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
4585
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4586 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4587 """
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4588
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4589 fm = ui.formatter('manifest', opts)
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4590
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4591 if opts.get('all'):
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4592 if rev or node:
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4593 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
4594
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4595 res = []
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4596 prefix = "data/"
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4597 suffix = ".i"
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4598 plen = len(prefix)
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4599 slen = len(suffix)
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4600 lock = repo.lock()
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4601 try:
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4602 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
4603 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
4604 res.append(fn[plen:-slen])
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4605 finally:
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4606 lock.release()
17376
3738d6254bd3 manifest: remove redundant sorted() call for --all
Adrian Buehlmann <adrian@cadifra.com>
parents: 17370
diff changeset
4607 for f in res:
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4608 fm.startitem()
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4609 fm.write("path", '%s\n', f)
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4610 fm.end()
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4611 return
3736
ad3d5b4367cb make manifest friendlier
Matt Mackall <mpm@selenic.com>
parents: 3707
diff changeset
4612
5155
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4613 if rev and node:
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4614 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
4615
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4616 if not node:
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4617 node = rev
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4618
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4619 char = {'l': '@', 'x': '*', '': ''}
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4620 mode = {'l': '644', 'x': '755', '': '644'}
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
4621 ctx = scmutil.revsingle(repo, node)
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4622 mf = ctx.manifest()
6749
51b0e799352f manifest: remove execf/linkf methods
Matt Mackall <mpm@selenic.com>
parents: 6748
diff changeset
4623 for f in ctx:
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4624 fm.startitem()
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4625 fl = ctx[f].flags()
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4626 fm.condwrite(ui.debugflag, 'hash', '%s ', hex(mf[f]))
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4627 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
4628 fm.write('path', '%s\n', f)
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4629 fm.end()
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4630
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4631 @command('^merge',
19439
f4148c36f0aa merge: deprecate the --force option
Florence Laguzet <florence.laguzet@gmail.com>
parents: 19434
diff changeset
4632 [('f', 'force', None,
f4148c36f0aa merge: deprecate the --force option
Florence Laguzet <florence.laguzet@gmail.com>
parents: 19434
diff changeset
4633 _('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
4634 ('r', 'rev', '', _('revision to merge'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4635 ('P', 'preview', None,
14852
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
4636 _('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
4637 ] + mergetoolopts,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4638 _('[-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
4639 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
4640 """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
4641
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4642 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
4643 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
4644
1cd3775e097c commands: better merge help text
Martin Geisler <mg@daimi.au.dk>
parents: 7976
diff changeset
4645 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
4646 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
4647 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
4648 two parents.
2915
013921c753bd merge with other head by default, not tip.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2911
diff changeset
4649
12750
05bd2658bbb3 merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents: 12727
diff changeset
4650 ``--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
4651 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
4652 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
4653
2915
013921c753bd merge with other head by default, not tip.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2911
diff changeset
4654 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
4655 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
4656 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
4657 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
4658
12750
05bd2658bbb3 merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents: 12727
diff changeset
4659 :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
4660
11452
eac141407b85 merge: document how to 'undo' a merge
Matt Mackall <mpm@selenic.com>
parents: 11442
diff changeset
4661 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
4662 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
4663 all changes.
eac141407b85 merge: document how to 'undo' a merge
Matt Mackall <mpm@selenic.com>
parents: 11442
diff changeset
4664
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4665 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
4666 """
2806
0bf22c109cc3 Factor doupdate into _lookup + hg.update
Matt Mackall <mpm@selenic.com>
parents: 2803
diff changeset
4667
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4668 if opts.get('rev') and node:
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
4669 raise util.Abort(_("please specify just one revision"))
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
4670 if not node:
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4671 node = opts.get('rev')
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
4672
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4673 if node:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4674 node = scmutil.revsingle(repo, node).node()
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4675
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4676 if not node and repo._bookmarkcurrent:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4677 bmheads = repo.bookmarkheads(repo._bookmarkcurrent)
18122
730b769fb634 bookmarks: fix head selection for merge with two bookmarked heads
Mads Kiilerich <mads@kiilerich.com>
parents: 17984
diff changeset
4678 curhead = repo[repo._bookmarkcurrent].node()
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4679 if len(bmheads) == 2:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4680 if curhead == bmheads[0]:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4681 node = bmheads[1]
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4682 else:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4683 node = bmheads[0]
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4684 elif len(bmheads) > 2:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4685 raise util.Abort(_("multiple matching bookmarks to merge - "
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4686 "please merge with an explicit rev or bookmark"),
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4687 hint=_("run 'hg heads' to see all heads"))
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4688 elif len(bmheads) <= 1:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4689 raise util.Abort(_("no matching bookmark to merge - "
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4690 "please merge with an explicit rev or bookmark"),
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4691 hint=_("run 'hg heads' to see all heads"))
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4692
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4693 if not node and not repo._bookmarkcurrent:
13047
6c375e07d673 branch: operate on branch names in local string space where possible
Matt Mackall <mpm@selenic.com>
parents: 13022
diff changeset
4694 branch = repo[None].branch()
6844
a38dff85d31f merge: use correct branch name for counting heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6843
diff changeset
4695 bheads = repo.branchheads(branch)
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4696 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
4697
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4698 if len(nbhs) > 2:
14198
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4699 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
4700 "please merge with an explicit rev")
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4701 % (branch, len(bheads)),
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4702 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
4703
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
4704 parent = repo.dirstate.p1()
17386
45b5eb2941d0 merge: handle case when heads are all bookmarks
John Li <jli@circularly.org>
parents: 17370
diff changeset
4705 if len(nbhs) <= 1:
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4706 if len(bheads) > 1:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4707 raise util.Abort(_("heads are bookmarked - "
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4708 "please merge with an explicit rev"),
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4709 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
4710 if len(repo.heads()) > 1:
14198
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4711 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
4712 "please merge with an explicit rev")
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4713 % branch,
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4714 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
4715 msg, hint = _('nothing to merge'), None
15618
0aca2695a110 merge: remove excess creation of changectx
Kevin Bullock <kbullock@ringworld.org>
parents: 15614
diff changeset
4716 if parent != repo.lookup(branch):
15619
6c8573dd1b6b merge: make 'nothing to merge' aborts consistent
Kevin Bullock <kbullock@ringworld.org>
parents: 15618
diff changeset
4717 hint = _("use 'hg update' instead")
6c8573dd1b6b merge: make 'nothing to merge' aborts consistent
Kevin Bullock <kbullock@ringworld.org>
parents: 15618
diff changeset
4718 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
4719
6723
1fe6f365df2e merge: only in-branch merges can be implicit
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6686
diff changeset
4720 if parent not in bheads:
14198
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4721 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
4722 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
4723 "explicit revision"))
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4724 if parent == nbhs[0]:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4725 node = nbhs[-1]
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4726 else:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4727 node = nbhs[0]
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4728
8834
6d36fc70754e merge: rename -S/--show option to -P/--preview
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8815
diff changeset
4729 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
4730 # 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
4731 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
4732 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
4733 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
4734
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4735 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
4736 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
4737 displayer.show(repo[node])
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
4738 displayer.close()
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4739 return 0
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4740
12788
de793925862e merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents: 12765
diff changeset
4741 try:
de793925862e merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents: 12765
diff changeset
4742 # 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
4743 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
4744 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
4745 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
4746 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
4747
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4748 @command('outgoing|out',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4749 [('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
4750 ('r', 'rev', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4751 _('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
4752 ('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
4753 ('B', 'bookmarks', False, _('compare bookmarks')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4754 ('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
4755 _('BRANCH')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4756 ] + logopts + remoteopts + subrepoopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4757 _('[-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
4758 def outgoing(ui, repo, dest=None, **opts):
10376
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
4759 """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
4760
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4761 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
4762 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
4763 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
4764
10376
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
4765 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
4766
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4767 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
4768 """
17182
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4769 if opts.get('graph'):
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4770 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
4771 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
4772 if not o:
21051
1004d3cd65fd outgoing: introduce "outgoinghooks" to avoid redundant outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21050
diff changeset
4773 cmdutil.outgoinghooks(ui, repo, other, opts, o)
17182
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4774 return
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4775
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4776 revdag = cmdutil.graphrevs(repo, o, opts)
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4777 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
4778 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
4779 cmdutil.displaygraph(ui, revdag, displayer, showparents,
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4780 graphmod.asciiedges)
21051
1004d3cd65fd outgoing: introduce "outgoinghooks" to avoid redundant outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21050
diff changeset
4781 cmdutil.outgoinghooks(ui, repo, other, opts, o)
17182
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4782 return 0
13366
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4783
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4784 if opts.get('bookmarks'):
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4785 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
4786 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
4787 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
4788 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
4789 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
4790 return 0
14076
924c82157d46 url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents: 14073
diff changeset
4791 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
4792 return bookmarks.outgoing(ui, repo, other)
13366
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4793
14360
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4794 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
4795 try:
14362
8c740a850ad7 commands: replace 'x = f(); return x' with 'return f()'
Martin Geisler <mg@lazybytes.net>
parents: 14361
diff changeset
4796 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
4797 finally:
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4798 del repo._subtoppath
920
270756aa29d5 Add hg outgoing command
mpm@selenic.com
parents: 918
diff changeset
4799
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4800 @command('parents',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4801 [('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
4802 ] + templateopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
4803 _('[-r REV] [FILE]'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
4804 inferrepo=True)
3658
d12c8668b102 remove legacy hg parents REV syntax
Matt Mackall <mpm@selenic.com>
parents: 3657
diff changeset
4805 def parents(ui, repo, file_=None, **opts):
22501
bde49bbfb30f commands: deprecate the parents commands
Matt Mackall <mpm@selenic.com>
parents: 22480
diff changeset
4806 """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
4807
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4808 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
4809 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
4810 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
4811 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
4812 argument to --rev if given) is printed.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4813
22501
bde49bbfb30f commands: deprecate the parents commands
Matt Mackall <mpm@selenic.com>
parents: 22480
diff changeset
4814 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
4815
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4816 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4817 """
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
4818
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
4819 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
4820
4586
1fcc076fcb17 Make parents with a file but not a revision use working directory revision.
Brendan Cully <brendan@kublai.com>
parents: 4451
diff changeset
4821 if file_:
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
4822 m = scmutil.match(ctx, (file_,), opts)
6582
5acbdd3941c4 walk: remove remaining users of cmdutils.matchpats
Matt Mackall <mpm@selenic.com>
parents: 6579
diff changeset
4823 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
4824 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
4825 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
4826 filenodes = []
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4827 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
4828 if not cp:
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4829 continue
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4830 try:
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4831 filenodes.append(cp.filenode(file_))
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents: 7632
diff changeset
4832 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
4833 pass
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4834 if not filenodes:
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4835 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
4836 p = []
0cfb62e043e8 parents: change parents command to use filectx
Durham Goode <durham@fb.com>
parents: 19306
diff changeset
4837 for fn in filenodes:
0cfb62e043e8 parents: change parents command to use filectx
Durham Goode <durham@fb.com>
parents: 19306
diff changeset
4838 fctx = repo.filectx(file_, fileid=fn)
0cfb62e043e8 parents: change parents command to use filectx
Durham Goode <durham@fb.com>
parents: 19306
diff changeset
4839 p.append(fctx.node())
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4840 else:
5298
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4841 p = [cp.node() for cp in ctx.parents()]
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4842
3643
b4ad640a3bcf templates: move changeset templating bits to cmdutils
Matt Mackall <mpm@selenic.com>
parents: 3631
diff changeset
4843 displayer = cmdutil.show_changeset(ui, repo, opts)
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4844 for n in p:
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
4845 if n != nullid:
7743
ec9b726a9428 commands: fix paths command docstring indention
Martin Geisler <mg@daimi.au.dk>
parents: 7739
diff changeset
4846 displayer.show(repo[n])
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
4847 displayer.close()
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4848
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
4849 @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
4850 def paths(ui, repo, search=None):
7691
bcdc2fe3fd07 Clarified 'hg paths' command help
Bill Barry <after.fallout@gmail.com>
parents: 7684
diff changeset
4851 """show aliases for remote repositories
bcdc2fe3fd07 Clarified 'hg paths' command help
Bill Barry <after.fallout@gmail.com>
parents: 7684
diff changeset
4852
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4853 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
4854 show definition of all available names.
7743
ec9b726a9428 commands: fix paths command docstring indention
Martin Geisler <mg@daimi.au.dk>
parents: 7739
diff changeset
4855
14331
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
4856 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
4857 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
4858
12083
ebfc46929f3e help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents: 12067
diff changeset
4859 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
4860 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
4861 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
4862
11007
a0102da324ab commands: revised documentation of 'default' and 'default-push'
Faheem Mitha <faheem@email.unc.edu>
parents: 10948
diff changeset
4863 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
4864 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
4865 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
4866 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
4867 ``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
4868 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
4869 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
4870 ``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
4871 :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
4872 :hg:`bundle`) operations.
10933
e3396b218e10 Document 'default' and 'default-push' in paths docstring
Faheem Mitha <faheem@email.unc.edu>
parents: 10645
diff changeset
4873
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
4874 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
4875
35e2d453cf0d commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11488
diff changeset
4876 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4877 """
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4878 if search:
24251
a330660b3d71 commands.paths: use ui.paths to show paths
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24248
diff changeset
4879 for name, path in sorted(ui.paths.iteritems()):
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4880 if name == search:
24251
a330660b3d71 commands.paths: use ui.paths to show paths
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24248
diff changeset
4881 ui.status("%s\n" % util.hidepassword(path.loc))
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4882 return
14331
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
4883 if not ui.quiet:
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
4884 ui.warn(_("not found!\n"))
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4885 return 1
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4886 else:
24251
a330660b3d71 commands.paths: use ui.paths to show paths
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24248
diff changeset
4887 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
4888 if ui.quiet:
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
4889 ui.write("%s\n" % name)
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
4890 else:
24251
a330660b3d71 commands.paths: use ui.paths to show paths
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24248
diff changeset
4891 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
4892 util.hidepassword(path.loc)))
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4893
17981
e689b0d91546 command: remove phase from the list of basic command
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 17949
diff changeset
4894 @command('phase',
15849
513ca86b88ef phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents: 15837
diff changeset
4895 [('p', 'public', False, _('set changeset phase to public')),
513ca86b88ef phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents: 15837
diff changeset
4896 ('d', 'draft', False, _('set changeset phase to draft')),
513ca86b88ef phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents: 15837
diff changeset
4897 ('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
4898 ('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
4899 ('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
4900 ],
15854
2260e6ed09c3 phase: the REV argument can be repeated
Martin Geisler <mg@aragost.com>
parents: 15853
diff changeset
4901 _('[-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
4902 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
4903 """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
4904
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
4905 With no argument, show the phase name of specified revisions.
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
4906
15851
05ccad068313 phase: use standard syntax for command line flags
Martin Geisler <mg@aragost.com>
parents: 15850
diff changeset
4907 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
4908 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
4909
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
4910 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
4911 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
4912
b03388ffeb31 phase: fix up help string
Matt Mackall <mpm@selenic.com>
parents: 15831
diff changeset
4913 public < draft < secret
15906
aad565319fa3 phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 15877
diff changeset
4914
20633
2d183dd54384 phase: say "Returns 0" instead of "Return 0" like other command help
Yuya Nishihara <yuya@tcha.org>
parents: 20594
diff changeset
4915 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
4916 be changed.
15830
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
4917 """
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
4918 # 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
4919 targetphase = None
15853
fbb68b382040 commands: no need to rename merge and phases on import
Martin Geisler <mg@aragost.com>
parents: 15852
diff changeset
4920 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
4921 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
4922 if targetphase is not None:
15833
3cf2bb3a9fcc phase: mark messages for i18n
Matt Mackall <mpm@selenic.com>
parents: 15832
diff changeset
4923 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
4924 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
4925
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
4926 # 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
4927 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
4928 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
4929 if not revs:
15958
0d2ac0299020 commands: drop exclamation mark in abort message
Idan Kamara <idankk86@gmail.com>
parents: 15957
diff changeset
4930 raise util.Abort(_('no revisions specified'))
15831
0ecaf1e72609 phase: drop reference to working directory phase
Matt Mackall <mpm@selenic.com>
parents: 15830
diff changeset
4931
16024
7c967c4a6144 phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 16023
diff changeset
4932 revs = scmutil.revrange(repo, revs)
7c967c4a6144 phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 16023
diff changeset
4933
15830
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
4934 lock = None
15906
aad565319fa3 phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 15877
diff changeset
4935 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
4936 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
4937 # display
16024
7c967c4a6144 phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 16023
diff changeset
4938 for r in revs:
7c967c4a6144 phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 16023
diff changeset
4939 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
4940 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
4941 else:
22050
56ccd95b49c6 phase: wrap `hg phases` phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22039
diff changeset
4942 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
4943 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
4944 try:
22050
56ccd95b49c6 phase: wrap `hg phases` phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22039
diff changeset
4945 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
4946 # set phase
16659
58edd786e96f phase: make if abort on nullid for the good reason
Patrick Mezard <patrick@mezard.eu>
parents: 16657
diff changeset
4947 if not revs:
17299
e51d4aedace9 check-code: indent 4 spaces in py files
Mads Kiilerich <mads@kiilerich.com>
parents: 17292
diff changeset
4948 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
4949 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
4950 # 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
4951 # 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
4952 unfi = repo.unfiltered()
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
4953 getphase = unfi._phasecache.phase
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
4954 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
4955 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
4956 if opts['force']:
22070
c1ca47204590 phase: add a transaction argument to retractboundary
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22069
diff changeset
4957 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
4958 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
4959 finally:
22050
56ccd95b49c6 phase: wrap `hg phases` phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22039
diff changeset
4960 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
4961 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
4962 lock.release()
22892
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
4963 getphase = unfi._phasecache.phase
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
4964 newdata = [getphase(unfi, r) for r in unfi]
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
4965 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
4966 cl = unfi.changelog
16715
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4967 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
4968 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
4969 if rejected:
20093
1dee888b22f7 phase: better error message when --force is needed
Martin Geisler <martin@geisler.net>
parents: 19997
diff changeset
4970 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
4971 'phase, use --force\n') % len(rejected))
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4972 ret = 1
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4973 if changes:
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4974 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
4975 if ret:
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4976 ui.status(msg)
15906
aad565319fa3 phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 15877
diff changeset
4977 else:
16715
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4978 ui.note(msg)
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4979 else:
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4980 ui.warn(_('no phases changed\n'))
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4981 ret = 1
15968
bf87b6b95ce5 phase: alway return a value
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 15959
diff changeset
4982 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
4983
5224
20817af258d8 pull -u: if "url#rev" was given, update to rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 5222
diff changeset
4984 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
4985 if modheads == 0:
16107
a3dcc59054ca pull: backout change to return code
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
4986 return
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
4987 if optupdate:
19523
f37b5a17e6a0 bookmarks: pull --update updates to active bookmark if it moved (issue4007)
Kevin Bullock <kbullock@ringworld.org>
parents: 19496
diff changeset
4988 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
4989 try:
16019
eb85d5f89fef bookmarks: move current bookmark on update -u and bare pull -u (issue3222)
Matt Mackall <mpm@selenic.com>
parents: 16010
diff changeset
4990 ret = hg.update(repo, checkout)
14485
610873cf064a Make pull -u behave like pull && update
Brendan Cully <brendan@kublai.com>
parents: 14466
diff changeset
4991 except util.Abort, inst:
16230
d4d35fd0889d update: don't translate the abort message twice
Javi Merino <cibervicho@gmail.com>
parents: 16219
diff changeset
4992 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
4993 if inst.hint:
a9abdb168425 pull: for pull --update with failed update, print hint if any
Siddharth Agarwal <sid0@fb.com>
parents: 19757
diff changeset
4994 ui.warn(_("(%s)\n") % inst.hint)
14485
610873cf064a Make pull -u behave like pull && update
Brendan Cully <brendan@kublai.com>
parents: 14466
diff changeset
4995 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
4996 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
4997 if bookmarks.update(repo, [movemarkfrom], repo['.'].node()):
eb85d5f89fef bookmarks: move current bookmark on update -u and bare pull -u (issue3222)
Matt Mackall <mpm@selenic.com>
parents: 16010
diff changeset
4998 ui.status(_("updating bookmark %s\n") % repo._bookmarkcurrent)
eb85d5f89fef bookmarks: move current bookmark on update -u and bare pull -u (issue3222)
Matt Mackall <mpm@selenic.com>
parents: 16010
diff changeset
4999 return ret
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
5000 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
5001 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
5002 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
5003 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
5004 elif currentbranchheads > 1:
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
5005 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
5006 "merge)\n"))
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
5007 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
5008 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
5009 else:
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
5010 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
5011
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5012 @command('^pull',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5013 [('u', 'update', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5014 _('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
5015 ('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
5016 ('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
5017 ('B', 'bookmark', [], _("bookmark to pull"), _('BOOKMARK')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5018 ('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
5019 _('BRANCH')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5020 ] + remoteopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5021 _('[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]'))
404
a1ecef497721 [PATCH] Unintuive use
mpm@selenic.com
parents: 403
diff changeset
5022 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
5023 """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
5024
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
5025 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
5026
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5027 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
5028 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
5029 -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
5030 project in the working directory.
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
5031
11193
687c7d395f20 Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents: 11185
diff changeset
5032 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
5033 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
5034 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
5035 -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
5036
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
5037 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
5038 See :hg:`help urls` for more information.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5039
16107
a3dcc59054ca pull: backout change to return code
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
5040 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
5041 """
10379
a78bfaf988e1 add -b/--branch option to clone, bundle, incoming, outgoing, pull, push
Sune Foldager <cryo@cyanite.org>
parents: 10376
diff changeset
5042 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
5043 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
5044 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
5045 try:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5046 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
5047 opts.get('rev'))
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5048
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5049 remotebookmarks = other.listkeys('bookmarks')
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5050
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5051 if opts.get('bookmark'):
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5052 if not revs:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5053 revs = []
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5054 for b in opts['bookmark']:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5055 if b not in remotebookmarks:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5056 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
5057 revs.append(remotebookmarks[b])
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5058
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5059 if revs:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5060 try:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5061 revs = [other.lookup(rev) for rev in revs]
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5062 except error.CapabilityError:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5063 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
5064 "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
5065 raise util.Abort(err)
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5066
22694
21d5416b8a8a commands: directly use exchange.pull
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22677
diff changeset
5067 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
5068 force=opts.get('force'),
21d5416b8a8a commands: directly use exchange.pull
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22677
diff changeset
5069 bookmarks=opts.get('bookmark', ())).cgresult
20576
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5070 if checkout:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5071 checkout = str(repo.changelog.rev(other.lookup(checkout)))
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5072 repo._subtoppath = source
5259
65dc707606ed Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 5248
diff changeset
5073 try:
20576
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5074 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
5075
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5076 finally:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5077 del repo._subtoppath
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5078
12852
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5079 finally:
20576
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
5080 other.close()
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5081 return ret
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5082
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5083 @command('^push',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5084 [('f', 'force', None, _('force push')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5085 ('r', 'rev', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5086 _('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
5087 _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5088 ('B', 'bookmark', [], _("bookmark to push"), _('BOOKMARK')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5089 ('b', 'branch', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5090 _('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
5091 ('', '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
5092 ] + remoteopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5093 _('[-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
5094 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
5095 """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
5096
11217
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5097 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
5098 destination.
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5099
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5100 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
5101 in the destination repository from the current one.
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5102
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5103 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
5104 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
5105 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
5106 before pushing.
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5107
11219
39a7f69a0a9a commands: document --new-branch flag for push
Martin Geisler <mg@aragost.com>
parents: 11218
diff changeset
5108 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
5109 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
5110 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
5111
19935
4f53de036af8 push: add more detailed explanation about "--force" to online help document
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19919
diff changeset
5112 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
5113
19941
2bf99bc5077a help: minor tweak to push help
Matt Mackall <mpm@selenic.com>
parents: 19935
diff changeset
5114 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
5115 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
5116 almost always cause confusion for collaborators.
11217
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5117
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5118 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
5119 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
5120
17190
d99d0b559084 bookmarks: document behavior of -B/--bookmark in help
Augie Fackler <raf@durin42.com>
parents: 17188
diff changeset
5121 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
5122 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
5123 repository.
d99d0b559084 bookmarks: document behavior of -B/--bookmark in help
Augie Fackler <raf@durin42.com>
parents: 17188
diff changeset
5124
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
5125 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
5126 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
5127
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5128 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
5129 """
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5130
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5131 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
5132 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
5133 for b in opts['bookmark']:
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5134 # 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
5135 if b in repo._bookmarks:
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5136 opts.setdefault('rev', []).append(b)
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5137 else:
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5138 # 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
5139 # 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
5140 opts.setdefault('rev', []).append("null")
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5141
10365
d757bc0c7865 interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents: 10364
diff changeset
5142 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
5143 dest, branches = hg.parseurl(dest, opts.get('branch'))
14076
924c82157d46 url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents: 14073
diff changeset
5144 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
5145 revs, checkout = hg.addbranchrevs(repo, repo, branches, opts.get('rev'))
20558
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5146 try:
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5147 other = hg.peer(repo, opts, dest)
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5148 except error.RepoError:
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5149 if dest == "default-push":
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5150 raise util.Abort(_("default repository not configured!"),
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5151 hint=_('see the "path" section in "hg help config"'))
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5152 else:
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5153 raise
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5154
4478
b2b55acbacdd Add support for url#id syntax
Matt Mackall <mpm@selenic.com>
parents: 4474
diff changeset
5155 if revs:
17168
e058f4eec69c push: accept revset argument for --rev
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 17149
diff changeset
5156 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
5157 if not revs:
69bd0ec2f9be commands.push: abort when revisions evaluate to empty set (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24421
diff changeset
5158 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
5159 hint=_("use different revision arguments"))
8815
e87b0fc4750b subrepo: basic push support
Matt Mackall <mpm@selenic.com>
parents: 8812
diff changeset
5160
12852
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5161 repo._subtoppath = dest
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5162 try:
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5163 # 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
5164 c = repo['']
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5165 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
5166 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
5167 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
5168 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
5169 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
5170 finally:
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5171 del repo._subtoppath
22617
1625770c2ce1 push: use `exchange.push` in `commands.push`
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22594
diff changeset
5172 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
5173 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
5174 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
5175
1625770c2ce1 push: use `exchange.push` in `commands.push`
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22594
diff changeset
5176 result = not pushop.cgresult
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5177
22625
62ab9ca90b36 push: perform bookmark export in the push function
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22623
diff changeset
5178 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
5179 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
5180 result = 2
22625
62ab9ca90b36 push: perform bookmark export in the push function
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22623
diff changeset
5181 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
5182 result = 2
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5183
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5184 return result
319
9ab17e83bce3 stopgap hg push support
mpm@selenic.com
parents: 317
diff changeset
5185
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5186 @command('recover', [])
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
5187 def recover(ui, repo):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5188 """roll back an interrupted transaction
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5189
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5190 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
5191
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
5192 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
5193 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
5194 suggests it.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5195
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5196 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
5197 """
1516
0b1b029b4de3 Automatically run "verify" whenever we run "recover"
Matt Mackall <mpm@selenic.com>
parents: 1514
diff changeset
5198 if repo.recover():
2778
fdc232d8a193 Move repo.verify
Matt Mackall <mpm@selenic.com>
parents: 2776
diff changeset
5199 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
5200 return 1
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
5201
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5202 @command('^remove|rm',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5203 [('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
5204 ('f', 'force', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5205 _('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
5206 ] + subrepoopts + walkopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5207 _('[OPTION]... FILE...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5208 inferrepo=True)
2179
520dd3d28e9b add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2175
diff changeset
5209 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
5210 """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
5211
15114
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5212 Schedule the indicated files for removal from the current branch.
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5213
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5214 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
5215 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
5216 files, see :hg:`forget`.
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5217
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5218 .. container:: verbose
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5219
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5220 -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
5221 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
5222 can be used to remove files from the next revision without
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5223 deleting them from the working directory.
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5224
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5225 The following table details the behavior of remove for different
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5226 file states (columns) and option combinations (rows). The file
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5227 states are Added [A], Clean [C], Modified [M] and Missing [!]
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5228 (as reported by :hg:`status`). The actions are Warn, Remove
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5229 (from branch) and Delete (from disk):
15037
df47381b41d6 minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents: 15023
diff changeset
5230
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
5231 ========= == == == ==
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
5232 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
5233 ========= == == == ==
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
5234 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
5235 -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
5236 -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
5237 -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
5238 ========= == == == ==
2309
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
5239
15114
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5240 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
5241 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
5242
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5243 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
5244 """
6346
8e3b651382f5 improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6336
diff changeset
5245
8e3b651382f5 improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6336
diff changeset
5246 after, force = opts.get('after'), opts.get('force')
8e3b651382f5 improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6336
diff changeset
5247 if not pats and not after:
2179
520dd3d28e9b add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2175
diff changeset
5248 raise util.Abort(_('no files specified'))
6346
8e3b651382f5 improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6336
diff changeset
5249
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
5250 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
5251 subrepos = opts.get('subrepos')
4165cfd67519 remove: recurse into subrepositories with --subrepos/-S flag
Matt Harbison <matt_harbison@yahoo.com>
parents: 23319
diff changeset
5252 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
5253
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5254 @command('rename|move|mv',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5255 [('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
5256 ('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
5257 ] + walkopts + dryrunopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5258 _('[OPTION]... SOURCE... DEST'))
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
5259 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
5260 """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
5261
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
5262 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
5263 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
5264 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
5265
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5266 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
5267 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
5268 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
5269
7807
bd8f44638847 help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents: 7765
diff changeset
5270 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
5271 before that, see :hg:`revert`.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5272
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5273 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
5274 """
4914
9a2a73ea6135 repo locks: use True/False
Matt Mackall <mpm@selenic.com>
parents: 4906
diff changeset
5275 wlock = repo.wlock(False)
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
5276 try:
5610
2493a478f395 copy: handle rename internally
Matt Mackall <mpm@selenic.com>
parents: 5589
diff changeset
5277 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
5278 finally:
8109
496ae1ea4698 switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents: 8088
diff changeset
5279 wlock.release()
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
5280
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5281 @command('resolve',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5282 [('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
5283 ('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
5284 ('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
5285 ('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
5286 ('n', 'no-status', None, _('hide status prefix'))]
24127
4cb8002658d6 resolve: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 24126
diff changeset
5287 + mergetoolopts + walkopts + formatteropts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5288 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5289 inferrepo=True)
6518
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5290 def resolve(ui, repo, *pats, **opts):
11836
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5291 """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
5292
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5293 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
5294 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
5295 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
5296 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
5297 :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
5298 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
5299 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
5300
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5301 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
5302
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12803
diff changeset
5303 - :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
5304 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
5305 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
5306 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
5307 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
5308 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
5309 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
5310
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5311 - :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
5312 (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
5313 to mark all unresolved files.
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5314
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5315 - :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
5316 default is to mark all resolved files.
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5317
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5318 - :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
5319 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
5320
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5321 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
5322 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
5323 commit after a conflicting merge.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5324
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5325 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
5326 """
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5327
9646
5b001f534452 commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents: 9645
diff changeset
5328 all, mark, unmark, show, nostatus = \
5b001f534452 commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents: 9645
diff changeset
5329 [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
5330
5a14a8f3b909 resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents: 7449
diff changeset
5331 if (show and (mark or unmark)) or (mark and unmark):
6518
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5332 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
5333 if pats and all:
5a14a8f3b909 resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents: 7449
diff changeset
5334 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
5335 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
5336 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
5337 hint=('use --all to remerge all files'))
6518
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5338
24126
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5339 if show:
24127
4cb8002658d6 resolve: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 24126
diff changeset
5340 fm = ui.formatter('resolve', opts)
24126
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5341 ms = mergemod.mergestate(repo)
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5342 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
5343 for f in ms:
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5344 if not m(f):
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5345 continue
24127
4cb8002658d6 resolve: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 24126
diff changeset
5346 l = 'resolve.' + {'u': 'unresolved', 'r': 'resolved'}[ms[f]]
4cb8002658d6 resolve: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 24126
diff changeset
5347 fm.startitem()
4cb8002658d6 resolve: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 24126
diff changeset
5348 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
5349 fm.write('path', '%s\n', f, label=l)
4cb8002658d6 resolve: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 24126
diff changeset
5350 fm.end()
24126
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5351 return 0
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5352
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5353 wlock = repo.wlock()
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5354 try:
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5355 ms = mergemod.mergestate(repo)
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5356
24126
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5357 if not (ms.active() or repo.dirstate.p2() != nullid):
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5358 raise util.Abort(
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5359 _('resolve command not applicable when not merging'))
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5360
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5361 m = scmutil.match(repo[None], pats, opts)
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5362 ret = 0
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5363 didwork = False
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5364
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5365 for f in ms:
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5366 if not m(f):
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5367 continue
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5368
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5369 didwork = True
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5370
24126
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5371 if mark:
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5372 ms.mark(f, "r")
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5373 elif unmark:
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5374 ms.mark(f, "u")
6518
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5375 else:
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5376 wctx = repo[None]
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5377
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5378 # backup pre-resolve (merge uses .orig for its own purposes)
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5379 a = repo.wjoin(f)
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5380 util.copyfile(a, a + ".resolve")
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5381
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5382 try:
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5383 # resolve file
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5384 ui.setconfig('ui', 'forcemerge', opts.get('tool', ''),
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5385 'resolve')
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5386 if ms.resolve(f, wctx):
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5387 ret = 1
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5388 finally:
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5389 ui.setconfig('ui', 'forcemerge', '', 'resolve')
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5390 ms.commit()
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5391
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5392 # replace filemerge's .orig file with our resolve file
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5393 util.rename(a + ".resolve", a + ".orig")
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5394
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5395 ms.commit()
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5396
24126
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5397 if not didwork and pats:
21721
6539c4e9c874 resolve: fix grammar of no matching files message
Matt Mackall <mpm@selenic.com>
parents: 21720
diff changeset
5398 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
5399
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5400 finally:
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5401 wlock.release()
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5402
24126
b4d21bbc2589 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org>
parents: 24125
diff changeset
5403 # 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
5404 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
5405 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
5406
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5407 return ret
7847
30cb79d84352 resolve: keep .orig files
Matt Mackall <mpm@selenic.com>
parents: 7829
diff changeset
5408
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5409 @command('revert',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5410 [('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
5411 ('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
5412 ('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
5413 ('C', 'no-backup', None, _('do not save backup copies of files')),
24359
521fe8287dd5 revert: add flag to make revert interactive
Laurent Charignon <lcharignon@fb.com>
parents: 24309
diff changeset
5414 ('i', 'interactive', None, _('interactively select the changes')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5415 ] + walkopts + dryrunopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5416 _('[OPTION]... [-r REV] [NAME]...'))
1472
3c909a747d7f make revert use standard matcher
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1470
diff changeset
5417 def revert(ui, repo, *pats, **opts):
14540
944d9088da96 revert: rewrite help summary
Matt Mackall <mpm@selenic.com>
parents: 14532
diff changeset
5418 """restore files to their checkout state
5574
d4ec6d61b3ee imported patch rev-help
Matt Mackall <mpm@selenic.com>
parents: 5573
diff changeset
5419
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
5420 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
5421
14541
07ee46a2ece3 revert: simplify usage note
Matt Mackall <mpm@selenic.com>
parents: 14540
diff changeset
5422 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
5423 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
5424 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
5425
14544
586f33cc3cb9 revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents: 14543
diff changeset
5426 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
5427 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
5428 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
5429 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
5430 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
5431 revision.
1811
6cb548cffdf5 resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1804
diff changeset
5432
14544
586f33cc3cb9 revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents: 14543
diff changeset
5433 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
5434 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
5435 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
5436 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
5437 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
5438 related method.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5439
5574
d4ec6d61b3ee imported patch rev-help
Matt Mackall <mpm@selenic.com>
parents: 5573
diff changeset
5440 Modified files are saved with a .orig suffix before reverting.
d4ec6d61b3ee imported patch rev-help
Matt Mackall <mpm@selenic.com>
parents: 5573
diff changeset
5441 To disable these backups, use --no-backup.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5442
14544
586f33cc3cb9 revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents: 14543
diff changeset
5443 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
5444
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5445 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5446 """
2982
890e285c52a1 revert: require --all to revert all files.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2963
diff changeset
5447
11941
4532c44bb62d revert: use opts.get
Xavier Snelgrove <xs@wxs.ca>
parents: 11886
diff changeset
5448 if opts.get("date"):
4532c44bb62d revert: use opts.get
Xavier Snelgrove <xs@wxs.ca>
parents: 11886
diff changeset
5449 if opts.get("rev"):
3814
120be84f33de Add --date support to update and revert
Matt Mackall <mpm@selenic.com>
parents: 3813
diff changeset
5450 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
5451 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
5452
13022
3fd4e4e81382 revert: improve merge advice and favor its error over all
timeless <timeless@gmail.com>
parents: 12968
diff changeset
5453 parent, p2 = repo.dirstate.parents()
14903
a934b9249574 revert: restore check for uncommitted merge (issue2915) (BC)
Matt Mackall <mpm@selenic.com>
parents: 14849
diff changeset
5454 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
5455 # 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
5456 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
5457 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
5458
14726
e0039716f3ea revert: mention update in hint of abort when reverting to non-parent
Adrian Buehlmann <adrian@cadifra.com>
parents: 14725
diff changeset
5459 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
5460
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
5461 if not pats and not opts.get('all'):
14721
4fcde634f5e0 revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents: 14713
diff changeset
5462 msg = _("no files or directories specified")
4fcde634f5e0 revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents: 14713
diff changeset
5463 if p2 != nullid:
4fcde634f5e0 revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents: 14713
diff changeset
5464 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
5465 " 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
5466 raise util.Abort(msg, hint=hint)
6ba51c81ff75 revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents: 14742
diff changeset
5467 dirty = util.any(repo.status())
16304
a740fa28d718 revert: move bulk of revert command from commands to cmdutil
Angel Ezquerra <angel.ezquerra@gmail.com>
parents: 16274
diff changeset
5468 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
5469 if node != parent:
6ba51c81ff75 revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents: 14742
diff changeset
5470 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
5471 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
5472 " 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
5473 else:
e0039716f3ea revert: mention update in hint of abort when reverting to non-parent
Adrian Buehlmann <adrian@cadifra.com>
parents: 14725
diff changeset
5474 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
5475 " 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
5476 elif dirty:
6ba51c81ff75 revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents: 14742
diff changeset
5477 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
5478 else:
6ba51c81ff75 revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents: 14742
diff changeset
5479 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
5480 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
5481
16304
a740fa28d718 revert: move bulk of revert command from commands to cmdutil
Angel Ezquerra <angel.ezquerra@gmail.com>
parents: 16274
diff changeset
5482 return cmdutil.revert(ui, repo, ctx, (parent, p2), *pats, **opts)
588
0c3bae18403b [PATCH] hg revert
mpm@selenic.com
parents: 582
diff changeset
5483
15183
59e8bc22506e rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents: 15179
diff changeset
5484 @command('rollback', dryrunopts +
59e8bc22506e rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents: 15179
diff changeset
5485 [('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
5486 def rollback(ui, repo, **opts):
19409
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
5487 """roll back the last transaction (DANGEROUS) (DEPRECATED)
5575
8788ff630c26 imported patch rollback-help
Matt Mackall <mpm@selenic.com>
parents: 5574
diff changeset
5488
19421
b2b08be5f556 rollback: add reference to "hg commit --amend"
Martin Geisler <martin@geisler.net>
parents: 19409
diff changeset
5489 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
5490 mistakes in the last commit.
b2b08be5f556 rollback: add reference to "hg commit --amend"
Martin Geisler <martin@geisler.net>
parents: 19409
diff changeset
5491
5575
8788ff630c26 imported patch rollback-help
Matt Mackall <mpm@selenic.com>
parents: 5574
diff changeset
5492 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
5493 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
5494 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
5495 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
5496 the working directory.
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
5497
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
5498 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
5499 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
5500 repository.
b558c9fa39c1 rollback: split off command example paragraph in help
Adrian Buehlmann <adrian@cadifra.com>
parents: 17045
diff changeset
5501
17142
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5502 .. container:: verbose
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5503
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5504 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
5505 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
5506
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5507 - commit
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5508 - import
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5509 - pull
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5510 - 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
5511 - unbundle
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5512
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5513 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
5514 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
5515 override this protection.
15183
59e8bc22506e rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents: 15179
diff changeset
5516
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
5517 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
5518 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
5519 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
5520 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
5521 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
5522 may fail if a rollback is performed.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5523
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5524 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
5525 """
15183
59e8bc22506e rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents: 15179
diff changeset
5526 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
5527 force=opts.get('force'))
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
5528
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5529 @command('root', [])
468
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
5530 def root(ui, repo):
8026
683d8ebcf434 expand "dir" to "directory" in help texts
Martin Geisler <mg@lazybytes.net>
parents: 8021
diff changeset
5531 """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
5532
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5533 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
5534
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5535 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5536 """
468
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
5537 ui.write(repo.root + "\n")
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
5538
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5539 @command('^serve',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5540 [('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
5541 _('FILE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5542 ('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
5543 ('', '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
5544 ('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
5545 # 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
5546 ('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
5547 ('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
5548 _('ADDR')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5549 ('', '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
5550 _('PREFIX')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5551 ('n', 'name', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5552 _('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
5553 ('', 'web-conf', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5554 _('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
5555 ('', '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
5556 _('FILE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5557 ('', '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
5558 ('', '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
5559 ('', 'cmdserver', '', _('for remote clients'), _('MODE')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5560 ('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
5561 ('', 'style', '', _('template style to use'), _('STYLE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5562 ('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
5563 ('', 'certificate', '', _('SSL certificate file'), _('FILE'))],
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
5564 _('[OPTION]...'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
5565 optionalrepo=True)
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
5566 def serve(ui, repo, **opts):
10889
e25c450c351e commands: improve some command summaries
Matt Mackall <mpm@selenic.com>
parents: 10882
diff changeset
5567 """start stand-alone webserver
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5568
11102
275198bc904a commands: explain that "hg serve" is mostly for ad-hoc sharing
Martin Geisler <mg@lazybytes.net>
parents: 11089
diff changeset
5569 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
5570 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
5571 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
5572 longer periods of time.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5573
11103
d29bd98ebff6 commands: explain that "hg serve" does not do authentication
Martin Geisler <mg@lazybytes.net>
parents: 11102
diff changeset
5574 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
5575 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
5576 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
5577 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
5578 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
5579
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5580 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
5581 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
5582 files.
10629
d3f27d15c9cb serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents: 10617
diff changeset
5583
d3f27d15c9cb serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents: 10617
diff changeset
5584 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
5585 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
5586 number it uses.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5587
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5588 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5589 """
624
876333a295ff Add an sshrepository class and hg serve --stdio
Matt Mackall <mpm@selenic.com>
parents: 618
diff changeset
5590
14647
2e9f379de0ac serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents: 14645
diff changeset
5591 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
5592 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
5593
21818
448714b79d9a serve: inline checkrepo() that is used only when --stdio is specified
Yuya Nishihara <yuya@tcha.org>
parents: 21817
diff changeset
5594 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
5595 if repo is None:
16935
f635c476fa3f serve: lowercase "no repo here" message
Martin Geisler <mg@aragost.com>
parents: 16934
diff changeset
5596 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
5597 " (.hg not found)"))
2396
8d44649df03b refactor ssh server.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2392
diff changeset
5598 s = sshserver.sshserver(ui, repo)
8d44649df03b refactor ssh server.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2392
diff changeset
5599 s.serve_forever()
2363
fa4c11751367 Give a response to unknown SSH commands
Matt Mackall <mpm@selenic.com>
parents: 2362
diff changeset
5600
14647
2e9f379de0ac serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents: 14645
diff changeset
5601 if opts["cmdserver"]:
22989
dc8803ce3dfe cmdserver: switch service objects by mode
Yuya Nishihara <yuya@tcha.org>
parents: 22988
diff changeset
5602 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
5603 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
5604
10635
27027bee318e serve: fix port config
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10632
diff changeset
5605 # 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
5606 if opts.get('port'):
12076
49463314c24f mail/hgweb: support service names for ports (issue2350)
Brodie Rao <brodie@bitheap.org>
parents: 12070
diff changeset
5607 opts['port'] = util.getport(opts.get('port'))
10635
27027bee318e serve: fix port config
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10632
diff changeset
5608
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5609 if repo:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5610 baseui = repo.baseui
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5611 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5612 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
5613 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
5614 " accesslog errorlog certificate encoding")
987
bfe12654764d hgweb: change startup argument processing
mpm@selenic.com
parents: 981
diff changeset
5615 for o in optlist.split():
10630
9947e6b008bb serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10629
diff changeset
5616 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
5617 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
5618 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
5619 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
5620 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
5621 repo.ui.setconfig("web", o, val, 'serve')
987
bfe12654764d hgweb: change startup argument processing
mpm@selenic.com
parents: 981
diff changeset
5622
11003
aca9a7cf2c9a serve: webdir_conf -> webconf
Matt Mackall <mpm@selenic.com>
parents: 10993
diff changeset
5623 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
5624 if not o:
7bb10d3dbcd6 hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents: 11003
diff changeset
5625 if not repo:
16935
f635c476fa3f serve: lowercase "no repo here" message
Martin Geisler <mg@aragost.com>
parents: 16934
diff changeset
5626 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
5627 " 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
5628 o = repo
11004
7bb10d3dbcd6 hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents: 11003
diff changeset
5629
18827
6793ae6e36dc serve: pass the prepared baseui to hgweb
Simon Heimberg <simohe@besonet.ch>
parents: 18799
diff changeset
5630 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
5631 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
5632 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
5633
19919
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5634 class httpservice(object):
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5635 def __init__(self, ui, app, opts):
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5636 self.ui = ui
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5637 self.app = app
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5638 self.opts = opts
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5639
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5640 def init(self):
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5641 util.setsignalhandler()
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5642 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
5643
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5644 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
5645 return
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5646
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5647 if self.httpd.prefix:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5648 prefix = self.httpd.prefix.strip('/') + '/'
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5649 else:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5650 prefix = ''
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5651
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5652 port = ':%d' % self.httpd.port
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5653 if port == ':80':
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5654 port = ''
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5655
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5656 bindaddr = self.httpd.addr
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5657 if bindaddr == '0.0.0.0':
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5658 bindaddr = '*'
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5659 elif ':' in bindaddr: # IPv6
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5660 bindaddr = '[%s]' % bindaddr
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5661
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5662 fqaddr = self.httpd.fqaddr
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5663 if ':' in fqaddr:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5664 fqaddr = '[%s]' % fqaddr
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5665 if self.opts['port']:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5666 write = self.ui.status
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5667 else:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5668 write = self.ui.write
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5669 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
5670 (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
5671 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
5672
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5673 def run(self):
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5674 self.httpd.serve_forever()
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5675
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5676
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5677 @command('^status|st',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5678 [('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
5679 ('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
5680 ('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
5681 ('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
5682 ('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
5683 ('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
5684 ('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
5685 ('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
5686 ('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
5687 ('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
5688 ('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
5689 ('', 'rev', [], _('show difference from revision'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5690 ('', '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
5691 ] + walkopts + subrepoopts + formatteropts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5692 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5693 inferrepo=True)
731
91ca3afab8e8 Add name matching to status command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 729
diff changeset
5694 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
5695 """show changed files in the working directory
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
5696
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
5697 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
5698 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
5699 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
5700 -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
5701 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
5702 options -mardu are used.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5703
6201
305d4450036a Extend/correct acc40572da5b regarding -qA and ignored files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6200
diff changeset
5704 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
5705 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
5706
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
5707 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
5708
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
5709 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
5710 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
5711 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
5712 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
5713
3467
2b3b703b3a2b Add --rev option to status
Brendan Cully <brendan@kublai.com>
parents: 3465
diff changeset
5714 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
5715 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
5716 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
5717 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
5718
9157
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5719 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
5720
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5721 M = modified
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5722 A = added
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5723 R = removed
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5724 C = clean
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5725 ! = 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
5726 ? = not tracked
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5727 I = ignored
20660
19e9478c1a22 status: improve explanation of ' ' status
Matt Mackall <mpm@selenic.com>
parents: 20650
diff changeset
5728 = origin of the previous file (with --copies)
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5729
15119
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5730 .. container:: verbose
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5731
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5732 Examples:
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5733
15633
dc5d1394ecd1 status: add missing ":" to help text
Martin Geisler <mg@lazybytes.net>
parents: 15615
diff changeset
5734 - 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
5735 changeset::
15119
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5736
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5737 hg status --rev 9353
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5738
24456
a05c6b400616 status: add relative directory help text (issue3835)
Yung-Jin (Joey) Hu <yungjinhu@gmail.com>
parents: 24455
diff changeset
5739 - 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
5740 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
5741
a05c6b400616 status: add relative directory help text (issue3835)
Yung-Jin (Joey) Hu <yungjinhu@gmail.com>
parents: 24455
diff changeset
5742 hg status re:
a05c6b400616 status: add relative directory help text (issue3835)
Yung-Jin (Joey) Hu <yungjinhu@gmail.com>
parents: 24455
diff changeset
5743
15119
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5744 - show all changes including copies in an existing changeset::
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5745
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5746 hg status --copies --change 9353
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5747
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5748 - 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
5749
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5750 hg status -an0
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5751
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5752 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5753 """
312
09375250eb31 Optimize diff and status in subdirectories
mpm@selenic.com
parents: 310
diff changeset
5754
10014
54cd28258ea7 status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents: 9983
diff changeset
5755 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
5756 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
5757
54cd28258ea7 status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents: 9983
diff changeset
5758 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
5759 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
5760 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
5761 elif change:
15578
db0e277bdd37 status: support revsets with --change
Patrick Mezard <pmezard@gmail.com>
parents: 15528
diff changeset
5762 node2 = scmutil.revsingle(repo, change, None).node()
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
5763 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
5764 else:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
5765 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
5766
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5767 if pats:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5768 cwd = repo.getcwd()
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5769 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5770 cwd = ''
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5771
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5772 if opts.get('print0'):
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5773 end = '\0'
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5774 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5775 end = '\n'
6276
c93ca83a3354 status: find copies and renames beyond the working directory
Matt Mackall <mpm@selenic.com>
parents: 6262
diff changeset
5776 copy = {}
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5777 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
5778 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
5779 if opts.get('all'):
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5780 show += ui.quiet and (states[:4] + ['clean']) or states
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5781 if not show:
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5782 if ui.quiet:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5783 show = states[:4]
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5784 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
5785 show = states[:5]
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5786
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
5787 stat = repo.status(node1, node2, scmutil.match(repo[node2], pats, opts),
12166
441a74b8def1 status: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents: 12132
diff changeset
5788 '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
5789 opts.get('subrepos'))
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5790 changestates = zip(states, 'MAR!?IC', stat)
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5791
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
5792 if (opts.get('all') or opts.get('copies')) and not opts.get('no_status'):
15775
91eb4512edd0 copies: rewrite copy detection for non-merge users
Matt Mackall <mpm@selenic.com>
parents: 15774
diff changeset
5793 copy = copies.pathcopies(repo[node1], repo[node2])
6276
c93ca83a3354 status: find copies and renames beyond the working directory
Matt Mackall <mpm@selenic.com>
parents: 6262
diff changeset
5794
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5795 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
5796 fmt = '%s' + end
c8709ff57ff2 status: use condwrite to avoid zero-width format string hack
Matt Mackall <mpm@selenic.com>
parents: 17892
diff changeset
5797 showchar = not opts.get('no_status')
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5798
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5799 for state, char, files in changestates:
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5800 if state in show:
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5801 label = 'status.' + state
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5802 for f in files:
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5803 fm.startitem()
17910
c8709ff57ff2 status: use condwrite to avoid zero-width format string hack
Matt Mackall <mpm@selenic.com>
parents: 17892
diff changeset
5804 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
5805 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
5806 if f in copy:
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5807 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
5808 label='status.copied')
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5809 fm.end()
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
5810
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5811 @command('^summary|sum',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5812 [('', 'remote', None, _('check for push and pull'))], '[--remote]')
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5813 def summary(ui, repo, **opts):
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5814 """summarize working directory state
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5815
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5816 This generates a brief summary of the working directory state,
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5817 including parents, branch, commit status, and available updates.
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5818
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5819 With the --remote option, this will check the default paths for
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5820 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
5821
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5822 Returns 0 on success.
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5823 """
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5824
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5825 ctx = repo[None]
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5826 parents = ctx.parents()
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5827 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
5828 marks = []
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5829
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5830 for p in parents:
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5831 # 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
5832 # 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
5833 # i18n: column positioning for "hg summary"
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5834 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
5835 label='log.changeset changeset.%s' % p.phasestr())
10833
d7b601f1e02c commands: retrieve tags from context object
Martin Geisler <mg@lazybytes.net>
parents: 10832
diff changeset
5836 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
5837 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
5838 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
5839 if p.rev() == -1:
d75a309a24b1 summary: add empty repository and no revision checked out hints
Matt Mackall <mpm@selenic.com>
parents: 9617
diff changeset
5840 if not len(repo):
10834
4ab459a6c25c commands: small refactoring in summary
Martin Geisler <mg@lazybytes.net>
parents: 10833
diff changeset
5841 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
5842 else:
10834
4ab459a6c25c commands: small refactoring in summary
Martin Geisler <mg@lazybytes.net>
parents: 10833
diff changeset
5843 ui.write(_(' (no revision checked out)'))
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5844 ui.write('\n')
9618
d75a309a24b1 summary: add empty repository and no revision checked out hints
Matt Mackall <mpm@selenic.com>
parents: 9617
diff changeset
5845 if p.description():
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5846 ui.status(' ' + p.description().splitlines()[0].strip() + '\n',
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5847 label='log.summary')
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5848
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5849 branch = ctx.branch()
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5850 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
5851 # i18n: column positioning for "hg summary"
9873
541218fbad2a summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents: 9857
diff changeset
5852 m = _('branch: %s\n') % branch
541218fbad2a summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents: 9857
diff changeset
5853 if branch != 'default':
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5854 ui.write(m, label='log.branch')
9873
541218fbad2a summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents: 9857
diff changeset
5855 else:
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5856 ui.status(m, label='log.branch')
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5857
14906
7c3c8f37e84f summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents: 14874
diff changeset
5858 if marks:
7c3c8f37e84f summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents: 14874
diff changeset
5859 current = repo._bookmarkcurrent
17892
ba0a1701c81a i18n: add "i18n" comment to column positioning messages of "hg summary"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17887
diff changeset
5860 # i18n: column positioning for "hg summary"
14907
84af56cc673b summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents: 14906
diff changeset
5861 ui.write(_('bookmarks:'), label='log.bookmark')
14906
7c3c8f37e84f summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents: 14874
diff changeset
5862 if current is not None:
18622
f9eebf5629fa summary: show active bookmark even if not at current changeset
Kevin Bullock <kbullock@ringworld.org>
parents: 18621
diff changeset
5863 if current in marks:
14907
84af56cc673b summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents: 14906
diff changeset
5864 ui.write(' *' + current, label='bookmarks.current')
18622
f9eebf5629fa summary: show active bookmark even if not at current changeset
Kevin Bullock <kbullock@ringworld.org>
parents: 18621
diff changeset
5865 marks.remove(current)
f9eebf5629fa summary: show active bookmark even if not at current changeset
Kevin Bullock <kbullock@ringworld.org>
parents: 18621
diff changeset
5866 else:
18623
0027a5cec9d0 summary: add missing space for updated active bookmark display
Matt Mackall <mpm@selenic.com>
parents: 18622
diff changeset
5867 ui.write(' [%s]' % current, label='bookmarks.current')
14907
84af56cc673b summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents: 14906
diff changeset
5868 for m in marks:
17299
e51d4aedace9 check-code: indent 4 spaces in py files
Mads Kiilerich <mads@kiilerich.com>
parents: 17292
diff changeset
5869 ui.write(' ' + m, label='log.bookmark')
14907
84af56cc673b summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents: 14906
diff changeset
5870 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
5871
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5872 status = repo.status(unknown=True)
11088
c4347e48b0d0 summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents: 11078
diff changeset
5873
11331
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
5874 c = repo.dirstate.copies()
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
5875 copied, renamed = [], []
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
5876 for d, s in c.iteritems():
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5877 if s in status.removed:
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5878 status.removed.remove(s)
11331
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
5879 renamed.append(d)
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
5880 else:
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
5881 copied.append(d)
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5882 if d in status.added:
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5883 status.added.remove(d)
11331
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
5884
15856
6bed6cc6d0d0 commands: partial backout of fbb68b382040
Martin Geisler <mg@aragost.com>
parents: 15855
diff changeset
5885 ms = mergemod.mergestate(repo)
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5886 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
5887
c4347e48b0d0 summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents: 11078
diff changeset
5888 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
5889
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5890 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
5891 (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
5892 (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
5893 (ui.label(_('%d renamed'), 'status.copied'), renamed),
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5894 (ui.label(_('%d copied'), 'status.copied'), copied),
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5895 (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
5896 (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
5897 (ui.label(_('%d unresolved'), 'resolve.unresolved'), unresolved),
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5898 (ui.label(_('%d subrepos'), 'status.modified'), subs)]
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5899 t = []
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5900 for l, s in labels:
9607
8e0e0d854b60 commands: do not split a translated string
Martin Geisler <mg@lazybytes.net>
parents: 9603
diff changeset
5901 if s:
8e0e0d854b60 commands: do not split a translated string
Martin Geisler <mg@lazybytes.net>
parents: 9603
diff changeset
5902 t.append(l % len(s))
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5903
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5904 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
5905 cleanworkdir = False
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5906
19482
499fc471296b update: add tracking of interrupted updates (issue3113)
Matt Mackall <mpm@selenic.com>
parents: 19476
diff changeset
5907 if repo.vfs.exists('updatestate'):
499fc471296b update: add tracking of interrupted updates (issue3113)
Matt Mackall <mpm@selenic.com>
parents: 19476
diff changeset
5908 t += _(' (interrupted update)')
499fc471296b update: add tracking of interrupted updates (issue3113)
Matt Mackall <mpm@selenic.com>
parents: 19476
diff changeset
5909 elif len(parents) > 1:
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5910 t += _(' (merge)')
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5911 elif branch != parents[0].branch():
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5912 t += _(' (new branch)')
16720
e825a89de5d7 context: add changectx.closesbranch() method
Brodie Rao <brodie@sf.io>
parents: 16719
diff changeset
5913 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
5914 pnode in repo.branchheads(branch, closed=True)):
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5915 t += _(' (head closed)')
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5916 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
5917 copied or subs):
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5918 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
5919 cleanworkdir = True
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5920 elif pnode not in bheads:
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5921 t += _(' (new branch head)')
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5922
10269
acf001ee5ef8 summary: L10N messages hide clean-ness of workdir from 'hg summary'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 10263
diff changeset
5923 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
5924 # i18n: column positioning for "hg summary"
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5925 ui.status(_('commit: %s\n') % t.strip())
9605
3194227a4158 summary: quieter with -q
Matt Mackall <mpm@selenic.com>
parents: 9604
diff changeset
5926 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
5927 # i18n: column positioning for "hg summary"
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5928 ui.write(_('commit: %s\n') % t.strip())
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5929
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5930 # 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
5931 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
5932 bheads))
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5933
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5934 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
5935 # i18n: column positioning for "hg summary"
9605
3194227a4158 summary: quieter with -q
Matt Mackall <mpm@selenic.com>
parents: 9604
diff changeset
5936 ui.status(_('update: (current)\n'))
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5937 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
5938 # i18n: column positioning for "hg summary"
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5939 ui.write(_('update: %d new changesets (update)\n') % new)
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5940 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
5941 # i18n: column positioning for "hg summary"
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5942 ui.write(_('update: %d new changesets, %d branch heads (merge)\n') %
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5943 (new, len(bheads)))
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5944
19211
3bfd7f1e7485 summary: augment output with info from extensions
Bryan O'Sullivan <bryano@fb.com>
parents: 19209
diff changeset
5945 cmdutil.summaryhooks(ui, repo)
3bfd7f1e7485 summary: augment output with info from extensions
Bryan O'Sullivan <bryano@fb.com>
parents: 19209
diff changeset
5946
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5947 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
5948 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
5949 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5950 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
5951 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
5952 if i:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5953 needsincoming = True
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5954 if o:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5955 needsoutgoing = True
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5956 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
5957 return
21045
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5958
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5959 def getincoming():
10389
6dc25b01e170 fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents: 10384
diff changeset
5960 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
5961 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
5962 try:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5963 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
5964 except error.RepoError:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5965 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
5966 raise
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5967 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
5968 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
5969 if revs:
160d8416e286 summary: make "incoming" information sensitive to branch in URL (issue3830)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18994
diff changeset
5970 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
5971 ui.debug('comparing with %s\n' % util.hidepassword(source))
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5972 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
5973 commoninc = discovery.findcommonincoming(repo, other, heads=revs)
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5974 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
5975 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
5976
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5977 if needsincoming:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5978 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
5979 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5980 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
5981
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5982 def getoutgoing():
10389
6dc25b01e170 fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents: 10384
diff changeset
5983 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
5984 dbranch = branches[0]
10389
6dc25b01e170 fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents: 10384
diff changeset
5985 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
5986 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
5987 try:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5988 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
5989 except error.RepoError:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5990 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
5991 raise
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5992 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
5993 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
5994 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
5995 # 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
5996 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
5997 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5998 dother = sother
18997
4cf09a1bf5b2 summary: clear "commonincoming" also if branches are different
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18996
diff changeset
5999 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
6000 common = None
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6001 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6002 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
6003 if revs:
32843795e9b3 summary: make "outgoing" information sensitive to branch in URL (issue3829)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18963
diff changeset
6004 revs = [repo.lookup(rev) for rev in revs]
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6005 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
6006 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
6007 commoninc=common)
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6008 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
6009 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
6010
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6011 if needsoutgoing:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6012 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
6013 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6014 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
6015
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6016 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
6017 t = []
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6018 if incoming:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
6019 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
6020 o = outgoing.missing
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6021 if o:
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6022 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
6023 other = dother or sother
13454
afc84a879ac8 summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents: 13453
diff changeset
6024 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
6025 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
6026 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
6027 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
6028 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
6029 t.append(_('%d outgoing bookmarks') % counts[1])
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6030
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6031 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
6032 # i18n: column positioning for "hg summary"
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6033 ui.write(_('remote: %s\n') % (', '.join(t)))
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6034 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
6035 # i18n: column positioning for "hg summary"
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6036 ui.status(_('remote: (synced)\n'))
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
6037
21047
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
6038 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
6039 ((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
6040 (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
6041
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6042 @command('tag',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6043 [('f', 'force', None, _('force tag')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6044 ('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
6045 ('r', 'rev', '', _('revision to tag'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6046 ('', 'remove', None, _('remove a tag')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6047 # -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
6048 ('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
6049 ('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
6050 ] + commitopts2,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6051 _('[-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
6052 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
6053 """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
6054
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6055 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
6056
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6057 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
6058 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
6059 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
6060 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
6061
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
6062 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
6063 used.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6064
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6065 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
6066 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
6067 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
6068 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
6069 ".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
6070 repositories).
1c1ca9d393f4 tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents: 13134
diff changeset
6071
1c1ca9d393f4 tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents: 13134
diff changeset
6072 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
6073 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
6074 -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
6075 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
6076
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
6077 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
6078
eb23c876c111 tag: warn users about tag/branch possible name conflicts
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11061
diff changeset
6079 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
6080 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
6081
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6082 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6083 """
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6084 wlock = lock = None
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6085 try:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6086 wlock = repo.wlock()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6087 lock = repo.lock()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6088 rev_ = "."
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6089 names = [t.strip() for t in (name1,) + names]
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6090 if len(names) != len(set(names)):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6091 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
6092 for n in names:
17821
361ab1e2086f scmutil: add bad character checking to checknewlabel
Kevin Bullock <kbullock@ringworld.org>
parents: 17818
diff changeset
6093 scmutil.checknewlabel(repo, n, 'tag')
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6094 if not n:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6095 raise util.Abort(_('tag names cannot consist entirely of '
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6096 'whitespace'))
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6097 if opts.get('rev') and opts.get('remove'):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6098 raise util.Abort(_("--rev and --remove are incompatible"))
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6099 if opts.get('rev'):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6100 rev_ = opts['rev']
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6101 message = opts.get('message')
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6102 if opts.get('remove'):
24306
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
6103 if opts.get('local'):
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
6104 expectedtype = 'local'
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
6105 else:
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
6106 expectedtype = 'global'
6ddc86eedc3b style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24278
diff changeset
6107
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6108 for n in names:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6109 if not repo.tagtype(n):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6110 raise util.Abort(_("tag '%s' does not exist") % n)
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6111 if repo.tagtype(n) != expectedtype:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6112 if expectedtype == 'global':
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6113 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
6114 else:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6115 raise util.Abort(_("tag '%s' is not a local tag") % n)
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6116 rev_ = nullid
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6117 if not message:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6118 # we don't translate commit messages
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6119 message = 'Removed tag %s' % ', '.join(names)
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6120 elif not opts.get('force'):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6121 for n in names:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6122 if n in repo.tags():
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6123 raise util.Abort(_("tag '%s' already exists "
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6124 "(use -f to force)") % n)
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6125 if not opts.get('local'):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6126 p1, p2 = repo.dirstate.parents()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6127 if p2 != nullid:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6128 raise util.Abort(_('uncommitted merge'))
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6129 bheads = repo.branchheads()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6130 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
6131 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
6132 r = scmutil.revsingle(repo, rev_).node()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6133
4213
3be4785f8994 tags: add --remove
Matt Mackall <mpm@selenic.com>
parents: 4179
diff changeset
6134 if not message:
9183
d0225fa2f6c4 do not translate commit messages
Martin Geisler <mg@lazybytes.net>
parents: 9128
diff changeset
6135 # we don't translate commit messages
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6136 message = ('Added tag %s for changeset %s' %
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6137 (', '.join(names), short(r)))
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6138
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6139 date = opts.get('date')
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6140 if date:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6141 date = util.parsedate(date)
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6142
22009
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6143 if opts.get('remove'):
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6144 editform = 'tag.remove'
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6145 else:
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6146 editform = 'tag.add'
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6147 editor = cmdutil.getcommiteditor(editform=editform, **opts)
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6148
17260
e432fb4b4221 tag: don't allow tagging the null revision (issue1915)
Brad Hall <bhall@fb.com>
parents: 17255
diff changeset
6149 # 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
6150 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
6151 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
6152 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
6153
21237
0054a77f49df localrepo: add "editor" argument to "tag()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21200
diff changeset
6154 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
6155 editor=editor)
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6156 finally:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6157 release(lock, wlock)
401
af4848f83e68 From: Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
mpm@selenic.com
parents: 396
diff changeset
6158
22429
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
6159 @command('tags', formatteropts, '')
17912
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6160 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
6161 """list repository tags
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6162
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
6163 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
6164 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
6165
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6166 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6167 """
477
520540fd6b64 Handle errors in .hgtags or hgrc [tags] section more gracefully.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 470
diff changeset
6168
17912
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6169 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
6170 hexfunc = fm.hexfunc
5658
ae3089cefaab Add --verbose support to tags command.
Osku Salerma <osku@iki.fi>
parents: 5657
diff changeset
6171 tagtype = ""
ae3089cefaab Add --verbose support to tags command.
Osku Salerma <osku@iki.fi>
parents: 5657
diff changeset
6172
8210
344751cd8cb8 replace various uses of list.reverse()
Matt Mackall <mpm@selenic.com>
parents: 8209
diff changeset
6173 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
6174 hn = hexfunc(n)
17912
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6175 label = 'tags.normal'
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6176 tagtype = ''
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6177 if repo.tagtype(t) == 'local':
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6178 label = 'tags.local'
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6179 tagtype = 'local'
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6180
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6181 fm.startitem()
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6182 fm.write('tag', '%s', t, label=label)
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6183 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
6184 fm.condwrite(not ui.quiet, 'rev node', fmt,
17912
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6185 repo.changelog.rev(n), hn, label=label)
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6186 fm.condwrite(ui.verbose and tagtype, 'type', ' %s',
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6187 tagtype, label=label)
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6188 fm.plain('\n')
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6189 fm.end()
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
6190
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6191 @command('tip',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6192 [('p', 'patch', None, _('show patch')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6193 ('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
6194 ] + templateopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6195 _('[-p] [-g]'))
1731
251729df9cc6 add -p option to tip. for issue 64.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1728
diff changeset
6196 def tip(ui, repo, **opts):
19403
9013f2930a4a tip: deprecate the tip command
Matt Mackall <mpm@selenic.com>
parents: 19402
diff changeset
6197 """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
6198
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
6199 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
6200 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
6201 recently changed head).
6364
b22b39059722 Make tip help more helpful
Patrick Mezard <pmezard@gmail.com>
parents: 6353
diff changeset
6202
6367
51984a2413f2 Remove unexpected "Alternately" word from tip help.
Patrick Mezard <pmezard@gmail.com>
parents: 6364
diff changeset
6203 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
6204 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
6205 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
6206 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
6207
19403
9013f2930a4a tip: deprecate the tip command
Matt Mackall <mpm@selenic.com>
parents: 19402
diff changeset
6208 This command is deprecated, please use :hg:`heads` instead.
9013f2930a4a tip: deprecate the tip command
Matt Mackall <mpm@selenic.com>
parents: 19402
diff changeset
6209
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6210 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6211 """
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
6212 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
6213 displayer.show(repo['tip'])
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
6214 displayer.close()
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
6215
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6216 @command('unbundle',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6217 [('u', 'update', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6218 _('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
6219 _('[-u] FILE...'))
4699
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6220 def unbundle(ui, repo, fname1, *fnames, **opts):
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6221 """apply one or more changegroup files
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6222
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6223 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
6224 bundle command.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6225
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6226 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
6227 """
4699
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6228 fnames = (fname1,) + fnames
6180
d98ef03893e6 commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents: 6178
diff changeset
6229
8109
496ae1ea4698 switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents: 8088
diff changeset
6230 lock = repo.lock()
6180
d98ef03893e6 commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents: 6178
diff changeset
6231 try:
d98ef03893e6 commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents: 6178
diff changeset
6232 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
6233 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
6234 gen = exchange.readbundle(ui, f, fname)
23891
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6235 if isinstance(gen, bundle2.unbundle20):
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6236 tr = repo.transaction('unbundle')
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6237 try:
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6238 op = bundle2.processbundle(repo, gen, lambda: tr)
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6239 tr.close()
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6240 finally:
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6241 if tr:
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6242 tr.release()
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6243 changes = [r.get('result', 0)
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6244 for r in op.records['changegroup']]
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6245 modheads = changegroup.combineresults(changes)
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6246 else:
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6247 modheads = changegroup.addchangegroup(repo, gen, 'unbundle',
5827ad0b849e unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com>
parents: 23888
diff changeset
6248 'bundle:' + fname)
6180
d98ef03893e6 commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents: 6178
diff changeset
6249 finally:
8109
496ae1ea4698 switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents: 8088
diff changeset
6250 lock.release()
22091
f72b71ba756b unbundle: don't advance bookmarks (issue4322) (BC)
Matt Mackall <mpm@selenic.com>
parents: 21959
diff changeset
6251
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
6252 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
6253
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6254 @command('^update|up|checkout|co',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6255 [('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
6256 ('c', 'check', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6257 _('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
6258 ('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
6259 ('r', 'rev', '', _('revision'), _('REV'))
61151f429a5f update: introduce --tool for controlling the merge tool
Mads Kiilerich <madski@unity3d.com>
parents: 21541
diff changeset
6260 ] + mergetoolopts,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6261 _('[-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
6262 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
6263 tool=None):
10889
e25c450c351e commands: improve some command summaries
Matt Mackall <mpm@selenic.com>
parents: 10882
diff changeset
6264 """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
6265
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
6266 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
6267 changeset. If no changeset is specified, update to the tip of the
15957
12a1c9e92d66 update: note ways to avoid moving bookmark
Kevin Bullock <kbullock@ringworld.org>
parents: 15950
diff changeset
6268 current named branch and move the current bookmark (see :hg:`help
12a1c9e92d66 update: note ways to avoid moving bookmark
Kevin Bullock <kbullock@ringworld.org>
parents: 15950
diff changeset
6269 bookmarks`).
12688
8c034a825cfe help: improve description of update --check
Kevin Bullock <kbullock@ringworld.org>
parents: 12618
diff changeset
6270
17343
e560ecb755fe update: fix typo in help text
Adrian Buehlmann <adrian@cadifra.com>
parents: 17322
diff changeset
6271 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
6272 changeset (see :hg:`help parents`).
c9e6c6ae4ea1 update: move help text about parent revision higher up
Adrian Buehlmann <adrian@cadifra.com>
parents: 17142
diff changeset
6273
16877
6e578e77cbe6 update: fix help regarding update to ancestor
Kevin Bullock <kbullock@ringworld.org>
parents: 16869
diff changeset
6274 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
6275 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
6276 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
6277 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
6278 changeset.
fe1b19bfe75b help: describe new cross-branch behavior in update help text, plus cleanups
Stuart W Marks <smarks@smarks.org>
parents: 9714
diff changeset
6279
17218
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6280 .. container:: verbose
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6281
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6282 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
6283 uncommitted changes:
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6284
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6285 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
6286 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
6287 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
6288 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
6289 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
6290 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
6291 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
6292 are preserved.
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6293
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6294 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
6295 uncommitted changes are preserved.
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6296
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6297 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
6298 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
6299
17144
71e36b3d2cc4 update: mention how update can be used to cancel an uncommitted merge
Adrian Buehlmann <adrian@cadifra.com>
parents: 17143
diff changeset
6300 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
6301 :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
6302
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
6303 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
6304 :hg:`clone -U`).
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
6305
14729
94eea58da2a3 update: do not use the term 'update' when mentioning reverting one file
Adrian Buehlmann <adrian@cadifra.com>
parents: 14726
diff changeset
6306 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
6307 :hg:`revert [-r REV] NAME`.
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
6308
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
6309 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
6310
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6311 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
6312 """
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6313 if rev and node:
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6314 raise util.Abort(_("please specify just one revision"))
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6315
13568
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 13477
diff changeset
6316 if rev is None or rev == '':
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6317 rev = node
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6318
19475
e24531a23ae4 update: clear any clearable unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19469
diff changeset
6319 cmdutil.clearunfinished(repo)
e24531a23ae4 update: clear any clearable unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19469
diff changeset
6320
15935
6c97eb445341 bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents: 15912
diff changeset
6321 # with no argument, we also move the current bookmark, if any
19523
f37b5a17e6a0 bookmarks: pull --update updates to active bookmark if it moved (issue4007)
Kevin Bullock <kbullock@ringworld.org>
parents: 19496
diff changeset
6322 rev, movemarkfrom = bookmarks.calculateupdate(ui, repo, rev)
15935
6c97eb445341 bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents: 15912
diff changeset
6323
13415
25b5694b9337 update: preserve possible bookmark name to set current bookmark correctly
David Soria Parra <dsp@php.net>
parents: 13407
diff changeset
6324 # if we defined a bookmark, we have to remember the original bookmark name
25b5694b9337 update: preserve possible bookmark name to set current bookmark correctly
David Soria Parra <dsp@php.net>
parents: 13407
diff changeset
6325 brev = rev
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
6326 rev = scmutil.revsingle(repo, rev, rev).rev()
12726
61c0df2b089a update: use revsingle to enable use of revsets as update targets (issue1993)
Augie Fackler <durin42@gmail.com>
parents: 12705
diff changeset
6327
9450
e78967d3dd6f commands: forbid 'hg update --check --clean'
Stuart W Marks <smarks@smarks.org>
parents: 9429
diff changeset
6328 if check and clean:
9451
3e673c988c85 commands: expand -c and -C in update error message
Martin Geisler <mg@lazybytes.net>
parents: 9450
diff changeset
6329 raise util.Abort(_("cannot specify both -c/--check and -C/--clean"))
9450
e78967d3dd6f commands: forbid 'hg update --check --clean'
Stuart W Marks <smarks@smarks.org>
parents: 9429
diff changeset
6330
16092
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6331 if date:
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6332 if rev is not None:
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6333 raise util.Abort(_("you can't specify a revision and a date"))
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6334 rev = cmdutil.finddate(ui, repo, date)
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6335
9450
e78967d3dd6f commands: forbid 'hg update --check --clean'
Stuart W Marks <smarks@smarks.org>
parents: 9429
diff changeset
6336 if check:
8855
f331de880cbb update: add --check option
Matt Mackall <mpm@selenic.com>
parents: 8849
diff changeset
6337 c = repo[None]
17849
6da47b655d97 update: check for missing files with --check (issue3595)
Matt Mackall <mpm@selenic.com>
parents: 17848
diff changeset
6338 if c.dirty(merge=False, branch=False, missing=True):
19801
41abe2e3e3b7 update: standardize error message for dirty update --check
Siddharth Agarwal <sid0@fb.com>
parents: 19797
diff changeset
6339 raise util.Abort(_("uncommitted changes"))
16490
c8ee34917045 update: fix "not rev" vs "rev is None"
Patrick Mezard <patrick@mezard.eu>
parents: 16473
diff changeset
6340 if rev is None:
16092
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6341 rev = repo[repo[None].branch()].rev()
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6342
21552
61151f429a5f update: introduce --tool for controlling the merge tool
Mads Kiilerich <madski@unity3d.com>
parents: 21541
diff changeset
6343 repo.ui.setconfig('ui', 'forcemerge', tool, 'update')
61151f429a5f update: introduce --tool for controlling the merge tool
Mads Kiilerich <madski@unity3d.com>
parents: 21541
diff changeset
6344
16092
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6345 if clean:
13367
cef73cd9c268 bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents: 13366
diff changeset
6346 ret = hg.clean(repo, rev)
2808
30f59f4a327e Introduce update helper functions: update, merge, clean, and revert
Matt Mackall <mpm@selenic.com>
parents: 2806
diff changeset
6347 else:
13367
cef73cd9c268 bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents: 13366
diff changeset
6348 ret = hg.update(repo, rev)
cef73cd9c268 bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents: 13366
diff changeset
6349
15935
6c97eb445341 bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents: 15912
diff changeset
6350 if not ret and movemarkfrom:
16010
c7811ca6fb94 update: note updated bookmark
Kevin Bullock <kbullock@ringworld.org>
parents: 16009
diff changeset
6351 if bookmarks.update(repo, [movemarkfrom], repo['.'].node()):
c7811ca6fb94 update: note updated bookmark
Kevin Bullock <kbullock@ringworld.org>
parents: 16009
diff changeset
6352 ui.status(_("updating bookmark %s\n") % repo._bookmarkcurrent)
15935
6c97eb445341 bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents: 15912
diff changeset
6353 elif brev in repo._bookmarks:
13415
25b5694b9337 update: preserve possible bookmark name to set current bookmark correctly
David Soria Parra <dsp@php.net>
parents: 13407
diff changeset
6354 bookmarks.setcurrent(repo, brev)
21503
10f15e34d86c update: show message when a bookmark is activated by update
Stephen Lee <sphen.lee@gmail.com>
parents: 21418
diff changeset
6355 ui.status(_("(activating bookmark %s)\n") % brev)
16191
7c75924a6926 update: delete bookmarks.current when explicitly updating to a rev (issue3276)
Idan Kamara <idankk86@gmail.com>
parents: 16189
diff changeset
6356 elif brev:
21404
ca275f7ec576 update: when deactivating a bookmark, print a message
Siddharth Agarwal <sid0@fb.com>
parents: 21267
diff changeset
6357 if repo._bookmarkcurrent:
ca275f7ec576 update: when deactivating a bookmark, print a message
Siddharth Agarwal <sid0@fb.com>
parents: 21267
diff changeset
6358 ui.status(_("(leaving bookmark %s)\n") %
ca275f7ec576 update: when deactivating a bookmark, print a message
Siddharth Agarwal <sid0@fb.com>
parents: 21267
diff changeset
6359 repo._bookmarkcurrent)
16191
7c75924a6926 update: delete bookmarks.current when explicitly updating to a rev (issue3276)
Idan Kamara <idankk86@gmail.com>
parents: 16189
diff changeset
6360 bookmarks.unsetcurrent(repo)
13367
cef73cd9c268 bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents: 13366
diff changeset
6361
cef73cd9c268 bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents: 13366
diff changeset
6362 return ret
254
c03f58e5fd2d unify checkout and resolve into update
mpm@selenic.com
parents: 252
diff changeset
6363
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6364 @command('verify', [])
247
863b508c5b36 migrate verify
mpm@selenic.com
parents: 246
diff changeset
6365 def verify(ui, repo):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6366 """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
6367
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6368 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
6369
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6370 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
6371 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
6372 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
6373 integrity of their crosslinks and indices.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6374
17717
009db477c9fb help: add information about recovery from corruption to help of "verify"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17686
diff changeset
6375 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
6376 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
6377 repository.
009db477c9fb help: add information about recovery from corruption to help of "verify"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17686
diff changeset
6378
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6379 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
6380 """
2778
fdc232d8a193 Move repo.verify
Matt Mackall <mpm@selenic.com>
parents: 2776
diff changeset
6381 return hg.verify(repo)
247
863b508c5b36 migrate verify
mpm@selenic.com
parents: 246
diff changeset
6382
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
6383 @command('version', [], norepo=True)
3651
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6384 def version_(ui):
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6385 """output version and copyright information"""
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6386 ui.write(_("Mercurial Distributed SCM (version %s)\n")
7632
9626819b2e3d refactor version code
Matt Mackall <mpm@selenic.com>
parents: 7628
diff changeset
6387 % util.version())
3651
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6388 ui.status(_(
12829
01145ee78c53 version: replace email address with url to reduce private mail
Matt Mackall <mpm@selenic.com>
parents: 12821
diff changeset
6389 "(see http://mercurial.selenic.com for more information)\n"
24191
8fe5fc8d7b8e copyright: update to 2015
Jesus Cea <jcea@jcea.es>
parents: 24189
diff changeset
6390 "\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
6391 "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
6392 "There is NO\nwarranty; "
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6393 "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
6394 ))
21848
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6395
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6396 ui.note(_("\nEnabled extensions:\n\n"))
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6397 if ui.verbose:
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6398 # format names and versions into columns
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6399 names = []
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6400 vers = []
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6401 for name, module in extensions.extensions():
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6402 names.append(name)
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6403 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
6404 if names:
54ff2789d75e version: don't traceback if no extensions to list (issue4312)
Matt Mackall <mpm@selenic.com>
parents: 21929
diff changeset
6405 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
6406 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
6407 ui.write(" %-*s %s\n" % (maxnamelen, name, vers[i]))