annotate mercurial/commands.py @ 23172:e955549cd045

tests: write hgrc of more than two lines by using shell heredoc Here document should be readable than repeating echo commands.
author Yuya Nishihara <yuya@tcha.org>
date Tue, 04 Nov 2014 23:41:46 +0900
parents 7867f15b4a38
children d23834b871ac 3bd577a3283e
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
21063
7ca4f2049d3b bundle2: move `readbundle` into the `exchange` module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21051
diff changeset
24 import phases, obsolete, exchange
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 = [
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
144 ('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
145 ('', '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
146 ] + diffwsopts + [
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
147 ('U', 'unified', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
148 _('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
149 ('', 'stat', None, _('output diffstat-style summary of changes')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
150 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
151
14852
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
152 mergetoolopts = [
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
153 ('t', 'tool', '', _('specify merge tool')),
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
154 ]
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
155
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
156 similarityopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
157 ('s', 'similarity', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
158 _('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
159 ]
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
160
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
161 subrepoopts = [
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
162 ('S', 'subrepos', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
163 _('recurse into subrepositories'))
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
164 ]
2731
ad4155e757da Kill ui.setconfig_remoteopts
Matt Mackall <mpm@selenic.com>
parents: 2718
diff changeset
165
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
166 # Commands start here, listed alphabetically
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
167
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
168 @command('^add',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
169 walkopts + subrepoopts + dryrunopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
170 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
171 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
172 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
173 """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
174
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
175 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
176 repository.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
177
3829
531c116b2028 Add doc notes about revert and hg status vs diff
Matt Mackall <mpm@selenic.com>
parents: 3822
diff changeset
178 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
179 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
180
7807
bd8f44638847 help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents: 7765
diff changeset
181 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
182
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
183 .. container:: verbose
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 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
186 automatically by :hg:`add`::
10446
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
187
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
188 $ ls
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
189 foo.c
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
190 $ hg status
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 add
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
193 adding foo.c
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10445
diff changeset
194 $ hg status
10448
6e5a47398fc5 commands: correct example in add help text
Martin Geisler <mg@lazybytes.net>
parents: 10446
diff changeset
195 A foo.c
11507
35e2d453cf0d commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11488
diff changeset
196
35e2d453cf0d commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11488
diff changeset
197 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
198 """
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
199
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
200 m = scmutil.match(repo[None], pats, opts)
12270
166b9866580a add: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents: 12269
diff changeset
201 rejected = cmdutil.add(ui, repo, m, opts.get('dry_run'),
15911
c654eac03452 add: fix subrepo recursion for explicit path handling
David M. Carr <david@carrclan.us>
parents: 15906
diff changeset
202 opts.get('subrepos'), prefix="", explicitonly=False)
12269
877236cdd437 add: move main part to cmdutil to make it easier to reuse
Martin Geisler <mg@lazybytes.net>
parents: 12266
diff changeset
203 return rejected and 1 or 0
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
204
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
205 @command('addremove',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
206 similarityopts + walkopts + dryrunopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
207 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
208 inferrepo=True)
766
b444a7e053f1 Get addremove to use new walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 764
diff changeset
209 def addremove(ui, repo, *pats, **opts):
3181
3637d5d17cbc Documentation fixes for addremove.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3172
diff changeset
210 """add all new files, delete all missing files
2181
690da72b0b16 deprecate addremove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2179
diff changeset
211
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
212 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
213 repository.
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
214
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
215 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
216 ``.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
217 commit.
2958
ff3ea21a981a addremove: add -s/--similarity option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2956
diff changeset
218
17266
4e35dea77e31 addremove: mention --similarity defaults to 100 (issue3430)
Patrick Mezard <patrick@mezard.eu>
parents: 17264
diff changeset
219 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
220 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
221 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
222 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
223 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
224 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
225 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
226 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
227 identical files are detected.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
228
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
229 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
230 """
4966
8d982aef0be1 addremove: print meaningful error message if --similar not numeric
Bryan O'Sullivan <bos@serpentine.com>
parents: 4950
diff changeset
231 try:
11551
4484a7b661f2 commands: addremove does similarity 100 by default
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 11525
diff changeset
232 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
233 except ValueError:
8d982aef0be1 addremove: print meaningful error message if --similar not numeric
Bryan O'Sullivan <bos@serpentine.com>
parents: 4950
diff changeset
234 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
235 if sim < 0 or sim > 100:
ff3ea21a981a addremove: add -s/--similarity option
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2956
diff changeset
236 raise util.Abort(_('similarity must be between 0 and 100'))
14321
003d63bb4fa5 scmutil: drop some aliases in cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14319
diff changeset
237 return scmutil.addremove(repo, pats, opts, similarity=sim / 100.0)
219
8ff4532376a4 hg checkout: refuse to checkout if there are outstanding changes
mpm@selenic.com
parents: 214
diff changeset
238
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
239 @command('^annotate|blame',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
240 [('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
241 ('', 'follow', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
242 _('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
243 ('', '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
244 ('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
245 ('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
246 ('f', 'file', None, _('list the filename')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
247 ('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
248 ('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
249 ('c', 'changeset', None, _('list the changeset')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
250 ('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
251 ] + diffwsopts + walkopts + formatteropts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
252 _('[-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
253 inferrepo=True)
733
1966c553f652 Convert annotate over to walk interface.
Bryan O'Sullivan <bos@serpentine.com>
parents: 732
diff changeset
254 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
255 """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
256
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
257 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
258 each line
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
259
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
260 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
261 by whom.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
262
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
263 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
264 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
265 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
266 nor desirable.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
267
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
268 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
269 """
22266
711de9dcb1d3 annotate: abort early if no file is specified
Yuya Nishihara <yuya@tcha.org>
parents: 22248
diff changeset
270 if not pats:
711de9dcb1d3 annotate: abort early if no file is specified
Yuya Nishihara <yuya@tcha.org>
parents: 22248
diff changeset
271 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
272
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
273 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
274 # --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
275 # 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
276 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
277
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
278 fm = ui.formatter('annotate', opts)
6134
7b937b26adf7 Make annotae/grep print short dates with -q/--quiet.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6133
diff changeset
279 datefunc = ui.quiet and util.shortdate or util.datestr
22701
cb28d2b3db0b formatter: add general way to switch hex/short functions
Yuya Nishihara <yuya@tcha.org>
parents: 22694
diff changeset
280 hexfn = fm.hexfunc
15631
e5fd140a4e69 annotate: show full changeset hash when invoked with --debug and -c
Ion Savin <comp_@gmx.net>
parents: 15623
diff changeset
281
22479
5d9e46d93c1d annotate: split functions to get data without applying text formatting
Yuya Nishihara <yuya@tcha.org>
parents: 22478
diff changeset
282 opmap = [('user', ' ', lambda x: x[0].user(), ui.shortuser),
5d9e46d93c1d annotate: split functions to get data without applying text formatting
Yuya Nishihara <yuya@tcha.org>
parents: 22478
diff changeset
283 ('number', ' ', lambda x: x[0].rev(), str),
5d9e46d93c1d annotate: split functions to get data without applying text formatting
Yuya Nishihara <yuya@tcha.org>
parents: 22478
diff changeset
284 ('changeset', ' ', lambda x: hexfn(x[0].node()), str),
5d9e46d93c1d annotate: split functions to get data without applying text formatting
Yuya Nishihara <yuya@tcha.org>
parents: 22478
diff changeset
285 ('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
286 ('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
287 ('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
288 ]
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
289 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
290
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10270
diff changeset
291 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
292 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
293 opts['number'] = True
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
294
4857
2192001e4bb4 Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4849
diff changeset
295 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
296 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
297 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
298
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
299 if fm:
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
300 def makefunc(get, fmt):
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
301 return get
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
302 else:
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
303 def makefunc(get, fmt):
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
304 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
305 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
306 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
307 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
308 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
309 if opts.get(op))
4857
2192001e4bb4 Add --line-number option to hg annotate (issue506)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4849
diff changeset
310
13697
eaee75036725 annotate: catch nonexistent files using match.bad callback (issue1590)
Matt Mackall <mpm@selenic.com>
parents: 13694
diff changeset
311 def bad(x, y):
eaee75036725 annotate: catch nonexistent files using match.bad callback (issue1590)
Matt Mackall <mpm@selenic.com>
parents: 13694
diff changeset
312 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
313
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
314 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
315 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
316 m.bad = bad
10369
98a0421b9e52 commands: annotate follows by default, separate -f/--file option
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10365
diff changeset
317 follow = not opts.get('no_follow')
15528
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
318 diffopts = patch.diffopts(ui, opts, section='annotate')
6764
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
319 for abs in ctx.walk(m):
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
320 fctx = ctx[abs]
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
321 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
322 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
323 continue
836667830fee Teach annotate about binary files
mpm@selenic.com
parents: 1015
diff changeset
324
15528
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
325 lines = fctx.annotate(follow=follow, linenumber=linenumber,
a84698badf0b annotate: support diff whitespace filtering flags (issue3030)
Patrick Mezard <pmezard@gmail.com>
parents: 15513
diff changeset
326 diffopts=diffopts)
22477
3c8ae79eacb0 annotate: build format string separately from annotation data
Yuya Nishihara <yuya@tcha.org>
parents: 22452
diff changeset
327 formats = []
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
328 pieces = []
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents:
diff changeset
329
14358
bf93e78f2638 annotate: fix alignment of columns in front of line numbers (issue2807)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14331
diff changeset
330 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
331 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
332 if l:
22480
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
333 if fm:
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
334 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
335 else:
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
336 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
337 ml = max(sizes)
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
338 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
339 pieces.append(l)
3c8ae79eacb0 annotate: build format string separately from annotation data
Yuya Nishihara <yuya@tcha.org>
parents: 22452
diff changeset
340
3c8ae79eacb0 annotate: build format string separately from annotation data
Yuya Nishihara <yuya@tcha.org>
parents: 22452
diff changeset
341 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
342 fm.startitem()
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
343 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
344 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
345
75e166b82c7a annotate: remove redundant check for empty list of annotation data
Yuya Nishihara <yuya@tcha.org>
parents: 22433
diff changeset
346 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
347 fm.plain('\n')
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
348
dff638170c48 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org>
parents: 22479
diff changeset
349 fm.end()
15829
2c480532f36e annotate: append newline after non newline-terminated file listings
Ion Savin <ion.savin@tora.com>
parents: 15780
diff changeset
350
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
351 @command('archive',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
352 [('', '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
353 ('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
354 _('PREFIX')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
355 ('r', 'rev', '', _('revision to distribute'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
356 ('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
357 ] + subrepoopts + walkopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
358 _('[OPTION]... DEST'))
2112
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
359 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
360 '''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
361
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
362 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
363 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
364
10650
9ea7238ad935 archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents: 10649
diff changeset
365 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
366 extension (or override using -t/--type).
9ea7238ad935 archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents: 10649
diff changeset
367
15109
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
368 .. container:: verbose
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
369
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
370 Examples:
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
371
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
372 - create a zip file containing the 1.0 release::
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
373
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
374 hg archive -r 1.0 project-1.0.zip
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
375
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
376 - create a tarball excluding .hg files::
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
377
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
378 hg archive project.tar.gz -X ".hg*"
f7993be2c32f archive: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15105
diff changeset
379
10650
9ea7238ad935 archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents: 10649
diff changeset
380 Valid types are:
9892
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
381
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
382 :``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
383 :``tar``: tar archive, uncompressed
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
384 :``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
385 :``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
386 :``uzip``: zip archive, uncompressed
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
387 :``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
388
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
389 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
390 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
391
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
392 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
393 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
394 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
395 removed.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
396
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
397 Returns 0 on success.
2112
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
398 '''
2b03c6733efa add "archive" command, like "cvs export" only better.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2092
diff changeset
399
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
400 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
401 if not ctx:
7528
eadcc075967e archive: fix bogus error message with no working directory
Matt Mackall <mpm@selenic.com>
parents: 7527
diff changeset
402 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
403 node = ctx.node()
14290
86e70956da4f cmdutil: make_filename -> makefilename
Matt Mackall <mpm@selenic.com>
parents: 14289
diff changeset
404 dest = cmdutil.makefilename(repo, dest, node)
15381
c519cd8f0169 backout dbdb777502dc (issue3077) (issue3071)
Matt Mackall <mpm@selenic.com>
parents: 15373
diff changeset
405 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
406 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
407
11557
57bdc2239535 archival: move commands.archive.guess_type to archival.guesskind
Martin Geisler <mg@lazybytes.net>
parents: 11551
diff changeset
408 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
409 prefix = opts.get('prefix')
10650
9ea7238ad935 archive: autodetect archive type by extension (issue2058)
David Wolever <david@wolever.net>
parents: 10649
diff changeset
410
2476
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
411 if dest == '-':
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
412 if kind == 'files':
0f7e4a39d9af archive: make "hg archive -t XXX -" to write to stdout
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2473
diff changeset
413 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
414 dest = cmdutil.makefileobj(repo, dest)
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10270
diff changeset
415 if not prefix:
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10270
diff changeset
416 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
417
14290
86e70956da4f cmdutil: make_filename -> makefilename
Matt Mackall <mpm@selenic.com>
parents: 14289
diff changeset
418 prefix = cmdutil.makefilename(repo, prefix, node)
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
419 matchfn = scmutil.match(ctx, [], opts)
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
420 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
421 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
422
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
423 @command('backout',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
424 [('', 'merge', None, _('merge with old dirstate parent after backout')),
15211
1209de02034e backout: deprecate/hide support for backing out merges
Matt Mackall <mpm@selenic.com>
parents: 15210
diff changeset
425 ('', 'parent', '',
1209de02034e backout: deprecate/hide support for backing out merges
Matt Mackall <mpm@selenic.com>
parents: 15210
diff changeset
426 _('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
427 ('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
428 ('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
429 ] + mergetoolopts + walkopts + commitopts + commitopts2,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
430 _('[OPTION]... [-r] REV'))
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
431 def backout(ui, repo, node=None, rev=None, **opts):
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
432 '''reverse effect of earlier changeset
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
433
13340
02aa06a021a0 backout: make help more explicit about what backout does
Jonathan Nieder <jrnieder@gmail.com>
parents: 13328
diff changeset
434 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
435 current working directory.
02aa06a021a0 backout: make help more explicit about what backout does
Jonathan Nieder <jrnieder@gmail.com>
parents: 13328
diff changeset
436
13473
bbdd858e3229 backout: clarify which changesets are new in help text
Jonathan Nieder <jrnieder@gmail.com>
parents: 13472
diff changeset
437 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
438 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
439 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
440
15210
9d8115c5fbda backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents: 15209
diff changeset
441 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
442
15210
9d8115c5fbda backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents: 15209
diff changeset
443 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
444 incorrect merge.
9d8115c5fbda backout: add a note about not working on merges
Matt Mackall <mpm@selenic.com>
parents: 15209
diff changeset
445
15209
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
446 .. container:: verbose
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
447
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
448 By default, the pending changeset will have one parent,
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
449 maintaining a linear history. With --merge, the pending
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
450 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
451 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
452
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
453 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
454 to specifying --merge followed by :hg:`update --clean .` to
10f85a735601 backout: mark some help verbose
Matt Mackall <mpm@selenic.com>
parents: 15203
diff changeset
455 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
456 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
457
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
458 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
459
20872
3f83fc5cfe71 backout: correct commit status of no changes made (BC) (issue4190)
Yuya Nishihara <yuya@tcha.org>
parents: 20871
diff changeset
460 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
461 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
462 '''
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
463 if rev and node:
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
464 raise util.Abort(_("please specify just one revision"))
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
465
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
466 if not rev:
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
467 rev = node
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
468
4726
f6e961c0155b Fix and test 'hg backout' without or with too many revisions.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4718
diff changeset
469 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
470 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
471
6139
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
472 date = opts.get('date')
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
473 if date:
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
474 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
475
19476
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
476 cmdutil.checkunfinished(repo)
14289
d68ddccf276b cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents: 14286
diff changeset
477 cmdutil.bailifchanged(repo)
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
478 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
479
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
480 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
481 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
482 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
483
2614
8ba1c31f6864 backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2613
diff changeset
484 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
485 if p1 == nullid:
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
486 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
487 if p2 != nullid:
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
488 if not opts.get('parent'):
15211
1209de02034e backout: deprecate/hide support for backing out merges
Matt Mackall <mpm@selenic.com>
parents: 15210
diff changeset
489 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
490 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
491 if p not in (p1, p2):
3679
2956948b81f3 fix warnings generated by pygettext.py.
Marcos Chaves <marcos.nospam@gmail.com>
parents: 3673
diff changeset
492 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
493 (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
494 parent = p
8ba1c31f6864 backout: allow backout of merge changeset with --parent option.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2613
diff changeset
495 else:
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
496 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
497 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
498 parent = p1
5568
de620356064f backout: disallow across branches (issue655)
Matt Mackall <mpm@selenic.com>
parents: 5542
diff changeset
499
6423
fb374b1b3911 backout: reverse changeset belongs on current branch
Matt Mackall <mpm@selenic.com>
parents: 6385
diff changeset
500 # 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
501 wlock = repo.wlock()
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
502 try:
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
503 branch = repo.dirstate.branch()
18689
12721a20ed30 backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents: 18688
diff changeset
504 bheads = repo.branchheads(branch)
18685
fafdff7e9c43 backout: use cmdutil.revert directly instead of commands.revert
Kevin Bullock <kbullock@ringworld.org>
parents: 18658
diff changeset
505 rctx = scmutil.revsingle(repo, hex(parent))
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
506 if not opts.get('merge') and op1 != node:
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
507 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
508 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
509 'backout')
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
510 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
511 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
512 node, False)
20275
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
513 repo.setparents(op1, op2)
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
514 repo.dirstate.endparentchange()
20275
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
515 hg._showstats(repo, stats)
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
516 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
517 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
518 "file merges\n"))
6545770bd379 backout: add a message after backout that need manual commit
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20275
diff changeset
519 else:
6545770bd379 backout: add a message after backout that need manual commit
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20275
diff changeset
520 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
521 "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
522 ui.status(msg % short(node))
20275
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
523 return stats[3] > 0
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
524 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
525 ui.setconfig('ui', 'forcemerge', '', '')
20275
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
526 else:
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
527 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
528 repo.dirstate.setbranch(branch)
2123d27ff75d backout: avoid update on simple case.
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20237
diff changeset
529 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
530
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
531
18689
12721a20ed30 backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents: 18688
diff changeset
532 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
533 editform = 'backout'
a5bb0c4001ae backout: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21986
diff changeset
534 e = cmdutil.getcommiteditor(editform=editform, **opts)
21412
6f6ccb0bb6af backout: avoid redundant message examination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21404
diff changeset
535 if not message:
6f6ccb0bb6af backout: avoid redundant message examination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21404
diff changeset
536 # we don't translate commit messages
6f6ccb0bb6af backout: avoid redundant message examination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21404
diff changeset
537 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
538 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
539 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
540 match, editor=e)
12721a20ed30 backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents: 18688
diff changeset
541 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
542 if not newnode:
3f83fc5cfe71 backout: correct commit status of no changes made (BC) (issue4190)
Yuya Nishihara <yuya@tcha.org>
parents: 20871
diff changeset
543 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
544 return 1
18689
12721a20ed30 backout: call cmdutil.commit directly instead of commands.commit
Kevin Bullock <kbullock@ringworld.org>
parents: 18688
diff changeset
545 cmdutil.commitstatus(repo, newnode, branch, bheads)
18687
1d183b33f007 backout: remove unnecessary dict copy
Kevin Bullock <kbullock@ringworld.org>
parents: 18686
diff changeset
546
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
547 def nice(node):
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
548 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
549 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
550 (nice(repo.changelog.tip()), nice(node)))
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
551 if opts.get('merge') and op1 != node:
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
552 hg.clean(repo, op1, show_stats=False)
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
553 ui.status(_('merging with changeset %s\n')
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
554 % nice(repo.changelog.tip()))
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
555 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
556 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
557 'backout')
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
558 return hg.merge(repo, hex(repo.changelog.tip()))
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
559 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
560 ui.setconfig('ui', 'forcemerge', '', '')
16470
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
561 finally:
b2e1da5db6df commands: add missing wlock to backout
Idan Kamara <idankk86@gmail.com>
parents: 16458
diff changeset
562 wlock.release()
12727
52971985be14 backout: provide linear backout as a default (without --merge option)
Gilles Moris <gilles.moris@free.fr>
parents: 12726
diff changeset
563 return 0
2158
ec96c4518236 add backout command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2153
diff changeset
564
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
565 @command('bisect',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
566 [('r', 'reset', False, _('reset bisect state')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
567 ('g', 'good', False, _('mark changeset good')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
568 ('b', 'bad', False, _('mark changeset bad')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
569 ('s', 'skip', False, _('skip testing changeset')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
570 ('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
571 ('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
572 ('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
573 _("[-gbsr] [-U] [-c CMD] [REV]"))
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
574 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
575 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
576 noupdate=None):
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
577 """subdivision search of changesets
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
578
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
579 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
580 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
581 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
582 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
583 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
584 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
585 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
586 or announce that it has found the bad revision.
7184
380fda3eed13 clean up trailing spaces
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 7037
diff changeset
587
6928
1a4c66d741a2 bisect: expand help text to explain REV argument and --noupdate
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6858
diff changeset
588 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
589 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
590
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
591 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
592 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
593 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
594 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
595 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
596 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
597 is bad.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
598
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
599 .. 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
600
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
601 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
602
20151
734ff413eb7e help: fix backwards bisect help example
Santiago Pay=C3=A0 i Miralta <santiagopim@gmail.com>
parents: 20146
diff changeset
603 - 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
604
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
605 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
606 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
607
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
608 - 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
609 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
610
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
611 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
612 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
613
17424
e7cfe3587ea4 fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents: 17393
diff changeset
614 - 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
615 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
616
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
617 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
618 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
619
19958
25b02c6f73a6 doc: end line preceding command line example with double colon
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19941
diff changeset
620 - 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
621
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
622 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
623
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
624 - 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
625
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
626 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
627
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
628 - 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
629 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
630
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
631 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
632 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
633 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
634 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
635
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
636 - 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
637 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
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 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
640
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
641 - 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
642 if running with -U/--noupdate)::
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
643
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
644 hg log -r "bisect(current)"
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
645
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
646 - 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
647
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 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
649
20146
aa192af94321 bisect: don't mention obsolete graphlog extension in help
Martin Geisler <martin@geisler.net>
parents: 20107
diff changeset
650 - 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
651
0834e0bb445a bisect: add some bisection examples, and some log revset.bisect() examples
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 15129
diff changeset
652 hg 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
653
15147
395ca8cd2669 revset.bisect: add 'ignored' set to the bisect keyword
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents: 15145
diff changeset
654 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
655
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
656 Returns 0 on success.
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
657 """
13601
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
658 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
659 # 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
660 # 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
661 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
662 if len(parents) > 1:
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
663 side = good and state['bad'] or state['good']
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
664 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
665 if num == 1:
14157
a8f136f430da bisect: fix indent level
Yuya Nishihara <yuya@tcha.org>
parents: 14144
diff changeset
666 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
667 return None
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
668
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
669 def print_result(nodes, good):
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
670 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
671 if len(nodes) == 1:
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
672 # 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
673 if good:
bdeb380a10de commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents: 8042
diff changeset
674 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
675 else:
bdeb380a10de commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents: 8042
diff changeset
676 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
677 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
678 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
679 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
680 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
681 ' 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
682 '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
683 % extendnode)
6858
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
684 else:
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
685 # multiple possible revisions
8088
bdeb380a10de commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents: 8042
diff changeset
686 if good:
bdeb380a10de commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents: 8042
diff changeset
687 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
688 "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
689 else:
bdeb380a10de commands, i18n: avoid untranslated strings as message parameters
Wagner Bruna <wbruna@yahoo.com>
parents: 8042
diff changeset
690 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
691 "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
692 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
693 displayer.show(repo[n])
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
694 displayer.close()
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
695
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
696 def check_state(state, interactive=True):
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
697 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
698 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
699 return
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
700 if not state['good']:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
701 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
702 else:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
703 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
704 return True
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
705
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
706 # backward compatibility
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
707 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
708 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
709 cmd, rev, extra = rev, extra, None
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
710 if cmd == "good":
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
711 good = True
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
712 elif cmd == "bad":
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
713 bad = True
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
714 else:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
715 reset = True
13601
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
716 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
717 raise util.Abort(_('incompatible arguments'))
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
718
19476
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
719 cmdutil.checkunfinished(repo)
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
720
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
721 if reset:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
722 p = repo.join("bisect.state")
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
723 if os.path.exists(p):
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
724 os.unlink(p)
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
725 return
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
726
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
727 state = hbisect.load_state(repo)
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
728
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
729 if command:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
730 changesets = 1
20237
0d32dd60016c bisect: --command without --noupdate should flag the parent rev it tested
Mads Kiilerich <madski@unity3d.com>
parents: 20235
diff changeset
731 if noupdate:
0d32dd60016c bisect: --command without --noupdate should flag the parent rev it tested
Mads Kiilerich <madski@unity3d.com>
parents: 20235
diff changeset
732 try:
0d32dd60016c bisect: --command without --noupdate should flag the parent rev it tested
Mads Kiilerich <madski@unity3d.com>
parents: 20235
diff changeset
733 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
734 except LookupError:
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
735 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
736 '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
737 else:
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
738 node, p2 = repo.dirstate.parents()
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
739 if p2 != nullid:
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
740 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
741 try:
7590
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
742 while changesets:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
743 # update state
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
744 state['current'] = [node]
16593
e462313ef1bd bisect: save current state before running a command
Bryan O'Sullivan <bryano@fb.com>
parents: 16591
diff changeset
745 hbisect.save_state(repo, state)
16648
1388cc711ea7 bisect: set HG_NODE when runing a command
Bryan O'Sullivan <bryano@fb.com>
parents: 16647
diff changeset
746 status = util.system(command,
1388cc711ea7 bisect: set HG_NODE when runing a command
Bryan O'Sullivan <bryano@fb.com>
parents: 16647
diff changeset
747 environ={'HG_NODE': hex(node)},
1388cc711ea7 bisect: set HG_NODE when runing a command
Bryan O'Sullivan <bryano@fb.com>
parents: 16647
diff changeset
748 out=ui.fout)
7590
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
749 if status == 125:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
750 transition = "skip"
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
751 elif status == 0:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
752 transition = "good"
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
753 # 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
754 elif status == 127:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
755 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
756 elif status < 0:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
757 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
758 else:
e5703ec08e64 bisect: improve hg bisect -c (relative paths, error handling)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7570
diff changeset
759 transition = "bad"
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
760 ctx = scmutil.revsingle(repo, rev, node)
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
761 rev = None # clear for future iterations
8805
2726a6df11e9 bisect: improve --command output
Patrick Mezard <pmezard@gmail.com>
parents: 8802
diff changeset
762 state[transition].append(ctx.node())
16936
ee7dd2307031 bisect: lowercase status message
Martin Geisler <mg@aragost.com>
parents: 16935
diff changeset
763 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
764 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
765 # 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
766 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
767 # update to next check
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
768 node = nodes[0]
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
769 if not noupdate:
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
770 cmdutil.bailifchanged(repo)
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
771 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
772 finally:
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
773 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
774 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
775 print_result(nodes, bgood)
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
776 return
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
777
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
778 # update state
12177
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
779
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
780 if rev:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
781 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
782 else:
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
783 nodes = [repo.lookup('.')]
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
784
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
785 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
786 if good:
12177
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
787 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
788 elif bad:
12177
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
789 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
790 elif skip:
12177
80399b5b5f13 bisect: allow revsets in addition to single revs (issue2360)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 12173
diff changeset
791 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
792 hbisect.save_state(repo, state)
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
793
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
794 if not check_state(state):
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
795 return
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
796
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
797 # actually bisect
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
798 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
799 if extend:
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
800 if not changesets:
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
801 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
802 if extendnode is not None:
20868
5db105f216c3 i18n: fix "% inside _()" problems
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20772
diff changeset
803 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
804 % (extendnode.rev(), extendnode))
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
805 state['current'] = [extendnode.node()]
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
806 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
807 if noupdate:
0388e3e36693 bisect: new command to extend the bisect range (issue2690)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13591
diff changeset
808 return
14289
d68ddccf276b cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents: 14286
diff changeset
809 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
810 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
811 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
812
7227
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
813 if changesets == 0:
e1afb50ec2aa bisect: ability to check revision with command
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7213
diff changeset
814 print_result(nodes, good)
6858
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
815 else:
8f256bf98219 Add support for multiple possible bisect results (issue1228, issue1182)
Bernhard Leiner <bleiner@gmail.com>
parents: 6842
diff changeset
816 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
817 node = nodes[0]
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
818 # compute the approximate number of remaining tests
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
819 tests, size = 0, 2
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
820 while size <= changesets:
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
821 tests, size = tests + 1, size * 2
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
822 rev = repo.changelog.rev(node)
9012
ada93c6bf554 bisect: fix format specifiers for integers
Cédric Duval <cedricduval@free.fr>
parents: 8995
diff changeset
823 ui.write(_("Testing changeset %d:%s "
ada93c6bf554 bisect: fix format specifiers for integers
Cédric Duval <cedricduval@free.fr>
parents: 8995
diff changeset
824 "(%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
825 % (rev, short(node), changesets, tests))
16647
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
826 state['current'] = [node]
14913fcb30c6 bisect: track the current changeset (issue3382)
Bryan O'Sullivan <bryano@fb.com>
parents: 16642
diff changeset
827 hbisect.save_state(repo, state)
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
828 if not noupdate:
14289
d68ddccf276b cmdutil: bail_if_changed to bailifchanged
Matt Mackall <mpm@selenic.com>
parents: 14286
diff changeset
829 cmdutil.bailifchanged(repo)
5775
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
830 return hg.clean(repo, node)
2dd202a6e15b bisect: make bisect a built-in command
Matt Mackall <mpm@selenic.com>
parents: 5764
diff changeset
831
18075
2c1fc483efa4 commands: 'hg bookmark NAME' should work even with ui.strict=True
Kevin Bullock <kbullock@ringworld.org>
parents: 18068
diff changeset
832 @command('bookmarks|bookmark',
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
833 [('f', 'force', False, _('force')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
834 ('r', 'rev', '', _('revision'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
835 ('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
836 ('m', 'rename', '', _('rename a given bookmark'), _('NAME')),
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
837 ('i', 'inactive', False, _('mark a bookmark inactive')),
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
838 ] + formatteropts,
19147
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
839 _('hg bookmarks [OPTIONS]... [NAME]...'))
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
840 def bookmark(ui, repo, *names, **opts):
21762
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
841 '''create a new bookmark or list existing bookmarks
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
842
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
843 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
844 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
845 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
846
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
847 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
848 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
849 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
850 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
851 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
852
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
853 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
854 :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
855 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
856 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
857
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
858 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
859 check it out by default if it exists.
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
860
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
861 .. container:: verbose
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
862
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
863 Examples:
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
864
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
865 - 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
866
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
867 hg book new-feature
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
868
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
869 - create an inactive bookmark as a place marker::
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
870
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
871 hg book -i reviewed
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
872
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
873 - create an inactive bookmark on another changeset::
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
874
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
875 hg book -r .^ tested
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
876
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
877 - move the '@' bookmark from another branch::
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
878
0c6cdbb697d9 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com>
parents: 21721
diff changeset
879 hg book -f @
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
880 '''
19147
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
881 force = opts.get('force')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
882 rev = opts.get('rev')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
883 delete = opts.get('delete')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
884 rename = opts.get('rename')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
885 inactive = opts.get('inactive')
5b1835485442 bookmarks: allow bookmark command to take multiple arguments
Kevin Bullock <kbullock@ringworld.org>
parents: 19112
diff changeset
886
17789
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
887 def checkformat(mark):
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
888 mark = mark.strip()
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
889 if not mark:
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
890 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
891 "whitespace"))
17821
361ab1e2086f scmutil: add bad character checking to checknewlabel
Kevin Bullock <kbullock@ringworld.org>
parents: 17818
diff changeset
892 scmutil.checknewlabel(repo, mark, 'bookmark')
17789
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
893 return mark
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
894
20233
410193f11422 commands.bookmarks: pass cur in explicitly to checkconflict
Siddharth Agarwal <sid0@fb.com>
parents: 20232
diff changeset
895 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
896 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
897 if target:
18781
99b78269a2ec bookmarks: allow (re-)activating a bookmark on the current changeset
Kevin Bullock <kbullock@ringworld.org>
parents: 18773
diff changeset
898 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
899 # re-activating a bookmark
99b78269a2ec bookmarks: allow (re-)activating a bookmark on the current changeset
Kevin Bullock <kbullock@ringworld.org>
parents: 18773
diff changeset
900 return
18773
56dd55da2f7d bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents: 18746
diff changeset
901 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
902 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
903 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
904 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
905
6439d78e14fb bookmarks: resolve divergent bookmark when moving across a branch
Sean Farley <sean.michael.farley@gmail.com>
parents: 19109
diff changeset
906 # 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
907 # 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
908 # 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
909 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
910 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
911 return
6439d78e14fb bookmarks: resolve divergent bookmark when moving across a branch
Sean Farley <sean.michael.farley@gmail.com>
parents: 19109
diff changeset
912
19109
26c51e87e807 bookmarks: resolve divergent bookmarks when fowarding bookmark to descendant
Sean Farley <sean.michael.farley@gmail.com>
parents: 19026
diff changeset
913 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
914 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
915 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
916 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
917 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
918 (mark, short(bmctx.node())))
56dd55da2f7d bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org>
parents: 18746
diff changeset
919 return
17789
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
920 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
921 "(use -f to force)") % mark)
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
922 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
923 and not force):
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
924 raise util.Abort(
4cfd02c2df9a bookmarks: check bookmark format during rename (issue3662)
David Soria Parra <dsp@php.net>
parents: 17788
diff changeset
925 _("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
926
17790
0291e122fb05 bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents: 17789
diff changeset
927 if delete and rename:
0291e122fb05 bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents: 17789
diff changeset
928 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
929 if delete and rev:
0291e122fb05 bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents: 17789
diff changeset
930 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
931 if rename and rev:
0291e122fb05 bookmarks: abort when incompatible options are used (issue3663)
David Soria Parra <dsp@php.net>
parents: 17789
diff changeset
932 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
933 if not names and (delete or rev):
17791
1e30c1bbd8c0 bookmarks: simplify code
Kevin Bullock <kbullock@ringworld.org>
parents: 17790
diff changeset
934 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
935
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
936 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
937 wlock = repo.wlock()
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
938 try:
20234
8a133190da89 commands.bookmarks: move cur initialization to inside wlock
Siddharth Agarwal <sid0@fb.com>
parents: 20233
diff changeset
939 cur = repo.changectx('.').node()
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
940 marks = repo._bookmarks
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
941 if delete:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
942 for mark in names:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
943 if mark not in marks:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
944 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
945 mark)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
946 if mark == repo._bookmarkcurrent:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
947 bookmarks.unsetcurrent(repo)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
948 del marks[mark]
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
949 marks.write()
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
950
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
951 elif rename:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
952 if not names:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
953 raise util.Abort(_("new bookmark name required"))
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
954 elif len(names) > 1:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
955 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
956 mark = checkformat(names[0])
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
957 if rename not in marks:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
958 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
959 checkconflict(repo, mark, cur, force)
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
960 marks[mark] = marks[rename]
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
961 if repo._bookmarkcurrent == rename and not inactive:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
962 bookmarks.setcurrent(repo, mark)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
963 del marks[rename]
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
964 marks.write()
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
965
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
966 elif names:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
967 newact = None
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
968 for mark in names:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
969 mark = checkformat(mark)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
970 if newact is None:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
971 newact = mark
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
972 if inactive and mark == repo._bookmarkcurrent:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
973 bookmarks.unsetcurrent(repo)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
974 return
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
975 tgt = cur
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
976 if rev:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
977 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
978 checkconflict(repo, mark, cur, force, tgt)
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
979 marks[mark] = tgt
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
980 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
981 bookmarks.setcurrent(repo, newact)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
982 elif cur != tgt and newact == repo._bookmarkcurrent:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
983 bookmarks.unsetcurrent(repo)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
984 marks.write()
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
985
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
986 elif inactive:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
987 if len(marks) == 0:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
988 ui.status(_("no bookmarks set\n"))
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
989 elif not repo._bookmarkcurrent:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
990 ui.status(_("no active bookmark\n"))
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
991 else:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
992 bookmarks.unsetcurrent(repo)
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
993 finally:
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
994 wlock.release()
17822
c284085d17a8 bookmarks: further flatten code
Kevin Bullock <kbullock@ringworld.org>
parents: 17821
diff changeset
995 else: # show bookmarks
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
996 fm = ui.formatter('bookmarks', opts)
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
997 hexfn = fm.hexfunc
20232
5fe4c1a9dc34 commands.bookmarks: hold wlock for write operations
Siddharth Agarwal <sid0@fb.com>
parents: 20231
diff changeset
998 marks = repo._bookmarks
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
999 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
1000 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
1001 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
1002 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
1003 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
1004 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
1005 else:
b17fd992d606 bookmarks: iterate bookmarks list even if it is known to be empty
Yuya Nishihara <yuya@tcha.org>
parents: 22705
diff changeset
1006 prefix, label = ' ', ''
b17fd992d606 bookmarks: iterate bookmarks list even if it is known to be empty
Yuya Nishihara <yuya@tcha.org>
parents: 22705
diff changeset
1007
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1008 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
1009 if not ui.quiet:
22776
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1010 fm.plain(' %s ' % prefix, label=label)
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1011 fm.write('bookmark', '%s', bmark, label=label)
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1012 pad = " " * (25 - encoding.colwidth(bmark))
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1013 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
1014 repo.changelog.rev(n), hexfn(n), label=label)
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1015 fm.data(active=(bmark == current))
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1016 fm.plain('\n')
564ae7d2ec9b bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22775
diff changeset
1017 fm.end()
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
1018
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1019 @command('branch',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1020 [('f', 'force', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1021 _('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
1022 ('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
1023 _('[-fC] [NAME]'))
4202
b2873c587b1a branch: require --force to shadow existing branches
Brendan Cully <brendan@kublai.com>
parents: 4200
diff changeset
1024 def branch(ui, repo, label=None, **opts):
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1025 """set or show the current branch name
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1026
15610
09b200396384 branch: move note about permanence to the top, add 'global'
Matt Mackall <mpm@selenic.com>
parents: 15511
diff changeset
1027 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
1028
15610
09b200396384 branch: move note about permanence to the top, add 'global'
Matt Mackall <mpm@selenic.com>
parents: 15511
diff changeset
1029 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
1030 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
1031 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
1032
4601
e69da61e467e Notify the user that hg branch does not create a branch until commit
Brendan Cully <brendan@kublai.com>
parents: 4593
diff changeset
1033 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
1034 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
1035 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
1036 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
1037 branch.
4202
b2873c587b1a branch: require --force to shadow existing branches
Brendan Cully <brendan@kublai.com>
parents: 4200
diff changeset
1038
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
1039 Unless -f/--force is specified, branch will not let you set a
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
1040 branch name that already exists, even if it's inactive.
5999
d1fe1a4eb2b7 Mention 'hg update' to switch branches in help for branch and branches.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 5998
diff changeset
1041
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
1042 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
1043 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
1044 change.
7006
92d44ec32430 branch: added more support for named branches
Sune Foldager <cryo@cyanite.org>
parents: 7003
diff changeset
1045
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
1046 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
1047 :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
1048
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1049 Returns 0 on success.
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1050 """
19180
12dbdd348bb0 branch: strip whitespace before testing known branch name
Yuya Nishihara <yuya@tcha.org>
parents: 19112
diff changeset
1051 if label:
12dbdd348bb0 branch: strip whitespace before testing known branch name
Yuya Nishihara <yuya@tcha.org>
parents: 19112
diff changeset
1052 label = label.strip()
12dbdd348bb0 branch: strip whitespace before testing known branch name
Yuya Nishihara <yuya@tcha.org>
parents: 19112
diff changeset
1053
16471
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1054 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
1055 ui.write("%s\n" % repo.dirstate.branch())
16471
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1056 return
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1057
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1058 wlock = repo.wlock()
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1059 try:
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1060 if opts.get('clean'):
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1061 label = repo[None].p1().branch()
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1062 repo.dirstate.setbranch(label)
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1063 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
1064 elif label:
16719
e7bf09acd410 localrepo: add branchtip() method for faster single-branch lookups
Brodie Rao <brodie@sf.io>
parents: 16715
diff changeset
1065 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
1066 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
1067 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
1068 ' exists'),
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1069 # i18n: "it" refers to an existing branch
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1070 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
1071 scmutil.checknewlabel(repo, label, 'branch')
16471
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1072 repo.dirstate.setbranch(label)
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1073 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
1074 ui.status(_('(branches are permanent and global, '
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1075 'did you want a bookmark?)\n'))
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1076 finally:
85c7602e283a commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com>
parents: 16470
diff changeset
1077 wlock.release()
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1078
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1079 @command('branches',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1080 [('a', 'active', False, _('show only branches that have unmerged heads')),
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1081 ('c', 'closed', False, _('show normal and closed branches')),
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1082 ] + formatteropts,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1083 _('[-ac]'))
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1084 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
1085 """list repository named branches
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1086
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
1087 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
1088 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
1089 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
1090
7e0b31dfc66f branches: add --closed flag for consistency with heads
Matt Mackall <mpm@selenic.com>
parents: 8958
diff changeset
1091 If -a/--active is specified, only show active branches. A branch
7e0b31dfc66f branches: add --closed flag for consistency with heads
Matt Mackall <mpm@selenic.com>
parents: 8958
diff changeset
1092 is considered active if it contains repository heads.
5999
d1fe1a4eb2b7 Mention 'hg update' to switch branches in help for branch and branches.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 5998
diff changeset
1093
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
1094 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
1095
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1096 Returns 0.
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1097 """
8991
7e0b31dfc66f branches: add --closed flag for consistency with heads
Matt Mackall <mpm@selenic.com>
parents: 8958
diff changeset
1098
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1099 fm = ui.formatter('branches', opts)
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1100 hexfunc = fm.hexfunc
16721
3e6d59ae4dc2 branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents: 16720
diff changeset
1101
20182
04036798ebed branches: avoid unnecessary changectx.branch() calls
Brodie Rao <brodie@sf.io>
parents: 20156
diff changeset
1102 allheads = set(repo.heads())
16721
3e6d59ae4dc2 branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents: 16720
diff changeset
1103 branches = []
20192
38fad5e76ee8 branches: simplify with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io>
parents: 20191
diff changeset
1104 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
1105 isactive = not isclosed and bool(set(heads) & allheads)
38fad5e76ee8 branches: simplify with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io>
parents: 20191
diff changeset
1106 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
1107 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
1108 reverse=True)
3e6d59ae4dc2 branches: improve performance by removing redundant operations
Brodie Rao <brodie@sf.io>
parents: 16720
diff changeset
1109
20182
04036798ebed branches: avoid unnecessary changectx.branch() calls
Brodie Rao <brodie@sf.io>
parents: 20156
diff changeset
1110 for tag, ctx, isactive, isopen in branches:
22639
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1111 if active and not isactive:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1112 continue
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1113 if isactive:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1114 label = 'branches.active'
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1115 notice = ''
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1116 elif not isopen:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1117 if not closed:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1118 continue
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1119 label = 'branches.closed'
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1120 notice = _(' (closed)')
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1121 else:
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1122 label = 'branches.inactive'
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1123 notice = _(' (inactive)')
22705
d4869b280cd6 branches: include active, closed and current flags in template output
Yuya Nishihara <yuya@tcha.org>
parents: 22704
diff changeset
1124 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
1125 if current:
22639
79c4178b2169 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org>
parents: 22634
diff changeset
1126 label = 'branches.current'
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1127
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1128 fm.startitem()
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1129 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
1130 rev = ctx.rev()
08a4e70ed183 branches: format rev as integer that is necessary for generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22701
diff changeset
1131 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
1132 fmt = ' ' * padsize + ' %d:%s'
22703
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1133 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
1134 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
1135 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
1136 if not ui.quiet:
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1137 fm.plain(notice)
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1138 fm.plain('\n')
bd6e95cb82b4 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org>
parents: 22702
diff changeset
1139 fm.end()
3502
8dc14d630b29 add branch and branches commands
Matt Mackall <mpm@selenic.com>
parents: 3472
diff changeset
1140
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1141 @command('bundle',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1142 [('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
1143 ('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
1144 _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1145 ('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
1146 _('BRANCH')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1147 ('', 'base', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1148 _('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
1149 _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1150 ('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
1151 ('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
1152 ] + remoteopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1153 _('[-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
1154 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
1155 """create a changegroup file
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1156
3511
aa8f086cb141 Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3510
diff changeset
1157 Generate a compressed changegroup file collecting changesets not
7807
bd8f44638847 help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents: 7765
diff changeset
1158 known to be in another repository.
3511
aa8f086cb141 Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3510
diff changeset
1159
10376
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
1160 If you omit the destination repository, then hg assumes the
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
1161 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
1162 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
1163 -a/--all (or --base null).
d403cf4eb32d help: describe bundle compression methods (issue1523)
Henrik Stuart <hg@hstuart.dk>
parents: 8902
diff changeset
1164
8958
8358cf63f612 commands: improve bundle compression methods description
Stefano Mioli <jstevie@gmail.com>
parents: 8955
diff changeset
1165 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
1166 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
1167 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
1168
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
1169 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
1170 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
1171 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
1172 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
1173
aa8f086cb141 Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3510
diff changeset
1174 Applying bundles preserves all changeset contents including
aa8f086cb141 Corrected help text for bundle.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3510
diff changeset
1175 permissions, copy/rename information, and revision history.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1176
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1177 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
1178 """
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
1179 revs = None
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
1180 if 'rev' in opts:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
1181 revs = scmutil.revrange(repo, opts['rev'])
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
1182
16427
d54d4de56aa7 commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents: 16389
diff changeset
1183 bundletype = opts.get('type', 'bzip2').lower()
d54d4de56aa7 commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents: 16389
diff changeset
1184 btypes = {'none': 'HG10UN', 'bzip2': 'HG10BZ', 'gzip': 'HG10GZ'}
d54d4de56aa7 commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents: 16389
diff changeset
1185 bundletype = btypes.get(bundletype)
d54d4de56aa7 commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents: 16389
diff changeset
1186 if bundletype not in changegroup.bundletypes:
d54d4de56aa7 commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com>
parents: 16389
diff changeset
1187 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
1188
6171
73b1de288801 Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents: 6163
diff changeset
1189 if opts.get('all'):
73b1de288801 Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents: 6163
diff changeset
1190 base = ['null']
73b1de288801 Add --all option to bundle command
John Mulligan <phlogistonjohn@yahoo.com>
parents: 6163
diff changeset
1191 else:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
1192 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
1193 # 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
1194 bundlecaps = None
3284
d89e98840b08 add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3278
diff changeset
1195 if base:
d89e98840b08 add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3278
diff changeset
1196 if dest:
8669
6f0f69da003e commands: typo in bundle abort message
Martin Geisler <mg@lazybytes.net>
parents: 8664
diff changeset
1197 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
1198 "a destination"))
14073
72c84f24b420 discovery: drop findoutgoing and simplify findcommonincoming's api
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14064
diff changeset
1199 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
1200 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
1201 cg = changegroup.getchangegroup(repo, 'bundle', heads=heads,
e2806b8613ca changegroup: rename bundle-related functions and classes
Sune Foldager <cryo@cyanite.org>
parents: 22383
diff changeset
1202 common=common, bundlecaps=bundlecaps)
15993
0b05e0bfdc1c scmutil: unify some 'no changes found' messages
Matt Mackall <mpm@selenic.com>
parents: 15991
diff changeset
1203 outgoing = None
3284
d89e98840b08 add -r/--rev and --base option to bundle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3278
diff changeset
1204 else:
10365
d757bc0c7865 interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents: 10364
diff changeset
1205 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
1206 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
1207 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
1208 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
1209 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
1210 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
1211 onlyheads=heads,
16736
025b3b763ba9 bundle: make bundles more portable (isue3441)
Sune Foldager <cryo@cyanite.org>
parents: 16637
diff changeset
1212 force=opts.get('force'),
025b3b763ba9 bundle: make bundles more portable (isue3441)
Sune Foldager <cryo@cyanite.org>
parents: 16637
diff changeset
1213 portable=True)
22390
e2806b8613ca changegroup: rename bundle-related functions and classes
Sune Foldager <cryo@cyanite.org>
parents: 22383
diff changeset
1214 cg = changegroup.getlocalchangegroup(repo, 'bundle', outgoing,
e2806b8613ca changegroup: rename bundle-related functions and classes
Sune Foldager <cryo@cyanite.org>
parents: 22383
diff changeset
1215 bundlecaps)
14073
72c84f24b420 discovery: drop findoutgoing and simplify findcommonincoming's api
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14064
diff changeset
1216 if not cg:
17248
6ffb35b2284c discovery: add extinct changesets to outgoing.excluded
Patrick Mezard <patrick@mezard.eu>
parents: 17218
diff changeset
1217 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
1218 return 1
10616
65b178f30eae bundle: fix bundle generation for empty changegroup
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10596
diff changeset
1219
6570
626cb86a6523 add compression type type parameter to bundle command
Benoit Allard <benoit@aeteurope.nl>
parents: 6518
diff changeset
1220 changegroup.writebundle(cg, fname, bundletype)
1218
cde6818e082a Add preliminary support for the bundle and unbundle commands
mpm@selenic.com
parents: 1215
diff changeset
1221
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1222 @command('cat',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1223 [('o', 'output', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1224 _('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
1225 ('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
1226 ('', '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
1227 ] + walkopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
1228 _('[OPTION]... FILE...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
1229 inferrepo=True)
1254
e6560042b7b8 Switch cat command to use walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1253
diff changeset
1230 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
1231 """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
1232
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
1233 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
1234 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
1235
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1236 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
1237 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
1238
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1239 :``%%``: literal "%" character
9892
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
1240 :``%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
1241 :``%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
1242 :``%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
1243 :``%H``: changeset hash (40 hexadecimal digits)
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1244 :``%R``: changeset revision number
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1245 :``%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
1246 :``%r``: zero-padded changeset revision number
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 21064
diff changeset
1247 :``%b``: basename of the exporting repository
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1248
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1249 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1250 """
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
1251 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
1252 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
1253
21041
a2cc3c08c3ac cat: support cat with explicit paths in subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 21040
diff changeset
1254 return cmdutil.cat(ui, repo, ctx, m, '', **opts)
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
1255
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1256 @command('^clone',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1257 [('U', 'noupdate', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1258 _('the clone will include an empty working copy (only a repository)')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1259 ('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
1260 ('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
1261 ('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
1262 ('', '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
1263 ('', '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
1264 ] + remoteopts,
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1265 _('[OPTION]... SOURCE [DEST]'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1266 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
1267 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
1268 """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
1269
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1270 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
1271
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1272 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
1273 basename of the source.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1274
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1275 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
1276 ``.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
1277
15177
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1278 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
1279 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
1280 ``.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
1281
15174
9f1a08c00931 clone: improve help on -r/-b and tags
Matt Mackall <mpm@selenic.com>
parents: 15147
diff changeset
1282 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
1283 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
1284 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
1285 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
1286 --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
1287 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
1288 containing the tag.
9714
2f1ab7f77ddc clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents: 9698
diff changeset
1289
18474
e031e10cdc06 help: document '@' bookmark in 'help bookmarks' and 'help clone'
Kevin Bullock <kbullock@ringworld.org>
parents: 18471
diff changeset
1290 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
1291 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
1292
15178
04e5449e25dc clone: add a note about -u/-U
Matt Mackall <mpm@selenic.com>
parents: 15177
diff changeset
1293 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
1294 -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
1295
15177
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1296 .. container:: verbose
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1297
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1298 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
1299 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
1300 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
1301 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
1302 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
1303 --pull option to avoid hardlinking.
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1304
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1305 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
1306 directory using full hardlinks with ::
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1307
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1308 $ cp -al REPO REPOCLONE
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1309
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1310 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
1311 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
1312 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
1313 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
1314 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
1315 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
1316
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1317 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
1318 revision from this list:
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1319
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1320 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
1321 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
1322 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
1323 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
1324 latest head of that branch)
1c57d8b38d5a clone: move portions of help into the verbose section
Matt Mackall <mpm@selenic.com>
parents: 15175
diff changeset
1325 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
1326 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
1327 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
1328 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
1329 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
1330 i) tip
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1331
15179
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1332 Examples:
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1333
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1334 - clone a remote repository to a new directory named hg/::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1335
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1336 hg clone http://selenic.com/hg
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1337
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1338 - create a lightweight local clone::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1339
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1340 hg clone project/ project-feature/
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1341
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1342 - 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
1343
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1344 hg clone ssh://user@server//home/projects/alpha/
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1345
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1346 - 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
1347 specified version::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1348
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1349 hg clone --uncompressed http://server/repo -u 1.5
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1350
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1351 - create a repository without changesets after a particular revision::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1352
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1353 hg clone -r 04e544 experimental/ good/
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1354
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1355 - clone (and track) a particular named branch::
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1356
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1357 hg clone http://selenic.com/hg#stable
d3b42e96cfcf clone: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15178
diff changeset
1358
15175
282db9102c43 clone: move url crossref to bottom
Matt Mackall <mpm@selenic.com>
parents: 15174
diff changeset
1359 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
1360
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1361 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1362 """
9714
2f1ab7f77ddc clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents: 9698
diff changeset
1363 if opts.get('noupdate') and opts.get('updaterev'):
2f1ab7f77ddc clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents: 9698
diff changeset
1364 raise util.Abort(_("cannot specify both --noupdate and --updaterev"))
2f1ab7f77ddc clone: add option -u/--updaterev
Adrian Buehlmann <adrian@cadifra.com>
parents: 9698
diff changeset
1365
14553
d976542986d2 hg: add opts argument to clone for internal remoteui
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14551
diff changeset
1366 r = hg.clone(ui, opts, source, dest,
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1367 pull=opts.get('pull'),
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1368 stream=opts.get('uncompressed'),
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1369 rev=opts.get('rev'),
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1370 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
1371 branch=opts.get('branch'))
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1372
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1373 return r is None
515
03f27b1381f9 Whitespace cleanups
mpm@selenic.com
parents: 513
diff changeset
1374
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1375 @command('^commit|ci',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1376 [('A', 'addremove', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1377 _('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
1378 ('', 'close-branch', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1379 _('mark a branch as closed, hiding it from the branch list')),
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1380 ('', 'amend', None, _('amend the parent of the working dir')),
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1381 ('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
1382 ('e', 'edit', None, _('invoke editor on commit messages')),
15321
e174353e8cda subrepos: abort commit by default if a subrepo is dirty (BC)
Martin Geisler <mg@lazybytes.net>
parents: 15307
diff changeset
1383 ] + walkopts + commitopts + commitopts2 + subrepoopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
1384 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
1385 inferrepo=True)
813
80fd2958235a Adapt commit to use file matching code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 812
diff changeset
1386 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
1387 """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
1388
7983
7b813bdbd5d0 Change double spaces to single spaces in help texts.
Martin Geisler <mg@daimi.au.dk>
parents: 7982
diff changeset
1389 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
1390 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
1391 :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
1392
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
1393 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
1394 will be committed.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1395
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
1396 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
1397 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
1398
11877
8f40125a0ed8 commit: explicitly document the existence of "last-message.txt"
Greg Ward <greg-hg@gerg.ca>
parents: 11836
diff changeset
1399 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
1400 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
1401 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
1402 ``.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
1403
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1404 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
1405 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
1406 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
1407 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
1408 ``.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
1409 on how to restore it).
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1410
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1411 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
1412 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
1413 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
1414
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1415 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
1416 or changesets that have children.
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1417
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
1418 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
1419
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1420 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
1421 """
15321
e174353e8cda subrepos: abort commit by default if a subrepo is dirty (BC)
Martin Geisler <mg@lazybytes.net>
parents: 15307
diff changeset
1422 if opts.get('subrepos'):
19232
b592fd33233a amend: complain more comprehensibly about subrepos
Matt Mackall <mpm@selenic.com>
parents: 19217
diff changeset
1423 if opts.get('amend'):
b592fd33233a amend: complain more comprehensibly about subrepos
Matt Mackall <mpm@selenic.com>
parents: 19217
diff changeset
1424 raise util.Abort(_('cannot amend with --subrepos'))
17504
593c5ca70a63 spelling: override
timeless@mozdev.org
parents: 17500
diff changeset
1425 # 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
1426 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
1427
19496
607191a45f8c checkunfinished: accommodate histedit quirk
Matt Mackall <mpm@selenic.com>
parents: 19493
diff changeset
1428 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
1429
19305
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1430 branch = repo[None].branch()
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1431 bheads = repo.branchheads(branch)
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1432
7655
cce37dab7ad6 branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents: 7643
diff changeset
1433 extra = {}
cce37dab7ad6 branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents: 7643
diff changeset
1434 if opts.get('close_branch'):
cce37dab7ad6 branch closing: mark closed branches with a 'close' extra
John Mulligan <phlogistonjohn@asynchrono.us>
parents: 7643
diff changeset
1435 extra['close'] = 1
6336
4b0c9c674707 warn about new heads on commit (issue842)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6321
diff changeset
1436
19305
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1437 if not bheads:
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1438 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
1439 elif opts.get('amend'):
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1440 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
1441 repo.parents()[0].p2().branch() != branch:
b500a663a2c7 commit: amending with --close-branch (issue3445)
Iulian Stana <julian.stana@gmail.com>
parents: 19253
diff changeset
1442 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
1443
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1444 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
1445 if ui.configbool('ui', 'commitsubrepos'):
19232
b592fd33233a amend: complain more comprehensibly about subrepos
Matt Mackall <mpm@selenic.com>
parents: 19217
diff changeset
1446 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
1447
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1448 old = repo['.']
22417
ca854cd4a26a commit: correctly check commit mutability during commit --amend
Augie Fackler <raf@durin42.com>
parents: 22405
diff changeset
1449 if not old.mutable():
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1450 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
1451 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
1452 raise util.Abort(_('cannot amend while merging'))
22952
8792ac090e3b obsolete: add allowunstable option
Durham Goode <durham@fb.com>
parents: 22926
diff changeset
1453 allowunstable = obsolete.isenabled(repo, obsolete.allowunstableopt)
8792ac090e3b obsolete: add allowunstable option
Durham Goode <durham@fb.com>
parents: 22926
diff changeset
1454 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
1455 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
1456
20700
b0153cb8b64e commit: create new amend changeset as secret correctly for "--secret" option
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20633
diff changeset
1457 # 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
1458 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
1459 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
1460 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
1461 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
1462 match,
b0153cb8b64e commit: create new amend changeset as secret correctly for "--secret" option
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20633
diff changeset
1463 extra=extra)
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1464
17264
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1465 current = repo._bookmarkcurrent
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1466 marks = old.bookmarks()
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1467 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
1468 if node == old.node():
13899
a7cd0eee396b commit: note when files are missing
Martin Geisler <mg@aragost.com>
parents: 13893
diff changeset
1469 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
1470 return 1
17264
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1471 elif marks:
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1472 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
1473 (marks, old.hex(), hex(node)))
17922
7f5dab94e48c bookmarks: introduce a bmstore to manage bookmark persistence
Augie Fackler <raf@durin42.com>
parents: 17912
diff changeset
1474 newmarks = repo._bookmarks
17264
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1475 for bm in marks:
17922
7f5dab94e48c bookmarks: introduce a bmstore to manage bookmark persistence
Augie Fackler <raf@durin42.com>
parents: 17912
diff changeset
1476 newmarks[bm] = node
17264
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1477 if bm == current:
ec7b9bec19c9 strip: move bookmarks to nearest ancestor rather than '.'
Augie Fackler <raf@durin42.com>
parents: 17260
diff changeset
1478 bookmarks.setcurrent(repo, bm)
17922
7f5dab94e48c bookmarks: introduce a bmstore to manage bookmark persistence
Augie Fackler <raf@durin42.com>
parents: 17912
diff changeset
1479 newmarks.write()
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1480 else:
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1481 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
1482 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
1483 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
1484 basebackup = baseui.backupconfig('phases', 'new-commit')
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1485 try:
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1486 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
1487 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
1488 # 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
1489 baseui.setconfig('phases', 'new-commit', 'secret', 'commit')
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1490
22248
75618a223e18 commit: change "editform" to distinguish merge commits from others
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22218
diff changeset
1491 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
1492 editor = cmdutil.getcommiteditor(editform=editform, **opts)
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1493 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
1494 match,
22010
41e969cb9468 commit: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22009
diff changeset
1495 editor=editor,
21414
37a302f0e297 commit: use "getcommiteditor()" instead of explicit editor choice
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21413
diff changeset
1496 extra=extra)
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1497 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
1498 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
1499 repo.baseui.restoreconfig(basebackup)
19440
4a0d0616c47d commit: enable --secret option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 19439
diff changeset
1500
16458
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1501
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1502 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
1503
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1504 if not node:
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1505 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
1506 if stat[3]:
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1507 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
1508 "'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
1509 else:
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1510 ui.status(_("nothing changed\n"))
55982f62651f commit: add option to amend the working dir parent
Idan Kamara <idankk86@gmail.com>
parents: 16427
diff changeset
1511 return 1
11173
5b48d819d5f9 commit: note new branch heads rather than topological heads
Matt Mackall <mpm@selenic.com>
parents: 11169
diff changeset
1512
18688
79107fad06aa commit: factor out status printing into a helper function
Kevin Bullock <kbullock@ringworld.org>
parents: 18687
diff changeset
1513 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
1514
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1515 @command('config|showconfig|debugconfig',
20572
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1516 [('u', 'untrusted', None, _('show untrusted configuration options')),
20782
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1517 ('e', 'edit', None, _('edit user config')),
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1518 ('l', 'local', None, _('edit repository config')),
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1519 ('g', 'global', None, _('edit global config'))],
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
1520 _('[-u] [NAME]...'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
1521 optionalrepo=True)
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1522 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
1523 """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
1524
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1525 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
1526
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1527 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
1528 of that config item.
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1529
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1530 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
1531 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
1532
20783
43054dc84abd config: mention edit options and config topic in help
Matt Mackall <mpm@selenic.com>
parents: 20782
diff changeset
1533 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
1534 --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
1535 repository-level config file.
43054dc84abd config: mention edit options and config topic in help
Matt Mackall <mpm@selenic.com>
parents: 20782
diff changeset
1536
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1537 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
1538 for each config item.
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1539
20783
43054dc84abd config: mention edit options and config topic in help
Matt Mackall <mpm@selenic.com>
parents: 20782
diff changeset
1540 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
1541
22316
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1542 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
1543
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1544 """
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1545
20782
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1546 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
1547 if opts.get('local') and opts.get('global'):
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1548 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
1549
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1550 if opts.get('local'):
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1551 if not repo:
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1552 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
1553 paths = [repo.join('hgrc')]
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1554 elif opts.get('global'):
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1555 paths = scmutil.systemrcpath()
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1556 else:
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1557 paths = scmutil.userrcpath()
13fcb9ca9ccc config: add --global and --local flags
Matt Mackall <mpm@selenic.com>
parents: 20773
diff changeset
1558
20572
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1559 for f in paths:
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1560 if os.path.exists(f):
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1561 break
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1562 else:
22383
f58b41f6708b config: give more fine-tuned sample hgrcs to this command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 22381
diff changeset
1563 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
1564 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
1565 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
1566 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
1567 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
1568 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
1569
20572
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1570 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
1571 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
1572 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
1573 fp.close()
02d0d3aa42e3 config: add example config file when -e called with no config
Matt Mackall <mpm@selenic.com>
parents: 20572
diff changeset
1574
20572
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1575 editor = ui.geteditor()
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1576 util.system("%s \"%s\"" % (editor, f),
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1577 onerr=util.Abort, errprefix=_("edit failed"),
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1578 out=ui.fout)
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1579 return
c724cb0141ee config: add initial implementation of --edit
Matt Mackall <mpm@selenic.com>
parents: 20570
diff changeset
1580
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1581 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
1582 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
1583 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
1584 if values:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1585 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
1586 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
1587 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
1588 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
1589 matched = False
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1590 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
1591 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
1592 sectname = section + '.' + name
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1593 if values:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1594 for v in values:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1595 if v == section:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1596 ui.debug('%s: ' %
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1597 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
1598 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
1599 matched = True
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1600 elif v == sectname:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1601 ui.debug('%s: ' %
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1602 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
1603 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
1604 matched = True
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1605 else:
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1606 ui.debug('%s: ' %
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1607 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
1608 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
1609 matched = True
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1610 if matched:
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1611 return 0
816be4ca4ae2 config: exit non zero on non-existent config option (issue4247)
Aaron Kushner <akushner@fb.com>
parents: 22314
diff changeset
1612 return 1
20570
c21e1e3ab915 config: move showconfig code and add config as primary alias
Matt Mackall <mpm@selenic.com>
parents: 20558
diff changeset
1613
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1614 @command('copy|cp',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1615 [('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
1616 ('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
1617 ] + walkopts + dryrunopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1618 _('[OPTION]... [SOURCE]... DEST'))
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
1619 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
1620 """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
1621
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
1622 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
1623 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
1624 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
1625
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
1626 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
1627 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
1628 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
1629
7807
bd8f44638847 help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents: 7765
diff changeset
1630 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
1631 before that, see :hg:`revert`.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1632
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
1633 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
1634 """
4914
9a2a73ea6135 repo locks: use True/False
Matt Mackall <mpm@selenic.com>
parents: 4906
diff changeset
1635 wlock = repo.wlock(False)
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
1636 try:
5610
2493a478f395 copy: handle rename internally
Matt Mackall <mpm@selenic.com>
parents: 5589
diff changeset
1637 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
1638 finally:
8109
496ae1ea4698 switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents: 8088
diff changeset
1639 wlock.release()
363
ae96b7e1318d Add hg copy
mpm@selenic.com
parents: 355
diff changeset
1640
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
1641 @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
1642 def debugancestor(ui, repo, *args):
1262
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1643 """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
1644 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
1645 index, rev1, rev2 = args
13970
d13913355390 move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents: 13965
diff changeset
1646 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
1647 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
1648 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
1649 if not repo:
12067
a4fbbe0fbc38 Lowercase error messages
Martin Geisler <mg@lazybytes.net>
parents: 11881
diff changeset
1650 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
1651 "(.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
1652 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
1653 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
1654 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
1655 else:
81afdd016867 debugancestor: make the index argument optional, defaulting to 00changelog.i
Bryan O'Sullivan <bos@serpentine.com>
parents: 6171
diff changeset
1656 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
1657 a = r.ancestor(lookup(rev1), lookup(rev2))
1262
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1658 ui.write("%d:%s\n" % (r.rev(a), hex(a)))
325c07fd2ebd Add debugancestor command
mpm@selenic.com
parents: 1257
diff changeset
1659
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1660 @command('debugbuilddag',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1661 [('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
1662 ('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
1663 ('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
1664 _('[OPTION]... [TEXT]'))
14283
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1665 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
1666 mergeable_file=False,
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1667 overwritten_file=False,
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1668 new_file=False):
14283
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1669 """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
1670
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1671 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
1672 command line.
11337
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1673
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1674 Elements:
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1675
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1676 - "+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
1677 - "." 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
1678 - "$" 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
1679 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
1680 - "<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
1681 - "*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
1682 - "*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
1683 - "/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
1684 - ":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
1685 - "@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
1686 - "#...\\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
1687
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1688 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
1689
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1690 A backref is either
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1691
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1692 - 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
1693 node, or
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1694 - 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
1695 - 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
1696
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1697 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
1698 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
1699 """
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1700
14283
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1701 if text is None:
035489c9ea53 debugbuilddag: read DAG from stdin if not given on cmdline
Martin Geisler <mg@aragost.com>
parents: 14279
diff changeset
1702 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
1703 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
1704
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1705 cl = repo.changelog
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1706 if len(cl) > 0:
11342
aecabad8dd7a commands: get rid of generic exception in debugbuilddag
Martin Geisler <mg@aragost.com>
parents: 11338
diff changeset
1707 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
1708
14279
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1709 # determine number of revs in DAG
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1710 total = 0
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1711 for type, data in dagparser.parsedag(text):
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1712 if type == 'n':
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1713 total += 1
11337
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1714
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1715 if mergeable_file:
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1716 linesperrev = 2
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1717 # make a file with k lines per rev
14279
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1718 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
1719 initialmergedlines.append("")
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1720
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1721 tags = []
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1722
15875
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1723 lock = tr = None
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1724 try:
15875
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1725 lock = repo.lock()
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1726 tr = repo.transaction("builddag")
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1727
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1728 at = -1
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1729 atbranch = 'default'
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1730 nodeids = []
16219
28c5648771d1 debugbuilddag: fix starting a dag on a non-default branch
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 16191
diff changeset
1731 id = 0
28c5648771d1 debugbuilddag: fix starting a dag on a non-default branch
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 16191
diff changeset
1732 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
1733 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
1734 if type == 'n':
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
1735 ui.note(('node %s\n' % str(data)))
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1736 id, ps = data
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1737
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1738 files = []
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1739 fctxs = {}
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1740
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1741 p2 = None
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1742 if mergeable_file:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1743 fn = "mf"
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1744 p1 = repo[ps[0]]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1745 if len(ps) > 1:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1746 p2 = repo[ps[1]]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1747 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
1748 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
1749 p2)]
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1750 m3 = simplemerge.Merge3Text(base, local, other)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1751 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
1752 ml.append("")
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1753 elif at > 0:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1754 ml = p1[fn].data().split("\n")
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1755 else:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1756 ml = initialmergedlines
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1757 ml[id * linesperrev] += " r%i" % id
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1758 mergedtext = "\n".join(ml)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1759 files.append(fn)
21689
503bb3af70fe memfilectx: call super.__init__ instead of duplicating code
Sean Farley <sean.michael.farley@gmail.com>
parents: 21585
diff changeset
1760 fctxs[fn] = context.memfilectx(repo, fn, mergedtext)
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1761
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1762 if overwritten_file:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1763 fn = "of"
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1764 files.append(fn)
21689
503bb3af70fe memfilectx: call super.__init__ instead of duplicating code
Sean Farley <sean.michael.farley@gmail.com>
parents: 21585
diff changeset
1765 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
1766
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1767 if new_file:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1768 fn = "nf%i" % id
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1769 files.append(fn)
21689
503bb3af70fe memfilectx: call super.__init__ instead of duplicating code
Sean Farley <sean.michael.farley@gmail.com>
parents: 21585
diff changeset
1770 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
1771 if len(ps) > 1:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1772 if not p2:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1773 p2 = repo[ps[1]]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1774 for fn in p2:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1775 if fn.startswith("nf"):
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1776 files.append(fn)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1777 fctxs[fn] = p2[fn]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1778
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1779 def fctxfn(repo, cx, path):
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1780 return fctxs.get(path)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1781
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1782 if len(ps) == 0 or ps[0] < 0:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1783 pars = [None, None]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1784 elif len(ps) == 1:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1785 pars = [nodeids[ps[0]], None]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1786 else:
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1787 pars = [nodeids[p] for p in ps]
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1788 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
1789 date=(id, 0),
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1790 user="debugbuilddag",
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1791 extra={'branch': atbranch})
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1792 nodeid = repo.commitctx(cx)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1793 nodeids.append(nodeid)
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1794 at = id
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1795 elif type == 'l':
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1796 id, name = data
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
1797 ui.note(('tag %s\n' % name))
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1798 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
1799 elif type == 'a':
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
1800 ui.note(('branch %s\n' % data))
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1801 atbranch = data
14279
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1802 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
1803 tr.close()
15875
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1804
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1805 if tags:
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1806 repo.opener.write("localtags", "".join(tags))
14163
38184a72d793 debugbuilddag: use memctx for speed
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14157
diff changeset
1807 finally:
14279
b039b667515d debugbuilddag: output progress information
Martin Geisler <mg@aragost.com>
parents: 14271
diff changeset
1808 ui.progress(_('building'), None)
15875
7eca9db689d6 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com>
parents: 15862
diff changeset
1809 release(tr, lock)
11337
0f3c8a47960e debugbuilddag: build a changelog dag from a concise description
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11336
diff changeset
1810
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1811 @command('debugbundle',
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1812 [('a', 'all', None, _('show all details'))],
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1813 _('FILE'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1814 norepo=True)
13724
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1815 def debugbundle(ui, bundlepath, all=None, **opts):
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1816 """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
1817 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
1818 try:
21064
4d9d490d7bbe bundle2: add a ui argument to readbundle
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21063
diff changeset
1819 gen = exchange.readbundle(ui, f, bundlepath)
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1820 if all:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
1821 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
1822
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1823 def showchunks(named):
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1824 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
1825 chain = None
14494
1ffeeb91c55d check-code: flag 0/1 used as constant Boolean expression
Martin Geisler <mg@lazybytes.net>
parents: 14485
diff changeset
1826 while True:
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1827 chunkdata = gen.deltachunk(chain)
13724
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1828 if not chunkdata:
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1829 break
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1830 node = chunkdata['node']
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1831 p1 = chunkdata['p1']
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1832 p2 = chunkdata['p2']
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1833 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
1834 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
1835 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
1836 ui.write("%s %s %s %s %s %s\n" %
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1837 (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
1838 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
1839 chain = node
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1840
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1841 chunkdata = gen.changelogheader()
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1842 showchunks("changelog")
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1843 chunkdata = gen.manifestheader()
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1844 showchunks("manifest")
14494
1ffeeb91c55d check-code: flag 0/1 used as constant Boolean expression
Martin Geisler <mg@lazybytes.net>
parents: 14485
diff changeset
1845 while True:
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1846 chunkdata = gen.filelogheader()
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1847 if not chunkdata:
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1848 break
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1849 fname = chunkdata['filename']
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1850 showchunks(fname)
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1851 else:
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1852 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
1853 chain = None
14494
1ffeeb91c55d check-code: flag 0/1 used as constant Boolean expression
Martin Geisler <mg@lazybytes.net>
parents: 14485
diff changeset
1854 while True:
14144
3c3c53d8343a unbundler: separate delta and header parsing
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 14141
diff changeset
1855 chunkdata = gen.deltachunk(chain)
13747
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1856 if not chunkdata:
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1857 break
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1858 node = chunkdata['node']
cede00420e1e code indentation fixes
Patrick Mezard <pmezard@gmail.com>
parents: 13741
diff changeset
1859 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
1860 chain = node
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
1861 finally:
13724
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1862 f.close()
fe57046e9448 commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13723
diff changeset
1863
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1864 @command('debugcheckstate', [], '')
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
1865 def debugcheckstate(ui, repo):
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
1866 """validate the correctness of the current dirstate"""
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1867 parent1, parent2 = repo.dirstate.parents()
6747
f6c00b17387c use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents: 6746
diff changeset
1868 m1 = repo[parent1].manifest()
f6c00b17387c use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents: 6746
diff changeset
1869 m2 = repo[parent2].manifest()
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1870 errors = 0
4906
30847b8af7ca dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents: 4904
diff changeset
1871 for f in repo.dirstate:
30847b8af7ca dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents: 4904
diff changeset
1872 state = repo.dirstate[f]
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1873 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
1874 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
1875 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1876 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
1877 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
1878 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1879 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
1880 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
1881 (f, state))
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1882 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1883 for f in m1:
4906
30847b8af7ca dirstate: add __contains__ and make __getitem__ more useful
Matt Mackall <mpm@selenic.com>
parents: 4904
diff changeset
1884 state = repo.dirstate[f]
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1885 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
1886 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
1887 errors += 1
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1888 if errors:
1602
fb4149eebdd4 strictly adher to 80 chars per line
Muli Ben-Yehuda <mulix@mulix.org>
parents: 1601
diff changeset
1889 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
1890 raise util.Abort(error)
460
6409d9a0df43 add dirstate debugging commands
mpm@selenic.com
parents: 452
diff changeset
1891
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1892 @command('debugcommands', [], _('[COMMAND]'), norepo=True)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1893 def debugcommands(ui, cmd='', *args):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1894 """list all available commands and options"""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1895 for cmd, vals in sorted(table.iteritems()):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1896 cmd = cmd.split('|')[0].strip('^')
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1897 opts = ', '.join([i[1] for i in vals[1]])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1898 ui.write('%s: %s\n' % (cmd, opts))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1899
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1900 @command('debugcomplete',
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1901 [('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
1902 _('[-o] CMD'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
1903 norepo=True)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1904 def debugcomplete(ui, cmd='', **opts):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1905 """returns the completion list associated with the given command"""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1906
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1907 if opts.get('options'):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1908 options = []
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1909 otables = [globalopts]
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1910 if cmd:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1911 aliases, entry = cmdutil.findcmd(cmd, table, False)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1912 otables.append(entry[1])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1913 for t in otables:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1914 for o in t:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1915 if "(DEPRECATED)" in o[3]:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1916 continue
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1917 if o[0]:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1918 options.append('-%s' % o[0])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1919 options.append('--%s' % o[1])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1920 ui.write("%s\n" % "\n".join(options))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1921 return
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1922
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1923 cmdlist = cmdutil.findpossible(cmd, table)
11276
f28b58e35768 revset: add a debugrevspec command
Matt Mackall <mpm@selenic.com>
parents: 11273
diff changeset
1924 if ui.verbose:
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1925 cmdlist = [' '.join(c[0]) for c in cmdlist.values()]
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
1926 ui.write("%s\n" % "\n".join(sorted(cmdlist)))
8812
859f841937d0 subrepo: introduce basic state parsing
Matt Mackall <mpm@selenic.com>
parents: 8810
diff changeset
1927
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1928 @command('debugdag',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1929 [('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
1930 ('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
1931 ('', 'dots', None, _('use dots for runs')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
1932 ('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
1933 _('[OPTION]... [FILE [REV]...]'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
1934 optionalrepo=True)
11336
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1935 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
1936 """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
1937
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1938 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
1939 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
1940
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1941 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
1942 """
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1943 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
1944 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
1945 if file_:
13970
d13913355390 move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents: 13965
diff changeset
1946 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
1947 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
1948 def events():
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1949 for r in rlog:
22310
aabf367306d5 debugdag: stop wrongly sorting parents
Henrik Stuart <hg@hstuart.dk>
parents: 22305
diff changeset
1950 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
1951 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
1952 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
1953 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
1954 elif repo:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1955 cl = repo.changelog
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1956 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
1957 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
1958 if tags:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1959 labels = {}
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1960 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
1961 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
1962 def events():
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1963 b = "default"
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1964 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
1965 if branches:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1966 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
1967 if newb != b:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1968 yield 'a', newb
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1969 b = newb
22310
aabf367306d5 debugdag: stop wrongly sorting parents
Henrik Stuart <hg@hstuart.dk>
parents: 22305
diff changeset
1970 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
1971 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
1972 if tags:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1973 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
1974 if ls:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1975 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
1976 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
1977 else:
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1978 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
1979
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1980 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
1981 addspaces=spaces,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1982 wraplabels=True,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1983 wrapannotations=True,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1984 wrapnonlinear=dots,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1985 usedots=dots,
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1986 maxlinewidth=70):
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1987 ui.write(line)
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1988 ui.write("\n")
3dfbe26cfded debugdag and debugindexdag: emit changelog/revlog DAGs as concise text
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 11331
diff changeset
1989
14323
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
1990 @command('debugdata',
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
1991 [('c', 'changelog', False, _('open changelog')),
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
1992 ('m', 'manifest', False, _('open manifest'))],
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
1993 _('-c|-m|FILE REV'))
19872
681f7b9213a4 check-code: check for spaces around = for named parameters
Mads Kiilerich <madski@unity3d.com>
parents: 19801
diff changeset
1994 def debugdata(ui, repo, file_, rev=None, **opts):
4258
b11a2fb59cf5 revlog: simplify revlog version handling
Matt Mackall <mpm@selenic.com>
parents: 4257
diff changeset
1995 """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
1996 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
1997 file_, rev = None, file_
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
1998 elif rev is None:
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
1999 raise error.CommandError('debugdata', _('invalid arguments'))
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2000 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
2001 try:
1cc7c0cbc30b Fix traceback during invalid rev identifier for debugdata
Anupam Kapoor<anupam.kapoor@gmail.com>
parents: 1312
diff changeset
2002 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
2003 except KeyError:
3072
bc3fe3b5b785 Never apply string formatting to generated errors with util.Abort.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3071
diff changeset
2004 raise util.Abort(_('invalid revision identifier %s') % rev)
1039
4296754ba7b4 Add debugdata for dumping revlog revision data
mpm@selenic.com
parents: 1037
diff changeset
2005
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2006 @command('debugdate',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2007 [('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
2008 _('[-e] DATE [RANGE]'),
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2009 norepo=True, optionalrepo=True)
3812
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2010 def debugdate(ui, date, range=None, **opts):
3805
299d6cce6c0b add debugdate command
Matt Mackall <mpm@selenic.com>
parents: 3804
diff changeset
2011 """parse and display a date"""
3812
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2012 if opts["extended"]:
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2013 d = util.parsedate(date, util.extendeddateformats)
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2014 else:
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2015 d = util.parsedate(date)
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2016 ui.write(("internal: %s %s\n") % d)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2017 ui.write(("standard: %s\n") % util.datestr(d))
3812
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2018 if range:
bf6ab30559e6 Add date matching support
Matt Mackall <mpm@selenic.com>
parents: 3805
diff changeset
2019 m = util.matchdate(range)
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2020 ui.write(("match: %s\n") % m(d[0]))
3805
299d6cce6c0b add debugdate command
Matt Mackall <mpm@selenic.com>
parents: 3804
diff changeset
2021
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2022 @command('debugdiscovery',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2023 [('', 'old', None, _('use old-style discovery')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2024 ('', 'nonheads', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2025 _('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
2026 ] + remoteopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2027 _('[-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
2028 def debugdiscovery(ui, repo, remoteurl="default", **opts):
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2029 """runs the changeset discovery protocol in isolation"""
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2030 remoteurl, branches = hg.parseurl(ui.expandpath(remoteurl),
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2031 opts.get('branch'))
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
2032 remote = hg.peer(repo, opts, remoteurl)
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2033 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
2034
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2035 # make sure tests are repeatable
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2036 random.seed(12323)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2037
17191
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
2038 def doit(localheads, remoteheads, remote=remote):
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2039 if opts.get('old'):
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2040 if localheads:
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2041 raise util.Abort('cannot use localheads with old style '
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2042 'discovery')
17192
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17191
diff changeset
2043 if not util.safehasattr(remote, 'branches'):
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17191
diff changeset
2044 # enable in-client legacy support
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17191
diff changeset
2045 remote = localrepo.locallegacypeer(remote.local())
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2046 common, _in, hds = treediscovery.findcommonincoming(repo, remote,
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2047 force=True)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2048 common = set(common)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2049 if not opts.get('nonheads'):
18254
2dfe519d435d debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents: 18210
diff changeset
2050 ui.write(("unpruned common: %s\n") %
2dfe519d435d debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents: 18210
diff changeset
2051 " ".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
2052 dag = dagutil.revlogdag(repo.changelog)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2053 all = dag.ancestorset(dag.internalizeall(common))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2054 common = dag.externalizeall(dag.headsetofconnecteds(all))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2055 else:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2056 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
2057 common = set(common)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2058 rheads = set(hds)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2059 lheads = set(repo.heads())
18254
2dfe519d435d debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents: 18210
diff changeset
2060 ui.write(("common heads: %s\n") %
2dfe519d435d debugdiscovery: report heads in sorted order
Mads Kiilerich <mads at kiilerich.com>
parents: 18210
diff changeset
2061 " ".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
2062 if lheads <= common:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2063 ui.write(("local is subset\n"))
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2064 elif rheads <= common:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2065 ui.write(("remote is subset\n"))
14164
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2066
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2067 serverlogs = opts.get('serverlog')
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2068 if serverlogs:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2069 for filename in serverlogs:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2070 logfile = open(filename, 'r')
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2071 try:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2072 line = logfile.readline()
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2073 while line:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2074 parts = line.strip().split(';')
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2075 op = parts[1]
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2076 if op == 'cg':
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2077 pass
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2078 elif op == 'cgss':
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2079 doit(parts[2].split(' '), parts[3].split(' '))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2080 elif op == 'unb':
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2081 doit(parts[3].split(' '), parts[2].split(' '))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2082 line = logfile.readline()
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2083 finally:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2084 logfile.close()
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2085
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2086 else:
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2087 remoterevs, _checkout = hg.addbranchrevs(repo, remote, branches,
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2088 opts.get('remote_head'))
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2089 localrevs = opts.get('local_head')
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2090 doit(localrevs, remoterevs)
cb98fed52495 discovery: add new set-based discovery
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 14163
diff changeset
2091
17370
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2092 @command('debugfileset',
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2093 [('r', 'rev', '', _('apply the filespec on this revision'), _('REV'))],
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2094 _('[-r REV] FILESPEC'))
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2095 def debugfileset(ui, repo, expr, **opts):
14511
30506b894359 filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents: 14509
diff changeset
2096 '''parse and apply a fileset specification'''
17370
3fe199579323 debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu>
parents: 17343
diff changeset
2097 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
2098 if ui.verbose:
30506b894359 filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents: 14509
diff changeset
2099 tree = fileset.parse(expr)[0]
30506b894359 filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents: 14509
diff changeset
2100 ui.note(tree, "\n")
14673
b0566467c492 fileset: drop matchfn
Matt Mackall <mpm@selenic.com>
parents: 14671
diff changeset
2101
20404
466707047c8d commands: use ctx.getfileset instead of fileset.getfileset
Augie Fackler <raf@durin42.com>
parents: 20389
diff changeset
2102 for f in ctx.getfileset(expr):
14551
68d814a3cefd fileset: basic pattern and boolean support
Matt Mackall <mpm@selenic.com>
parents: 14548
diff changeset
2103 ui.write("%s\n" % f)
14511
30506b894359 filesets: introduce basic fileset expression parser
Matt Mackall <mpm@selenic.com>
parents: 14509
diff changeset
2104
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2105 @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
2106 def debugfsinfo(ui, path="."):
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2107 """show information detected about current filesystem"""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2108 util.writefile('.debugfsinfo', '')
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2109 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
2110 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
2111 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
2112 ui.write(('case-sensitive: %s\n') % (util.checkcase('.debugfsinfo')
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2113 and 'yes' or 'no'))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2114 os.unlink('.debugfsinfo')
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2115
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2116 @command('debuggetbundle',
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2117 [('H', 'head', [], _('id of head node'), _('ID')),
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2118 ('C', 'common', [], _('id of common node'), _('ID')),
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2119 ('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
2120 _('REPO FILE [-H|-C ID]...'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2121 norepo=True)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2122 def debuggetbundle(ui, repopath, bundlepath, head=None, common=None, **opts):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2123 """retrieves a bundle from a repo
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2124
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2125 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
2126 given file.
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2127 """
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
2128 repo = hg.peer(ui, opts, repopath)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2129 if not repo.capable('getbundle'):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2130 raise util.Abort("getbundle() not supported by target repository")
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2131 args = {}
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2132 if common:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2133 args['common'] = [bin(s) for s in common]
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2134 if head:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2135 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
2136 # 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
2137 args['bundlecaps'] = None
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2138 bundle = repo.getbundle('debug', **args)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2139
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2140 bundletype = opts.get('type', 'bzip2').lower()
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2141 btypes = {'none': 'HG10UN', 'bzip2': 'HG10BZ', 'gzip': 'HG10GZ'}
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2142 bundletype = btypes.get(bundletype)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2143 if bundletype not in changegroup.bundletypes:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2144 raise util.Abort(_('unknown bundle type specified with --type'))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2145 changegroup.writebundle(bundle, bundlepath, bundletype)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2146
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2147 @command('debugignore', [], '')
13396
3e66eec9a814 add debugignore which yields the combined ignore patten of the .hgignore files
jfh <jason@jasonfharris.com>
parents: 13388
diff changeset
2148 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
2149 """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
2150 ignore = repo.dirstate._ignore
14949
a4435770cf57 debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents: 14943
diff changeset
2151 includepat = getattr(ignore, 'includepat', None)
a4435770cf57 debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents: 14943
diff changeset
2152 if includepat is not None:
a4435770cf57 debugignore: use getattr instead of hasattr
Augie Fackler <durin42@gmail.com>
parents: 14943
diff changeset
2153 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
2154 else:
5e57c199848d debugignore: catch the case when ignore.includepat doesn't exist
jfh <jason@jasonfharris.com>
parents: 13400
diff changeset
2155 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
2156
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2157 @command('debugindex',
14323
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2158 [('c', 'changelog', False, _('open changelog')),
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2159 ('m', 'manifest', False, _('open manifest')),
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2160 ('f', 'format', 0, _('revlog format'), _('FORMAT'))],
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2161 _('[-f FORMAT] -c|-m|FILE'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2162 optionalrepo=True)
19872
681f7b9213a4 check-code: check for spaces around = for named parameters
Mads Kiilerich <madski@unity3d.com>
parents: 19801
diff changeset
2163 def debugindex(ui, repo, file_=None, **opts):
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 593
diff changeset
2164 """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
2165 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
2166 format = opts.get('format', 0)
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2167 if format not in (0, 1):
13470
64ce09e93aff commands: mark strings for translation
Martin Geisler <mg@aragost.com>
parents: 13454
diff changeset
2168 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
2169
14254
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2170 generaldelta = r.version & revlog.REVLOGGENERALDELTA
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2171 if generaldelta:
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2172 basehdr = ' delta'
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2173 else:
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2174 basehdr = ' base'
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2175
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2176 if format == 0:
14254
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2177 ui.write(" rev offset length " + basehdr + " linkrev"
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2178 " nodeid p1 p2\n")
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2179 elif format == 1:
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2180 ui.write(" rev flag offset length"
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2181 " size " + basehdr + " link p1 p2"
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2182 " nodeid\n")
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2183
6750
fb42030d79d6 add __len__ and __iter__ methods to repo and revlog
Matt Mackall <mpm@selenic.com>
parents: 6749
diff changeset
2184 for i in r:
2072
74d3f5336b66 Implement revlogng.
mason@suse.com
parents: 2042
diff changeset
2185 node = r.node(i)
14254
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2186 if generaldelta:
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2187 base = r.deltaparent(i)
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2188 else:
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2189 base = r.chainbase(i)
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2190 if format == 0:
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2191 try:
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2192 pp = r.parents(node)
16689
f366d4c2ff34 cleanup: replace naked excepts with except Exception: ...
Brodie Rao <brodie@sf.io>
parents: 16683
diff changeset
2193 except Exception:
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2194 pp = [nullid, nullid]
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2195 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
2196 i, r.start(i), r.length(i), base, r.linkrev(i),
12893
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2197 short(node), short(pp[0]), short(pp[1])))
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2198 elif format == 1:
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2199 pr = r.parentrevs(i)
15ca4bfecfe3 debugindex: add --format flag to allow debugging parentdelta
Matt Mackall <mpm@selenic.com>
parents: 12863
diff changeset
2200 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
2201 i, r.flags(i), r.start(i), r.length(i), r.rawsize(i),
14254
d6a762d93b77 debugindex: change output for generaldelta revlogs
Sune Foldager <cryo@cyanite.org>
parents: 14252
diff changeset
2202 base, r.linkrev(i), pr[0], pr[1], short(node)))
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
2203
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2204 @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
2205 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
2206 """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
2207 r = None
8a0e5b0c0ba9 debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents: 12131
diff changeset
2208 if repo:
8a0e5b0c0ba9 debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents: 12131
diff changeset
2209 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
2210 if len(filelog):
8a0e5b0c0ba9 debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents: 12131
diff changeset
2211 r = filelog
8a0e5b0c0ba9 debugindex(dot): try to access filelogs through repo, if possible
Sune Foldager <sune.foldager@edlund.dk>
parents: 12131
diff changeset
2212 if not r:
13970
d13913355390 move opener from util to scmutil
Adrian Buehlmann <adrian@cadifra.com>
parents: 13965
diff changeset
2213 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
2214 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
2215 for i in r:
2287
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
2216 node = r.node(i)
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
2217 pp = r.parents(node)
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
2218 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
2219 if pp[1] != nullid:
3f18d1eea370 Update debugindexdot to work with RevlogNG.
Samuel Masham <samuel.masham@gmail.com>
parents: 2283
diff changeset
2220 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
2221 ui.write("}\n")
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
2222
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2223 @command('debuginstall', [], '', norepo=True)
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2224 def debuginstall(ui):
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
2225 '''test Mercurial installation
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
2226
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
2227 Returns 0 on success.
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
2228 '''
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2229
3846
18855084b922 Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents: 3844
diff changeset
2230 def writetemp(contents):
4849
035489f60842 Use a prefix for debuginstall tempfiles.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4818
diff changeset
2231 (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
2232 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
2233 f.write(contents)
18855084b922 Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents: 3844
diff changeset
2234 f.close()
18855084b922 Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents: 3844
diff changeset
2235 return name
18855084b922 Make debuginstall actually attempt to use external patch and merge
Matt Mackall <mpm@selenic.com>
parents: 3844
diff changeset
2236
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2237 problems = 0
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2238
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2239 # encoding
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2240 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
2241 try:
7948
de377b1a9a84 move encoding bits from util to encoding
Matt Mackall <mpm@selenic.com>
parents: 7942
diff changeset
2242 encoding.fromlocal("test")
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2243 except util.Abort, inst:
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2244 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
2245 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
2246 problems += 1
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2247
20740
535283a7f5dd debuginstall: add Python information to debuginstall output (issue4128)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents: 20702
diff changeset
2248 # Python
20741
f1dfef0a9352 debuginstall: change showing to checking for consistency and future checking
Matt Mackall <mpm@selenic.com>
parents: 20740
diff changeset
2249 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
2250 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
2251 % ("%s.%s.%s" % sys.version_info[:3]))
17392
bdd248666dbc debuginstall: show directory for Python lib
Adrian Buehlmann <adrian@cadifra.com>
parents: 17386
diff changeset
2252 ui.status(_("checking Python lib (%s)...\n")
bdd248666dbc debuginstall: show directory for Python lib
Adrian Buehlmann <adrian@cadifra.com>
parents: 17386
diff changeset
2253 % os.path.dirname(os.__file__))
bdd248666dbc debuginstall: show directory for Python lib
Adrian Buehlmann <adrian@cadifra.com>
parents: 17386
diff changeset
2254
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2255 # compiled modules
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2256 ui.status(_("checking installed modules (%s)...\n")
12004
1fe4702fe2df debuginstall: report installpath
Matt Mackall <mpm@selenic.com>
parents: 11969
diff changeset
2257 % os.path.dirname(__file__))
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2258 try:
12004
1fe4702fe2df debuginstall: report installpath
Matt Mackall <mpm@selenic.com>
parents: 11969
diff changeset
2259 import bdiff, mpatch, base85, osutil
15223
fc035e5370ca pyflakes: clean up some import noise
Matt Mackall <mpm@selenic.com>
parents: 15221
diff changeset
2260 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
2261 except Exception, inst:
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2262 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
2263 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
2264 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
2265 problems += 1
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2266
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2267 # templates
15200
797bf1dc1ff8 debuginstall: report the template path
Matt Mackall <mpm@selenic.com>
parents: 15198
diff changeset
2268 import templater
22634
e48a5d3996c2 templater: introduce templatepaths for getting paths searched for templates
Mads Kiilerich <madski@unity3d.com>
parents: 22626
diff changeset
2269 p = templater.templatepaths()
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2270 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
2271 if p:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2272 m = templater.templatepath("map-cmdline.default")
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2273 if m:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2274 # template found, check if it is working
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2275 try:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2276 templater.templater(m)
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2277 except Exception, inst:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2278 ui.write(" %s\n" % inst)
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2279 p = None
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2280 else:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2281 ui.write(_(" template 'default' not found\n"))
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2282 p = None
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2283 else:
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2284 ui.write(_(" no template directories found\n"))
9a86b5b8e0d8 commands: hg debuginstall checks missing templates (issue4151)
Simon Heimberg <simohe@besonet.ch>
parents: 20364
diff changeset
2285 if not p:
3848
8cbf060f637e Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents: 3846
diff changeset
2286 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
2287 problems += 1
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2288
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2289 # editor
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2290 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
2291 editor = ui.geteditor()
21957
2122b82b6987 debuginstall: handle quoted path for editor (issue4316)
Alexandre Garnier <zigarn@gmail.com>
parents: 21952
diff changeset
2292 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
2293 if not cmdpath:
3855
b9cdd6f2aa43 debuginstall: fix a copy/paste error
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3848
diff changeset
2294 if editor == 'vi':
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2295 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
2296 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
2297 " file)\n"))
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2298 else:
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2299 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
2300 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
2301 " file)\n"))
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2302 problems += 1
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2303
3848
8cbf060f637e Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents: 3846
diff changeset
2304 # check username
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2305 ui.status(_("checking username...\n"))
9734
36c388a1aa51 commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents: 9725
diff changeset
2306 try:
12063
516b000fbb7e cleanup: remove unused variables
Brodie Rao <brodie@bitheap.org>
parents: 12033
diff changeset
2307 ui.username()
9734
36c388a1aa51 commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents: 9725
diff changeset
2308 except util.Abort, e:
36c388a1aa51 commands: call ui.username carefully in debuginstall
Martin Geisler <mg@lazybytes.net>
parents: 9725
diff changeset
2309 ui.write(" %s\n" % e)
12083
ebfc46929f3e help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents: 12067
diff changeset
2310 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
2311 problems += 1
3848
8cbf060f637e Add some remedies and a username check to debuginstall
Matt Mackall <mpm@selenic.com>
parents: 3846
diff changeset
2312
3844
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2313 if not problems:
16934
0c9c41e53f1a debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com>
parents: 16881
diff changeset
2314 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
2315 else:
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2316 ui.write(_("%s problems detected,"
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2317 " please check your install!\n") % problems)
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2318
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2319 return problems
3ba82c3f4bc3 Add debuginstall command to do basic install tests
Matt Mackall <mpm@selenic.com>
parents: 3840
diff changeset
2320
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2321 @command('debugknown', [], _('REPO ID...'), norepo=True)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2322 def debugknown(ui, repopath, *ids, **opts):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2323 """test whether node ids are known to a repo
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2324
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2325 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
2326 and 1s indicating unknown/known.
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2327 """
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
2328 repo = hg.peer(ui, opts, repopath)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2329 if not repo.capable('known'):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2330 raise util.Abort("known() not supported by target repository")
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2331 flags = repo.known([bin(s) for s in ids])
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2332 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
2333
18790
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2334 @command('debuglabelcomplete', [], _('LABEL...'))
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2335 def debuglabelcomplete(ui, repo, *args):
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2336 '''complete "labels" - tags, open branch names, bookmark names'''
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2337
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2338 labels = set()
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2339 labels.update(t[0] for t in repo.tagslist())
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2340 labels.update(repo._bookmarks.keys())
20191
cbe2bcc927cd debuglabelcomplete: simplify with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io>
parents: 20184
diff changeset
2341 labels.update(tag for (tag, heads, tip, closed)
cbe2bcc927cd debuglabelcomplete: simplify with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io>
parents: 20184
diff changeset
2342 in repo.branchmap().iterbranches() if not closed)
18790
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2343 completions = set()
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2344 if not args:
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2345 args = ['']
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2346 for a in args:
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2347 completions.update(l for l in labels if l.startswith(a))
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2348 ui.write('\n'.join(sorted(completions)))
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2349 ui.write('\n')
1e28a7f58f33 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18783
diff changeset
2350
22559
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2351 @command('debuglocks',
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2352 [('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
2353 ('W', 'force-wlock', None,
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2354 _('free the working state lock (DANGEROUS)'))],
23123
c26b7a810749 debuglocks: add missing usage summary
Matt Mackall <mpm@selenic.com>
parents: 23122
diff changeset
2355 _('[OPTION]...'))
22559
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2356 def debuglocks(ui, repo, **opts):
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2357 """show or modify state of locks
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2358
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2359 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
2360 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
2361 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
2362 running if it's not local.
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2363
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2364 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
2365 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
2366 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
2367 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
2368
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2369 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
2370 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
2371 blocked by filesystem permissions.
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2372
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2373 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
2374
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2375 """
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2376
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2377 if opts.get('force_lock'):
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2378 repo.svfs.unlink('lock')
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2379 if opts.get('force_wlock'):
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2380 repo.vfs.unlink('wlock')
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2381 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
2382 return 0
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2383
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2384 now = time.time()
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2385 held = 0
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2386
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2387 def report(vfs, name, method):
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2388 # 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
2389 try:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2390 l = method(False)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2391 except error.LockHeld:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2392 l = None
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2393
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2394 if l:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2395 l.release()
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2396 else:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2397 try:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2398 stat = repo.svfs.lstat(name)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2399 age = now - stat.st_mtime
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2400 user = util.username(stat.st_uid)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2401 locker = vfs.readlock(name)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2402 if ":" in locker:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2403 host, pid = locker.split(':')
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2404 if host == socket.gethostname():
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2405 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
2406 else:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2407 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
2408 % (user, pid, host)
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2409 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
2410 return 1
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2411 except OSError, e:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2412 if e.errno != errno.ENOENT:
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2413 raise
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2414
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2415 ui.write("%-6s free\n" % (name + ":"))
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2416 return 0
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2417
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2418 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
2419 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
2420
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2421 return held
4e0b696a1cb3 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com>
parents: 22554
diff changeset
2422
17830
1cb51d65453d debugobsolete: add --flags option
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 17822
diff changeset
2423 @command('debugobsolete',
1cb51d65453d debugobsolete: add --flags option
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 17822
diff changeset
2424 [('', '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
2425 ('', 'record-parents', False,
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2426 _('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
2427 ('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
2428 ] + commitopts2,
17074
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2429 _('[OBSOLETED [REPLACEMENT] [REPL... ]'))
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2430 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
2431 """create arbitrary obsolete marker
d4a79e075303 debugobsolete: improve command help
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 18479
diff changeset
2432
18854
afab180307be commands: fix typo in debugobsolete docstring
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 18701
diff changeset
2433 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
2434
17292
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2435 def parsenodeid(s):
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2436 try:
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2437 # 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
2438 # 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
2439 # local repository.
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2440 n = bin(s)
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2441 if len(n) != len(nullid):
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2442 raise TypeError()
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2443 return n
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2444 except TypeError:
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2445 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
2446 'node identifiers')
8da6fe276a23 debugobsolete: do not traceback on invalid node identifiers
Patrick Mezard <patrick@mezard.eu>
parents: 17266
diff changeset
2447
17074
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2448 if precursor is not None:
22274
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2449 if opts['rev']:
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2450 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
2451 metadata = {}
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2452 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
2453 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
2454 l = repo.lock()
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2455 try:
17126
8fa8717b47b6 obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 17123
diff changeset
2456 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
2457 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
2458 try:
22218
b629397ca15f debugobsolete: use the new date argument on obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22216
diff changeset
2459 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
2460 if date:
b629397ca15f debugobsolete: use the new date argument on obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22216
diff changeset
2461 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
2462 else:
b629397ca15f debugobsolete: use the new date argument on obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22216
diff changeset
2463 date = None
22272
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2464 prec = parsenodeid(precursor)
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2465 parents = None
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2466 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
2467 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
2468 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
2469 'unknown changesets')
406181ee335f debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22266
diff changeset
2470 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
2471 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
2472 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
2473 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
2474 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
2475 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
2476 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
2477 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
2478 finally:
8fa8717b47b6 obsolete: write obsolete marker inside a transaction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 17123
diff changeset
2479 tr.release()
17074
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2480 finally:
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2481 l.release()
178a2e85d426 debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org
parents: 17071
diff changeset
2482 else:
22274
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2483 if opts['rev']:
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2484 revs = scmutil.revrange(repo, opts['rev'])
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2485 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
2486 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
2487 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
2488 else:
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2489 markers = obsolete.getmarkers(repo)
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2490
10e87c67f1c7 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22273
diff changeset
2491 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
2492 cmdutil.showmarker(ui, m)
17071
11f26e2669aa command: creation of obsolete marker
Pierre-Yves.David@ens-lyon.org
parents: 17059
diff changeset
2493
18792
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2494 @command('debugpathcomplete',
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2495 [('f', 'full', None, _('complete an entire path')),
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2496 ('n', 'normal', None, _('show only normal files')),
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2497 ('a', 'added', None, _('show only added files')),
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2498 ('r', 'removed', None, _('show only removed files'))],
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2499 _('FILESPEC...'))
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2500 def debugpathcomplete(ui, repo, *specs, **opts):
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2501 '''complete part or all of a tracked path
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2502
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2503 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
2504 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
2505
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2506 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
2507 --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
2508
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2509 def complete(path, acceptable):
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2510 dirstate = repo.dirstate
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2511 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
2512 rootdir = repo.root + os.sep
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2513 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
2514 return [], []
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2515 if os.path.isdir(spec):
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2516 spec += '/'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2517 spec = spec[len(rootdir):]
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2518 fixpaths = os.sep != '/'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2519 if fixpaths:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2520 spec = spec.replace(os.sep, '/')
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2521 speclen = len(spec)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2522 fullpaths = opts['full']
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2523 files, dirs = set(), set()
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2524 adddir, addfile = dirs.add, files.add
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2525 for f, st in dirstate.iteritems():
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2526 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
2527 if fixpaths:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2528 f = f.replace('/', os.sep)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2529 if fullpaths:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2530 addfile(f)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2531 continue
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2532 s = f.find(os.sep, speclen)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2533 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
2534 adddir(f[:s])
18792
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2535 else:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2536 addfile(f)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2537 return files, dirs
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2538
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2539 acceptable = ''
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2540 if opts['normal']:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2541 acceptable += 'nm'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2542 if opts['added']:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2543 acceptable += 'a'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2544 if opts['removed']:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2545 acceptable += 'r'
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2546 cwd = repo.getcwd()
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2547 if not specs:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2548 specs = ['.']
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2549
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2550 files, dirs = set(), set()
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2551 for spec in specs:
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2552 f, d = complete(spec, acceptable or 'nmar')
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2553 files.update(f)
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2554 dirs.update(d)
18796
fa6d5c62f3bd pathcomplete: complete directories more conservatively
Bryan O'Sullivan <bryano@fb.com>
parents: 18792
diff changeset
2555 files.update(dirs)
18792
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2556 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
2557 ui.write('\n')
10669e24eb6c completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com>
parents: 18790
diff changeset
2558
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2559 @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
2560 def debugpushkey(ui, repopath, namespace, *keyinfo, **opts):
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2561 '''access the pushkey key/value protocol
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2562
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2563 With two args, list the keys in the given namespace.
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2564
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2565 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
2566 Reports success or failure.
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2567 '''
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2568
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
2569 target = hg.peer(ui, {}, repopath)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2570 if keyinfo:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2571 key, old, new = keyinfo
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2572 r = target.pushkey(namespace, key, old, new)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2573 ui.status(str(r) + '\n')
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2574 return not r
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2575 else:
18255
7ca534f31a83 debugpushkey: list keys sorted
Mads Kiilerich <mads at kiilerich.com>
parents: 18254
diff changeset
2576 for k, v in sorted(target.listkeys(namespace).iteritems()):
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2577 ui.write("%s\t%s\n" % (k.encode('string-escape'),
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2578 v.encode('string-escape')))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2579
16249
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2580 @command('debugpvec', [], _('A B'))
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2581 def debugpvec(ui, repo, a, b=None):
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2582 ca = scmutil.revsingle(repo, a)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2583 cb = scmutil.revsingle(repo, b)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2584 pa = pvec.ctxpvec(ca)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2585 pb = pvec.ctxpvec(cb)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2586 if pa == pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2587 rel = "="
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2588 elif pa > pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2589 rel = ">"
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2590 elif pa < pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2591 rel = "<"
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2592 elif pa | pb:
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2593 rel = "|"
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2594 ui.write(_("a: %s\n") % pa)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2595 ui.write(_("b: %s\n") % pb)
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2596 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
2597 ui.write(_("delta: %d hdist: %d distance: %d relation: %s\n") %
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2598 (abs(pa._depth - pb._depth), pvec._hamming(pa._vec, pb._vec),
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2599 pa.distance(pb), rel))
0d175ac527c1 pvec: introduce pvecs
Matt Mackall <mpm@selenic.com>
parents: 16232
diff changeset
2600
18963
c31b8dc9de67 debugrebuildstate: rename to debugrebuilddirstate
Mads Kiilerich <madski@unity3d.com>
parents: 18962
diff changeset
2601 @command('debugrebuilddirstate|debugrebuildstate',
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2602 [('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
2603 _('[-r REV]'))
18963
c31b8dc9de67 debugrebuildstate: rename to debugrebuilddirstate
Mads Kiilerich <madski@unity3d.com>
parents: 18962
diff changeset
2604 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
2605 """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
2606
cd1ac2e54847 debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents: 18956
diff changeset
2607 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
2608
cd1ac2e54847 debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents: 18956
diff changeset
2609 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
2610 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
2611 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
2612
cd1ac2e54847 debugrebuildstate: clarify that rev can't be specified without -r
Mads Kiilerich <madski@unity3d.com>
parents: 18956
diff changeset
2613 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
2614 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
2615 """
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
2616 ctx = scmutil.revsingle(repo, rev)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2617 wlock = repo.wlock()
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2618 try:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2619 repo.dirstate.rebuild(ctx.node(), ctx.manifest())
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2620 finally:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2621 wlock.release()
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2622
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2623 @command('debugrename',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2624 [('r', 'rev', '', _('revision to debug'), _('REV'))],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2625 _('[-r REV] FILE'))
3652
f4dece0f7016 refactor debugrenamed
Matt Mackall <mpm@selenic.com>
parents: 3651
diff changeset
2626 def debugrename(ui, repo, file1, *pats, **opts):
1194
c165cbf56bb1 Add doc string for debugrename.
bos@serpentine.internal.keyresearch.com
parents: 1193
diff changeset
2627 """dump rename information"""
3652
f4dece0f7016 refactor debugrenamed
Matt Mackall <mpm@selenic.com>
parents: 3651
diff changeset
2628
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
2629 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
2630 m = scmutil.match(ctx, (file1,) + pats, opts)
6764
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
2631 for abs in ctx.walk(m):
8db64464d136 context: add walk method
Matt Mackall <mpm@selenic.com>
parents: 6762
diff changeset
2632 fctx = ctx[abs]
6579
0159b7a36184 walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents: 6578
diff changeset
2633 o = fctx.filelog().renamed(fctx.filenode())
6584
29c77e5dfb3c walk: remove rel and exact returns
Matt Mackall <mpm@selenic.com>
parents: 6583
diff changeset
2634 rel = m.rel(abs)
6579
0159b7a36184 walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents: 6578
diff changeset
2635 if o:
0159b7a36184 walk: pass match object to cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents: 6578
diff changeset
2636 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
2637 else:
f4dece0f7016 refactor debugrenamed
Matt Mackall <mpm@selenic.com>
parents: 3651
diff changeset
2638 ui.write(_("%s not renamed\n") % rel)
1116
0cdd73b0767c Add some rename debugging support
mpm@selenic.com
parents: 1114
diff changeset
2639
14323
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2640 @command('debugrevlog',
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14322
diff changeset
2641 [('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
2642 ('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
2643 ('d', 'dump', False, _('dump index data'))],
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2644 _('-c|-m|FILE'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
2645 optionalrepo=True)
19872
681f7b9213a4 check-code: check for spaces around = for named parameters
Mads Kiilerich <madski@unity3d.com>
parents: 19801
diff changeset
2646 def debugrevlog(ui, repo, file_=None, **opts):
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2647 """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
2648 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
2649
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2650 if opts.get("dump"):
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2651 numrevs = len(r)
21032
67b6f1144e90 debugrevlog: format columns (more) nicely when dumping index data
Mads Kiilerich <madski@unity3d.com>
parents: 21021
diff changeset
2652 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
2653 " 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
2654 ts = 0
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2655 heads = set()
22311
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2656 rindex = r.index
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2657
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2658 def chainbaseandlen(rev):
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2659 clen = 0
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2660 base = rindex[rev][3]
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2661 while base != rev:
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2662 clen += 1
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2663 rev = base
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2664 base = rindex[rev][3]
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2665 return base, clen
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2666
14326
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2667 for rev in xrange(numrevs):
14371
ec2aae8b375d revlog: drop base() again
Matt Mackall <mpm@selenic.com>
parents: 14363
diff changeset
2668 dbase = r.deltaparent(rev)
ec2aae8b375d revlog: drop base() again
Matt Mackall <mpm@selenic.com>
parents: 14363
diff changeset
2669 if dbase == -1:
ec2aae8b375d revlog: drop base() again
Matt Mackall <mpm@selenic.com>
parents: 14363
diff changeset
2670 dbase = rev
22311
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2671 cbase, clen = chainbaseandlen(rev)
14326
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2672 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
2673 rs = r.rawsize(rev)
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2674 ts = ts + rs
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2675 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
2676 heads.add(rev)
22311
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2677 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
2678 "%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
2679 (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
2680 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
2681 r.start(p1), r.start(p2),
22311
5038dee5bdd6 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org>
parents: 22310
diff changeset
2682 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
2683 return 0
6078a99af433 debugrevlog: add --dump flag to dump graphable per-revision statistics
Matt Mackall <mpm@selenic.com>
parents: 14323
diff changeset
2684
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2685 v = r.version
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2686 format = v & 0xFFFF
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2687 flags = []
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2688 gdelta = False
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2689 if v & revlog.REVLOGNGINLINEDATA:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2690 flags.append('inline')
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2691 if v & revlog.REVLOGGENERALDELTA:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2692 gdelta = True
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2693 flags.append('generaldelta')
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2694 if not flags:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2695 flags = ['(none)']
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2696
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2697 nummerges = 0
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2698 numfull = 0
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2699 numprev = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2700 nump1 = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2701 nump2 = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2702 numother = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2703 nump1prev = 0
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2704 nump2prev = 0
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2705 chainlengths = []
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2706
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2707 datasize = [None, 0, 0L]
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2708 fullsize = [None, 0, 0L]
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2709 deltasize = [None, 0, 0L]
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2710
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2711 def addsize(size, l):
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2712 if l[0] is None or size < l[0]:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2713 l[0] = size
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2714 if size > l[1]:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2715 l[1] = size
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2716 l[2] += size
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2717
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2718 numrevs = len(r)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2719 for rev in xrange(numrevs):
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2720 p1, p2 = r.parentrevs(rev)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2721 delta = r.deltaparent(rev)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2722 if format > 0:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2723 addsize(r.rawsize(rev), datasize)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2724 if p2 != nullrev:
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2725 nummerges += 1
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2726 size = r.length(rev)
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2727 if delta == nullrev:
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2728 chainlengths.append(0)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2729 numfull += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2730 addsize(size, fullsize)
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2731 else:
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2732 chainlengths.append(chainlengths[delta] + 1)
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2733 addsize(size, deltasize)
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2734 if delta == rev - 1:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2735 numprev += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2736 if delta == p1:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2737 nump1prev += 1
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2738 elif delta == p2:
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2739 nump2prev += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2740 elif delta == p1:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2741 nump1 += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2742 elif delta == p2:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2743 nump2 += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2744 elif delta != nullrev:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2745 numother += 1
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2746
17188
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2747 # Adjust size min value for empty cases
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2748 for size in (datasize, fullsize, deltasize):
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2749 if size[0] is None:
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2750 size[0] = 0
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2751
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2752 numdeltas = numrevs - numfull
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2753 numoprev = numprev - nump1prev - nump2prev
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2754 totalrawsize = datasize[2]
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2755 datasize[2] /= numrevs
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2756 fulltotal = fullsize[2]
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2757 fullsize[2] /= numfull
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2758 deltatotal = deltasize[2]
17188
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2759 if numrevs - numfull > 0:
76e55914c303 debugrevlog: handle numrevs == numfull case (issue3537)
Patrick Mezard <patrick@mezard.eu>
parents: 17182
diff changeset
2760 deltasize[2] /= numrevs - numfull
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2761 totalsize = fulltotal + deltatotal
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2762 avgchainlen = sum(chainlengths) / numrevs
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2763 compratio = totalrawsize / totalsize
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2764
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2765 basedfmtstr = '%%%dd\n'
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2766 basepcfmtstr = '%%%dd %s(%%5.2f%%%%)\n'
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2767
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2768 def dfmtstr(max):
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2769 return basedfmtstr % len(str(max))
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2770 def pcfmtstr(max, padding=0):
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2771 return basepcfmtstr % (len(str(max)), ' ' * padding)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2772
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2773 def pcfmt(value, total):
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2774 return (value, 100 * float(value) / total)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2775
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2776 ui.write(('format : %d\n') % format)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2777 ui.write(('flags : %s\n') % ', '.join(flags))
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2778
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2779 ui.write('\n')
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2780 fmt = pcfmtstr(totalsize)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2781 fmt2 = dfmtstr(totalsize)
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2782 ui.write(('revisions : ') + fmt2 % numrevs)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2783 ui.write((' merges : ') + fmt % pcfmt(nummerges, numrevs))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2784 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
2785 ui.write(('revisions : ') + fmt2 % numrevs)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2786 ui.write((' full : ') + fmt % pcfmt(numfull, numrevs))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2787 ui.write((' deltas : ') + fmt % pcfmt(numdeltas, numrevs))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2788 ui.write(('revision size : ') + fmt2 % totalsize)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2789 ui.write((' full : ') + fmt % pcfmt(fulltotal, totalsize))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2790 ui.write((' deltas : ') + fmt % pcfmt(deltatotal, totalsize))
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2791
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2792 ui.write('\n')
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2793 fmt = dfmtstr(max(avgchainlen, compratio))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2794 ui.write(('avg chain length : ') + fmt % avgchainlen)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2795 ui.write(('compression ratio : ') + fmt % compratio)
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2796
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2797 if format > 0:
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2798 ui.write('\n')
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2799 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
2800 % tuple(datasize))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2801 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
2802 % tuple(fullsize))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2803 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
2804 % tuple(deltasize))
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2805
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2806 if numdeltas > 0:
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2807 ui.write('\n')
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2808 fmt = pcfmtstr(numdeltas)
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2809 fmt2 = pcfmtstr(numdeltas, 4)
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2810 ui.write(('deltas against prev : ') + fmt % pcfmt(numprev, numdeltas))
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2811 if numprev > 0:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2812 ui.write((' where prev = p1 : ') + fmt2 % pcfmt(nump1prev,
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2813 numprev))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2814 ui.write((' where prev = p2 : ') + fmt2 % pcfmt(nump2prev,
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2815 numprev))
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2816 ui.write((' other : ') + fmt2 % pcfmt(numoprev,
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2817 numprev))
14305
32a548776b65 debugrevlog: many improvements
Sune Foldager <cryo@cyanite.org>
parents: 14304
diff changeset
2818 if gdelta:
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2819 ui.write(('deltas against p1 : ')
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2820 + fmt % pcfmt(nump1, numdeltas))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2821 ui.write(('deltas against p2 : ')
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2822 + fmt % pcfmt(nump2, numdeltas))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2823 ui.write(('deltas against other : ') + fmt % pcfmt(numother,
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
2824 numdeltas))
14304
64c22db0bc38 add debugrevlog command
Sune Foldager <cryo@cyanite.org>
parents: 14302
diff changeset
2825
20497
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2826 @command('debugrevspec',
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2827 [('', '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
2828 ('REVSPEC'))
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2829 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
2830 """parse and apply a revision specification
5535e66b3016 debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents: 16097
diff changeset
2831
5535e66b3016 debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents: 16097
diff changeset
2832 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
2833 expansion.
5535e66b3016 debugrevspec: mention --verbose to print the parsed tree
Patrick Mezard <patrick@mezard.eu>
parents: 16097
diff changeset
2834 """
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2835 if ui.verbose:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2836 tree = revset.parse(expr)[0]
16218
81a1a00f5738 debugrevspec: pretty print output
Patrick Mezard <patrick@mezard.eu>
parents: 16192
diff changeset
2837 ui.note(revset.prettyformat(tree), "\n")
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2838 newtree = revset.findaliases(ui, tree)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2839 if newtree != tree:
16218
81a1a00f5738 debugrevspec: pretty print output
Patrick Mezard <patrick@mezard.eu>
parents: 16192
diff changeset
2840 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
2841 if opts["optimize"]:
19b1c62cee1c commands.debugrevspec: add an option to print the optimized expression tree
Siddharth Agarwal <sid0@fb.com>
parents: 20470
diff changeset
2842 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
2843 ui.note("* optimized:\n", revset.prettyformat(optimizedtree), "\n")
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2844 func = revset.match(ui, expr)
20526
9ad6dae67845 revset: changed revsets to use spanset
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 20500
diff changeset
2845 for c in func(repo, revset.spanset(repo)):
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2846 ui.write("%s\n" % c)
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2847
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2848 @command('debugsetparents', [], _('REV1 [REV2]'))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2849 def debugsetparents(ui, repo, rev1, rev2=None):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2850 """manually set the parents of the current working directory
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2851
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2852 This is useful for writing repository conversion tools, but should
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2853 be used with care.
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2854
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2855 Returns 0 on success.
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2856 """
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2857
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
2858 r1 = scmutil.revsingle(repo, rev1).node()
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
2859 r2 = scmutil.revsingle(repo, rev2, 'null').node()
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2860
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2861 wlock = repo.wlock()
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2862 try:
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
2863 repo.dirstate.beginparentchange()
16551
ebf6d38c9063 localrepo: add setparents() to adjust dirstate copies (issue3407)
Patrick Mezard <patrick@mezard.eu>
parents: 16505
diff changeset
2864 repo.setparents(r1, r2)
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
2865 repo.dirstate.endparentchange()
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2866 finally:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2867 wlock.release()
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2868
18962
c0b2cb62067f debugstate: rename to debugdirstate
Mads Kiilerich <madski@unity3d.com>
parents: 18961
diff changeset
2869 @command('debugdirstate|debugstate',
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2870 [('', 'nodates', None, _('do not display the saved mtime')),
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2871 ('', 'datesort', None, _('sort by saved mtime'))],
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2872 _('[OPTION]...'))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2873 def debugstate(ui, repo, nodates=None, datesort=None):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2874 """show the contents of the current dirstate"""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2875 timestr = ""
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2876 showdate = not nodates
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2877 if datesort:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2878 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
2879 else:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2880 keyfunc = None # sort by filename
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2881 for file_, ent in sorted(repo.dirstate._map.iteritems(), key=keyfunc):
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2882 if showdate:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2883 if ent[3] == -1:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2884 # Pad or slice to locale representation
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2885 locale_len = len(time.strftime("%Y-%m-%d %H:%M:%S ",
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2886 time.localtime(0)))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2887 timestr = 'unset'
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2888 timestr = (timestr[:locale_len] +
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2889 ' ' * (locale_len - len(timestr)))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2890 else:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2891 timestr = time.strftime("%Y-%m-%d %H:%M:%S ",
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2892 time.localtime(ent[3]))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2893 if ent[1] & 020000:
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2894 mode = 'lnk'
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2895 else:
15440
9ab2b3b730ee windows: use umask 022 in debugstate output
Mads Kiilerich <mads@kiilerich.com>
parents: 15424
diff changeset
2896 mode = '%3o' % (ent[1] & 0777 & ~util.umask)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2897 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
2898 for f in repo.dirstate.copies():
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2899 ui.write(_("copy: %s -> %s\n") % (repo.dirstate.copied(f), f))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2900
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2901 @command('debugsub',
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2902 [('r', 'rev', '',
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2903 _('revision to check'), _('REV'))],
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2904 _('[-r REV] [REV]'))
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2905 def debugsub(ui, repo, rev=None):
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
2906 ctx = scmutil.revsingle(repo, rev, None)
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2907 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
2908 ui.write(('path %s\n') % k)
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2909 ui.write((' source %s\n') % v[0])
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 17950
diff changeset
2910 ui.write((' revision %s\n') % v[1])
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2911
18068
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2912 @command('debugsuccessorssets',
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2913 [],
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2914 _('[REV]'))
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2915 def debugsuccessorssets(ui, repo, *revs):
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2916 """show set of successors for revision
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2917
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2918 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
2919 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
2920
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2921 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
2922 successor (changeset A replaced by A').
18068
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2923
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2924 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
2925 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
2926
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2927 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
2928 more than one successor.
18068
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2929
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2930 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
2931 "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
2932 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
2933
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2934 Results are displayed as follows::
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2935
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2936 <rev1>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2937 <successors-1A>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2938 <rev2>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2939 <successors-2A>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2940 <successors-2B1> <successors-2B2> <successors-2B3>
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2941
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2942 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
2943 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
2944 been split).
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2945 """
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2946 # 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
2947 cache = {}
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2948 ctx2str = str
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2949 node2str = short
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2950 if ui.debug():
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2951 def ctx2str(ctx):
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2952 return ctx.hex()
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2953 node2str = hex
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2954 for rev in scmutil.revrange(repo, revs):
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2955 ctx = repo[rev]
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2956 ui.write('%s\n'% ctx2str(ctx))
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2957 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
2958 if succsset:
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2959 ui.write(' ')
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2960 ui.write(node2str(succsset[0]))
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2961 for node in succsset[1:]:
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2962 ui.write(' ')
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2963 ui.write(node2str(node))
4bec77e62c00 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 18053
diff changeset
2964 ui.write('\n')
14302
b0f97b2589cc order commands alphabetically
Sune Foldager <cryo@cyanite.org>
parents: 14297
diff changeset
2965
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
2966 @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
2967 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
2968 """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
2969 m = scmutil.match(repo[None], pats, opts)
6585
d3d1d39da2fa walk: remove cmdutil.walk
Matt Mackall <mpm@selenic.com>
parents: 6584
diff changeset
2970 items = list(repo.walk(m))
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
2971 if not items:
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
2972 return
16953
634ad0b24ba2 debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents: 16949
diff changeset
2973 f = lambda fn: fn
634ad0b24ba2 debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents: 16949
diff changeset
2974 if ui.configbool('ui', 'slash') and os.sep != '/':
634ad0b24ba2 debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents: 16949
diff changeset
2975 f = lambda fn: util.normpath(fn)
6586
d3463007d368 walk: return a single value
Matt Mackall <mpm@selenic.com>
parents: 6585
diff changeset
2976 fmt = 'f %%-%ds %%-%ds %%s' % (
d3463007d368 walk: return a single value
Matt Mackall <mpm@selenic.com>
parents: 6585
diff changeset
2977 max([len(abs) for abs in items]),
d3463007d368 walk: return a single value
Matt Mackall <mpm@selenic.com>
parents: 6585
diff changeset
2978 max([len(m.rel(abs)) for abs in items]))
d3463007d368 walk: return a single value
Matt Mackall <mpm@selenic.com>
parents: 6585
diff changeset
2979 for abs in items:
16953
634ad0b24ba2 debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com>
parents: 16949
diff changeset
2980 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
2981 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
2982
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2983 @command('debugwireargs',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2984 [('', 'three', '', 'three'),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2985 ('', 'four', '', 'four'),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2986 ('', 'five', '', 'five'),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
2987 ] + remoteopts,
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2988 _('REPO [OPTIONS]... [ONE [TWO]]'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
2989 norepo=True)
13720
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
2990 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
2991 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
2992 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
2993 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
2994 args = {}
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
2995 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
2996 if v:
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
2997 args[k] = v
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
2998 # 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
2999 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
3000 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
3001 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
3002 if res1 != res2:
9c4e04fe267e debug: add debugwireargs to test argument passing over the wire
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 13697
diff changeset
3003 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
3004
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3005 @command('^diff',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3006 [('r', 'rev', [], _('revision'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3007 ('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
3008 ] + diffopts + diffopts2 + walkopts + subrepoopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3009 _('[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
3010 inferrepo=True)
732
ba0b6d17a6de Convert diff command over to using walk code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 731
diff changeset
3011 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
3012 """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
3013
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3014 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
3015
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3016 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
3017
12389
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
3018 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
3019
12389
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
3020 diff may generate unexpected results for merges, as it will
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
3021 default to comparing against the working directory's first
4ac734b9b3fd Use note admonition
Erik Zielke <ez@aragost.com>
parents: 12386
diff changeset
3022 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
3023
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3024 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
3025 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
3026 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
3027 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
3028 to its parent.
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3029
10527
9c0ba837dc65 commands: correct diff -c explanation
timeless <timeless@mozdev.org>
parents: 10520
diff changeset
3030 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
3031 the changes in that changeset relative to its first parent.
10520
75361931884d commands: mention diff -c
timeless <timeless@mozdev.org>
parents: 10515
diff changeset
3032
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3033 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
3034 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
3035 anyway, probably with undesirable results.
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3036
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3037 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
3038 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
3039
15110
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3040 .. container:: verbose
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3041
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3042 Examples:
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3043
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3044 - 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
3045
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3046 hg diff foo.c
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3047
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3048 - compare two historical versions of a directory, with rename info::
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3049
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3050 hg diff --git -r 1.0:1.2 lib/
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3051
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3052 - 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
3053
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3054 hg diff --stat -r "date('may 2')"
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3055
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3056 - diff all newly-added files that contain a keyword::
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3057
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3058 hg diff "set:added() and grep(GNU)"
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3059
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3060 - compare a revision and its parents::
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3061
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3062 hg diff -c 9353 # compare against first parent
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3063 hg diff -r 9353^:9353 # same using revset syntax
7ebf60dbfa46 diff: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15109
diff changeset
3064 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
3065
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3066 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3067 """
7628
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3068
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3069 revs = opts.get('rev')
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3070 change = opts.get('change')
9640
9e76232fbfbe diff: add --stat for diffstat output
Brodie Rao <me+hg@dackz.net>
parents: 9636
diff changeset
3071 stat = opts.get('stat')
9857
24bc6e414610 diff: change --inverse to --reverse
Martin Geisler <mg@lazybytes.net>
parents: 9839
diff changeset
3072 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
3073
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3074 if revs and change:
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3075 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
3076 raise util.Abort(msg)
9c6ae2e09e11 diff: add --change option to display single changeset diff (issue1420)
Stepan Koltsov <yozh@mx1.ru>
parents: 7622
diff changeset
3077 elif change:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
3078 node2 = scmutil.revsingle(repo, change, None).node()
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
3079 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
3080 else:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
3081 node1, node2 = scmutil.revpair(repo, revs)
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
3082
9857
24bc6e414610 diff: change --inverse to --reverse
Martin Geisler <mg@lazybytes.net>
parents: 9839
diff changeset
3083 if reverse:
9725
3f522d2fa633 diff: add --inverse option
Yannick Gingras <ygingras@ygingras.net>
parents: 9718
diff changeset
3084 node1, node2 = node2, node1
3f522d2fa633 diff: add --inverse option
Yannick Gingras <ygingras@ygingras.net>
parents: 9718
diff changeset
3085
9642
7d17794f08a9 diffstat: with --git, mark binary files with Bin
Brodie Rao <me+hg@dackz.net>
parents: 9640
diff changeset
3086 diffopts = patch.diffopts(ui, opts)
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
3087 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
3088 cmdutil.diffordiffstat(ui, repo, diffopts, node1, node2, m, stat=stat,
d2c5b0927c28 diff: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents: 12166
diff changeset
3089 listsubrepos=opts.get('subrepos'))
396
8f8bb77d560e Show revisions in diffs like CVS, based on a patch from Goffredo Baroncelli.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 395
diff changeset
3090
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3091 @command('^export',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3092 [('o', 'output', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3093 _('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
3094 ('', '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
3095 ('r', 'rev', [], _('revisions to export'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3096 ] + diffopts,
18956
1a9ad84583ee export: export working directory parent by default
Mads Kiilerich <mads@kiilerich.com>
parents: 18955
diff changeset
3097 _('[OPTION]... [-o OUTFILESPEC] [-r] [REV]...'))
580
353a2ce50423 [PATCH] New export patch
mpm@selenic.com
parents: 577
diff changeset
3098 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
3099 """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
3100
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3101 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
3102 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
3103
10334
3d75c691b77d commands: fix the list of changeset header information in 'hg help export'
Steve Losh <steve@stevelosh.com>
parents: 10331
diff changeset
3104 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
3105 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
3106 comment.
3822
28134d82db9b Add notes about diff/merge asymmetry to export, diff, and log
Matt Mackall <mpm@selenic.com>
parents: 3815
diff changeset
3107
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
3108 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
3109
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
3110 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
3111 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
3112 first parent only.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3113
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3114 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
3115 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
3116
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
3117 :``%%``: literal "%" character
11718
3e979f47a4c9 help: fix bytes/digit confusion for hashes
Matt Mackall <mpm@selenic.com>
parents: 11697
diff changeset
3118 :``%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
3119 :``%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
3120 :``%R``: changeset revision number
4322e39bd525 commands: use field lists instead of literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents: 9891
diff changeset
3121 :``%b``: basename of the exporting repository
11718
3e979f47a4c9 help: fix bytes/digit confusion for hashes
Matt Mackall <mpm@selenic.com>
parents: 11697
diff changeset
3122 :``%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
3123 :``%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
3124 :``%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
3125 :``%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
3126
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3127 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
3128 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
3129 diff anyway, probably with undesirable results.
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3130
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
3131 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
3132 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
3133
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
3134 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
3135 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
3136
15111
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3137 .. container:: verbose
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3138
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3139 Examples:
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3140
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3141 - 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
3142 branch::
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3143
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3144 hg export -r 9353 | hg import -
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3145
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3146 - 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
3147 rename information::
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3148
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3149 hg export --git -r 123:150 > changes.txt
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3150
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3151 - split outgoing changes into a series of patches with
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3152 descriptive names::
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3153
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3154 hg export -r "outgoing()" -o "%n-%m.patch"
0be86ec3cafe export: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15110
diff changeset
3155
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3156 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3157 """
10015
b5f352f33520 commands.export: accept -r option as revision specification
Alexander Solovyov <piranha@piranha.org.ua>
parents: 10014
diff changeset
3158 changesets += tuple(opts.get('rev', []))
18956
1a9ad84583ee export: export working directory parent by default
Mads Kiilerich <mads@kiilerich.com>
parents: 18955
diff changeset
3159 if not changesets:
1a9ad84583ee export: export working directory parent by default
Mads Kiilerich <mads@kiilerich.com>
parents: 18955
diff changeset
3160 changesets = ['.']
16357
8ca7187d479f export: catch exporting empty revsets (issue3353)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16231
diff changeset
3161 revs = scmutil.revrange(repo, changesets)
8ca7187d479f export: catch exporting empty revsets (issue3353)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16231
diff changeset
3162 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
3163 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
3164 if len(revs) > 1:
4ec58b157265 refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2871
diff changeset
3165 ui.note(_('exporting patches:\n'))
4ec58b157265 refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2871
diff changeset
3166 else:
4ec58b157265 refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2871
diff changeset
3167 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
3168 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
3169 switch_parent=opts.get('switch_parent'),
2888
3848488244fc Move ui.diffopts to patch.diffopts where it belongs
Matt Mackall <mpm@selenic.com>
parents: 2883
diff changeset
3170 opts=patch.diffopts(ui, opts))
246
96cde50a746f Migrate rawcommit, import, export, history, and merge
mpm@selenic.com
parents: 245
diff changeset
3171
22423
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3172 @command('files',
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3173 [('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
3174 ('0', 'print0', None, _('end filenames with NUL, for use with xargs')),
22429
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
3175 ] + walkopts + formatteropts,
22423
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3176 _('[OPTION]... [PATTERN]...'))
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3177 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
3178 """list tracked files
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3179
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3180 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
3181 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
3182 removed files).
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3183
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3184 If no patterns are given to match, this command prints the names
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3185 of all files under Mercurial control in the working copy.
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3186
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3187 .. container:: verbose
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3188
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3189 Examples:
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3190
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3191 - 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
3192
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3193 hg files .
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3194
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3195 - 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
3196
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3197 hg files -vr .
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3198
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3199 - list all files named README::
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3200
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3201 hg files -I "**/README"
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3202
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3203 - list all binary files::
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3204
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3205 hg files "set:binary()"
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3206
23074
21a55dbc3940 files: fix example list syntax
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 23024
diff changeset
3207 - 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
3208
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3209 hg files "set:grep('bob')"
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3210
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3211 - 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
3212
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3213 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
3214
23114
0b7853f969ac help: use ":hg:`command`" instead of incorrect ":hg:'command'" notation
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 23108
diff changeset
3215 See :hg:`help pattern` 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
3216 on specifying file patterns.
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3217
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3218 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
3219
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3220 """
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3221 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
3222 rev = ctx.rev()
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3223 ret = 1
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3224
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3225 end = '\n'
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3226 if opts.get('print0'):
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3227 end = '\0'
22552
bb14cca8c4e4 files: correct topic of formatter
Yuya Nishihara <yuya@tcha.org>
parents: 22502
diff changeset
3228 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
3229 fmt = '%s' + end
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3230
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3231 m = scmutil.match(ctx, pats, opts)
22594
1257cc6c1a2f files: cache repo.dirstate
Siddharth Agarwal <sid0@fb.com>
parents: 22593
diff changeset
3232 ds = repo.dirstate
22592
ff3ccc592af4 files: use ctx.matches instead of ctx.walk
Siddharth Agarwal <sid0@fb.com>
parents: 22591
diff changeset
3233 for f in ctx.matches(m):
22594
1257cc6c1a2f files: cache repo.dirstate
Siddharth Agarwal <sid0@fb.com>
parents: 22593
diff changeset
3234 if rev is None and ds[f] == 'r':
22423
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3235 continue
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3236 fm.startitem()
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3237 if ui.verbose:
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3238 fc = ctx[f]
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3239 fm.write('size flags', '% 10d % 1s ', fc.size(), fc.flags())
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3240 fm.data(abspath=f)
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3241 fm.write('path', fmt, m.rel(f))
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3242 ret = 0
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3243
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3244 fm.end()
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3245
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3246 return ret
edf07a804ac4 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents: 22419
diff changeset
3247
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3248 @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
3249 def forget(ui, repo, *pats, **opts):
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3250 """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
3251
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3252 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
3253 after the next commit.
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3254
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3255 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
3256 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
3257 working directory.
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3258
11193
687c7d395f20 Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents: 11185
diff changeset
3259 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
3260
15118
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3261 .. container:: verbose
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3262
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3263 Examples:
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3264
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3265 - forget newly-added binary files::
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3266
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3267 hg forget "set:added() and binary()"
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3268
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3269 - forget files that would be excluded by .hgignore::
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3270
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3271 hg forget "set:hgignore()"
9a1438f6af5f forget: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15115
diff changeset
3272
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3273 Returns 0 on success.
8902
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3274 """
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3275
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3276 if not pats:
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3277 raise util.Abort(_('no files specified'))
b9a8b616521d Add a forget command for easily untracking files.
Steve Losh <steve@stevelosh.com>
parents: 8879
diff changeset
3278
15912
2bd54ffaa27e forget: fix subrepo recursion for explicit path handling
David M. Carr <david@carrclan.us>
parents: 15911
diff changeset
3279 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
3280 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
3281 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
3282
15240
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3283 @command(
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3284 'graft',
16992
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3285 [('r', 'rev', [], _('revisions to graft'), _('REV')),
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3286 ('c', 'continue', False, _('resume interrupted graft')),
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3287 ('e', 'edit', False, _('invoke editor on commit messages')),
16660
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3288 ('', '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
3289 ('f', 'force', False, _('force graft')),
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3290 ('D', 'currentdate', False,
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3291 _('record the current date as commit date')),
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3292 ('U', 'currentuser', False,
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3293 _('record the current user as committer'), _('DATE'))]
16389
79fecd735d26 graft: add --dry-run support (issue3362)
Matt Mackall <mpm@selenic.com>
parents: 16373
diff changeset
3294 + commitopts2 + mergetoolopts + dryrunopts,
16992
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3295 _('[OPTION]... [-r] REV...'))
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3296 def graft(ui, repo, *revs, **opts):
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3297 '''copy changes from other branches onto the current branch
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3298
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3299 This command uses Mercurial's merge logic to copy individual
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3300 changes from other branches without merging branches in the
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3301 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
3302 '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
3303 description from the source changesets.
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3304
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3305 Changesets that are ancestors of the current revision, that have
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3306 already been grafted, or that are merges will be skipped.
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3307
16660
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3308 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
3309 of the form::
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3310
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3311 (grafted from CHANGESETHASH)
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3312
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3313 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
3314 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
3315 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
3316
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3317 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
3318 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
3319 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
3320 continued with the -c/--continue option.
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3321
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3322 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
3323
21980
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3324 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
3325 for --force.
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3326
15242
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3327 .. container:: verbose
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3328
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3329 Examples:
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3330
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3331 - 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
3332
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3333 hg update stable
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3334 hg graft --edit 9393
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3335
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3336 - 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
3337
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3338 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
3339
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3340 - continue a graft after resolving conflicts::
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3341
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3342 hg graft -c
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3343
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3344 - 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
3345
19401
49acaa2b9701 log: remove tip from example
Matt Mackall <mpm@selenic.com>
parents: 19400
diff changeset
3346 hg log --debug -r .
15242
dac2edce4e4a graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com>
parents: 15241
diff changeset
3347
21949
ad56fc55cbc3 graft: add a reference to revsets to the help text (issue3362)
Alexander Becher <Alexander.Becher@RuD-Steuerungstechnik.De>
parents: 21947
diff changeset
3348 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
3349 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
3350
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3351 Returns 0 on successful completion.
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3352 '''
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3353
16992
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3354 revs = list(revs)
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3355 revs.extend(opts['rev'])
55e7f352b1d3 graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16991
diff changeset
3356
15240
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3357 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
3358 opts['user'] = ui.username()
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3359 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
3360 opts['date'] = "%d %d" % util.makedate()
bfb93963bb39 graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com>
parents: 15239
diff changeset
3361
22008
b02ab548ab5c graft: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22007
diff changeset
3362 editor = cmdutil.getcommiteditor(editform='graft', **opts)
15239
f5d9d0d0f588 graft: add --edit
Matt Mackall <mpm@selenic.com>
parents: 15238
diff changeset
3363
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3364 cont = False
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3365 if opts['continue']:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3366 cont = True
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3367 if revs:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3368 raise util.Abort(_("can't specify --continue and revisions"))
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3369 # read in unfinished revisions
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3370 try:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3371 nodes = repo.opener.read('graftstate').splitlines()
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3372 revs = [repo[node].rev() for node in nodes]
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3373 except IOError, inst:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3374 if inst.errno != errno.ENOENT:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3375 raise
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3376 raise util.Abort(_("no graft state found, can't continue"))
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3377 else:
19476
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
3378 cmdutil.checkunfinished(repo)
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3379 cmdutil.bailifchanged(repo)
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3380 if not revs:
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3381 raise util.Abort(_('no revisions specified'))
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3382 revs = scmutil.revrange(repo, revs)
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3383
22824
9271630f4720 strip: stop calling `remove` on smartset
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22776
diff changeset
3384 skipped = set()
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3385 # check for merges
15404
c1eb8398fe82 localrepo: convert various repo.set() users to repo.revs()
Matt Mackall <mpm@selenic.com>
parents: 15381
diff changeset
3386 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
3387 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
3388 skipped.add(rev)
9271630f4720 strip: stop calling `remove` on smartset
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22776
diff changeset
3389 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
3390 if not revs:
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3391 return -1
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3392
21980
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3393 # 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
3394 # --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
3395 # 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
3396 # 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
3397 # 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
3398 # 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
3399 if not (cont or opts.get('force')):
f4e5753745e9 graft: make --force apply across continues (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21979
diff changeset
3400 # check for ancestors of dest branch
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3401 crev = repo['.'].rev()
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3402 ancestors = repo.changelog.ancestors([crev], inclusive=True)
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3403 # 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
3404 # XXX make this lazy in the future
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3405 revs = list(revs)
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3406 # 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
3407 for rev in list(revs):
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3408 if rev in ancestors:
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3409 ui.warn(_('skipping ancestor revision %s\n') % rev)
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3410 # XXX remove on list is slow
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3411 revs.remove(rev)
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3412 if not revs:
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3413 return -1
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3414
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3415 # analyze revs for earlier grafts
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3416 ids = {}
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3417 for ctx in repo.set("%ld", revs):
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3418 ids[ctx.hex()] = ctx.rev()
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3419 n = ctx.extra().get('source')
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3420 if n:
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3421 ids[n] = ctx.rev()
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3422
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3423 # check ancestors for earlier grafts
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3424 ui.debug('scanning for duplicate grafts\n')
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3425
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3426 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
3427 ctx = repo[rev]
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3428 n = ctx.extra().get('source')
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3429 if n in ids:
22305
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3430 try:
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3431 r = repo[n].rev()
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3432 except error.RepoLookupError:
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3433 r = None
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3434 if r in revs:
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3435 ui.warn(_('skipping revision %s (already grafted to %s)\n')
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3436 % (r, rev))
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3437 revs.remove(r)
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3438 elif ids[n] in revs:
22305
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3439 if r is None:
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3440 ui.warn(_('skipping already grafted revision %s '
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3441 '(%s also has unknown origin %s)\n')
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3442 % (ids[n], rev, n))
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3443 else:
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3444 ui.warn(_('skipping already grafted revision %s '
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3445 '(%s also has origin %d)\n')
bdc0e04df243 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 22277 22302
diff changeset
3446 % (ids[n], rev, r))
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3447 revs.remove(ids[n])
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3448 elif ctx.hex() in ids:
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3449 r = ids[ctx.hex()]
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3450 ui.warn(_('skipping already grafted revision %s '
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3451 '(was grafted from %d)\n') % (r, rev))
15360
73628b32d0c0 graft: fix duplicate filter logic
Matt Mackall <mpm@selenic.com>
parents: 15359
diff changeset
3452 revs.remove(r)
21979
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3453 if not revs:
c2863cfe8a8a graft: allow regrafting ancestors with --force (issue3220)
Siddharth Agarwal <sid0@fb.com>
parents: 21959
diff changeset
3454 return -1
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3455
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3456 wlock = repo.wlock()
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3457 try:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3458 for pos, ctx in enumerate(repo.set("%ld", revs)):
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3459
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3460 ui.status(_('grafting revision %s\n') % ctx.rev())
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3461 if opts.get('dry_run'):
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3462 continue
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3463
18038
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3464 source = ctx.extra().get('source')
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3465 if not source:
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3466 source = ctx.hex()
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3467 extra = {'source': source}
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3468 user = ctx.user()
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3469 if opts.get('user'):
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3470 user = opts['user']
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3471 date = ctx.date()
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3472 if opts.get('date'):
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3473 date = opts['date']
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3474 message = ctx.description()
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3475 if opts.get('log'):
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3476 message += '\n(grafted from %s)' % ctx.hex()
f8aee8033ab2 graft: move commit info building
David Schleimer <dschleimer@fb.com>
parents: 17990
diff changeset
3477
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3478 # 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
3479 if not cont:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3480 # 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
3481 try:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3482 # 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
3483 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
3484 'graft')
22903
3d51e756b1ec graft: use merge.graft
Matt Mackall <mpm@selenic.com>
parents: 22901
diff changeset
3485 stats = mergemod.graft(repo, ctx, ctx.p1(),
3d51e756b1ec graft: use merge.graft
Matt Mackall <mpm@selenic.com>
parents: 22901
diff changeset
3486 ['local', 'graft'])
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3487 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
3488 repo.ui.setconfig('ui', 'forcemerge', '', 'graft')
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3489 # report any conflicts
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3490 if stats and stats[3] > 0:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3491 # write out state for --continue
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3492 nodelines = [repo[rev].hex() + "\n" for rev in revs[pos:]]
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3493 repo.opener.write('graftstate', ''.join(nodelines))
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3494 raise util.Abort(
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3495 _("unresolved conflicts, can't continue"),
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3496 hint=_('use hg resolve and hg graft --continue'))
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3497 else:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3498 cont = False
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3499
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3500 # commit
16660
2a71cc53f244 graft: implement --log (issue3438)
Levi Bard <levi@unity3d.com>
parents: 16659
diff changeset
3501 node = repo.commit(text=message, user=user,
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3502 date=date, extra=extra, editor=editor)
16600
b54f3c502e63 graft: remark on empty graft
Matt Mackall <mpm@selenic.com>
parents: 16591
diff changeset
3503 if node is None:
b54f3c502e63 graft: remark on empty graft
Matt Mackall <mpm@selenic.com>
parents: 16591
diff changeset
3504 ui.status(_('graft for revision %s is empty\n') % ctx.rev())
16473
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3505 finally:
7adc521259d4 commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com>
parents: 16471
diff changeset
3506 wlock.release()
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3507
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3508 # remove state when we complete successfully
18386
03442135dff4 refactoring: use unlinkpath with ignoremissing
Mads Kiilerich <madski@unity3d.com>
parents: 18366
diff changeset
3509 if not opts.get('dry_run'):
03442135dff4 refactoring: use unlinkpath with ignoremissing
Mads Kiilerich <madski@unity3d.com>
parents: 18366
diff changeset
3510 util.unlinkpath(repo.join('graftstate'), ignoremissing=True)
15241
e4d135632f6d graft: add --continue support
Matt Mackall <mpm@selenic.com>
parents: 15240
diff changeset
3511
15238
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3512 return 0
2d710c12ffc0 graft: add initial implementation
Matt Mackall <mpm@selenic.com>
parents: 15232
diff changeset
3513
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3514 @command('grep',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3515 [('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
3516 ('', '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
3517 ('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
3518 ('f', 'follow', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3519 _('follow changeset history,'
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3520 ' 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
3521 ('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
3522 ('l', 'files-with-matches', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3523 _('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
3524 ('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
3525 ('r', 'rev', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3526 _('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
3527 ('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
3528 ('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
3529 ] + walkopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3530 _('[OPTION]... PATTERN [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
3531 inferrepo=True)
1108
7a75d8fbbdaf Remove some options from 'hg grep':
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1106
diff changeset
3532 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
3533 """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
3534
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3535 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
3536
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
3537 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
3538 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
3539 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
3540 match appears.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3541
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3542 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
3543 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
3544 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
3545 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
3546 use the --all flag.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3547
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3548 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
3549 """
15765
1ef46bcd76f8 grep: make multiline mode the default (BC)
Matt Mackall <mpm@selenic.com>
parents: 15744
diff changeset
3550 reflags = re.M
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3551 if opts.get('ignore_case'):
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3552 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
3553 try:
21911
760f4055e656 commands: use util.re.compile instead of util.compilere
Siddharth Agarwal <sid0@fb.com>
parents: 21848
diff changeset
3554 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
3555 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
3556 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
3557 return 1
1146
9061f79c6c6f grep: extend functionality, add man page entry, add unit test.
bos@serpentine.internal.keyresearch.com
parents: 1145
diff changeset
3558 sep, eol = ':', '\n'
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3559 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
3560 sep = eol = '\0'
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3561
9097
431462bd8478 fix memory usage of revlog caches by limiting cache size [issue1639]
Matt Mackall <mpm@selenic.com>
parents: 8995
diff changeset
3562 getfile = util.lrucachefunc(repo.file)
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3563
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3564 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
3565 begin = 0
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
3566 linenum = 0
17949
407209261f63 grep: remove useless while condition
Kevin Bullock <kbullock@ringworld.org>
parents: 17931
diff changeset
3567 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
3568 match = regexp.search(body, begin)
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3569 if not match:
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3570 break
1059
4eab07ef66e2 grep: speed up matching, and only return one match per line.
bos@serpentine.internal.keyresearch.com
parents: 1058
diff changeset
3571 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
3572 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
3573 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
3574 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
3575 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
3576 yield linenum, mstart - lstart, mend - lstart, body[lstart:lend]
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3577
1559
59b3639df0a9 Convert all classes to new-style classes by deriving them from object.
Eric Hopper <hopper@omnifarious.org>
parents: 1552
diff changeset
3578 class linestate(object):
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3579 def __init__(self, line, linenum, colstart, colend):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3580 self.line = line
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3581 self.linenum = linenum
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3582 self.colstart = colstart
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3583 self.colend = colend
2869
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3584
6469
fb502719c75c python 2.6 compatibility: add __hash__ to classes that have __eq__
Paul Moore <p.f.moore@gmail.com>
parents: 6468
diff changeset
3585 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
3586 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
3587
1065
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3588 def __eq__(self, other):
6e94c0365d98 Cleanups to commands.py
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1062
diff changeset
3589 return self.line == other.line
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3590
21011
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3591 def __iter__(self):
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3592 yield (self.line[:self.colstart], '')
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3593 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
3594 rest = self.line[self.colend:]
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3595 while rest != '':
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3596 match = regexp.search(rest)
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3597 if not match:
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3598 yield (rest, '')
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3599 break
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3600 mstart, mend = match.span()
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3601 yield (rest[:mstart], '')
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3602 yield (rest[mstart:mend], 'grep.match')
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3603 rest = rest[mend:]
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3604
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3605 matches = {}
2870
8eaaf1321bfe grep: add --follow support.
Brendan Cully <brendan@kublai.com>
parents: 2869
diff changeset
3606 copies = {}
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3607 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
3608 matches[rev].setdefault(fn, [])
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3609 m = matches[rev][fn]
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3610 for lnum, cstart, cend, line in matchlines(body):
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3611 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
3612 m.append(s)
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3613
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3614 def difflinestates(a, b):
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3615 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
3616 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
3617 if tag == 'insert':
3472
df7202f6887c use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3471
diff changeset
3618 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
3619 yield ('+', b[i])
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3620 elif tag == 'delete':
3472
df7202f6887c use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3471
diff changeset
3621 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
3622 yield ('-', a[i])
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3623 elif tag == 'replace':
3472
df7202f6887c use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3471
diff changeset
3624 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
3625 yield ('-', a[i])
3472
df7202f6887c use xrange instead of range
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3471
diff changeset
3626 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
3627 yield ('+', b[i])
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3628
9655
6d7d3f849062 walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents: 9654
diff changeset
3629 def display(fn, ctx, pstates, states):
6d7d3f849062 walkchangerevs: internalize ctx caching
Matt Mackall <mpm@selenic.com>
parents: 9654
diff changeset
3630 rev = ctx.rev()
6134
7b937b26adf7 Make annotae/grep print short dates with -q/--quiet.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6133
diff changeset
3631 datefunc = ui.quiet and util.shortdate or util.datestr
3951
cb66641cdee3 grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3950
diff changeset
3632 found = False
20836
a8b4541bb961 grep: reuse the first "util.binary()" result for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20834
diff changeset
3633 @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
3634 def binary():
332e400764e5 grep: don't print data from binary files for matches (issue2614)
Md. O. Shayan <mdoshayan@gmail.com>
parents: 13911
diff changeset
3635 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
3636 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
3637
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3638 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
3639 iter = difflinestates(pstates, states)
2869
81f351c5264d grep: display correct user/revision for --all in reverse.
Brendan Cully <brendan@kublai.com>
parents: 2854
diff changeset
3640 else:
8849
80cc4b1a62d0 compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 8834
diff changeset
3641 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
3642 for change, l in iter:
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3643 cols = [(fn, 'grep.filename'), (str(rev), 'grep.rev')]
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3644
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3645 if opts.get('line_number'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3646 cols.append((str(l.linenum), 'grep.linenumber'))
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3647 if opts.get('all'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3648 cols.append((change, 'grep.change'))
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
3649 if opts.get('user'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3650 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
3651 if opts.get('date'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3652 cols.append((datefunc(ctx.date()), 'grep.date'))
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3653 for col, label in cols[:-1]:
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3654 ui.write(col, label=label)
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3655 ui.write(sep, label='grep.sep')
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3656 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
3657 if not opts.get('files_with_matches'):
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3658 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
3659 if not opts.get('text') and binary():
17806
dc7010ed0101 grep: colorize all fields
Idan Kamara <idankk86@gmail.com>
parents: 17791
diff changeset
3660 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
3661 else:
21011
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3662 for s, label in l:
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3663 ui.write(s, label=label)
10816
635d601e8f21 grep: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents: 10654
diff changeset
3664 ui.write(eol)
3951
cb66641cdee3 grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3950
diff changeset
3665 found = True
21011
2db41f95c4a2 grep: highlight all matched words
Takumi IINO <trot.thunder@gmail.com>
parents: 20986
diff changeset
3666 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
3667 break
3951
cb66641cdee3 grep: remove count handling, simplify, fix issue337
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3950
diff changeset
3668 return found
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3669
1145
bd917e1a26dd grep: change default to printing first matching rev.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1116
diff changeset
3670 skip = {}
8849
80cc4b1a62d0 compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 8834
diff changeset
3671 revfiles = {}
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
3672 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
3673 found = False
2870
8eaaf1321bfe grep: add --follow support.
Brendan Cully <brendan@kublai.com>
parents: 2869
diff changeset
3674 follow = opts.get('follow')
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3675
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3676 def prep(ctx, fns):
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3677 rev = ctx.rev()
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
3678 pctx = ctx.p1()
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3679 parent = pctx.rev()
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3680 matches.setdefault(rev, {})
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3681 matches.setdefault(parent, {})
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3682 files = revfiles.setdefault(rev, [])
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3683 for fn in fns:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3684 flog = getfile(fn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3685 try:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3686 fnode = ctx.filenode(fn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3687 except error.LookupError:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3688 continue
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3689
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3690 copied = flog.renamed(fnode)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3691 copy = follow and copied and copied[0]
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3692 if copy:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3693 copies.setdefault(rev, {})[fn] = copy
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3694 if fn in skip:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3695 if copy:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3696 skip[copy] = True
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3697 continue
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3698 files.append(fn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3699
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3700 if fn not in matches[rev]:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3701 grepbody(fn, rev, flog.read(fnode))
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3702
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3703 pfn = copy or fn
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3704 if pfn not in matches[parent]:
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3705 try:
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3706 fnode = pctx.filenode(pfn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3707 grepbody(pfn, parent, flog.read(fnode))
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents: 7632
diff changeset
3708 except error.LookupError:
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3709 pass
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3710
9665
1de5ebfa5585 walkchangerevs: drop ui arg
Matt Mackall <mpm@selenic.com>
parents: 9663
diff changeset
3711 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
3712 rev = ctx.rev()
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
3713 parent = ctx.p1().rev()
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3714 for fn in sorted(revfiles.get(rev, [])):
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3715 states = matches[rev][fn]
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3716 copy = copies.get(rev, {}).get(fn)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3717 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
3718 if copy:
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3719 skip[copy] = True
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3720 continue
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3721 pstates = matches.get(parent, {}).get(copy or fn, [])
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3722 if pstates or states:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3723 r = display(fn, ctx, pstates, states)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3724 found = found or r
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3725 if r and not opts.get('all'):
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3726 skip[fn] = True
8849
80cc4b1a62d0 compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 8834
diff changeset
3727 if copy:
80cc4b1a62d0 compare grep result between target and its parent
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 8834
diff changeset
3728 skip[copy] = True
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3729 del matches[rev]
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
3730 del revfiles[rev]
1057
2fd15d743b3b Add grep command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1042
diff changeset
3731
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3732 return not found
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3733
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3734 @command('heads',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3735 [('r', 'rev', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3736 _('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
3737 ('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
3738 ('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
3739 ('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
3740 ] + templateopts,
16869
00e1e40d709c help: drop -a from heads syntax summary (issue3483)
Matt Mackall <mpm@selenic.com>
parents: 16850
diff changeset
3741 _('[-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
3742 def heads(ui, repo, *branchrevs, **opts):
19469
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3743 """show branch heads
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3744
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3745 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
3746 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
3747 same branch. They are where development generally takes place and
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3748 are the usual targets for update and merge operations.
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3749
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3750 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
3751 branches associated with the specified changesets are shown. This
bf6bc4681383 heads: modernize documentation (issue3992)
Matt Mackall <mpm@selenic.com>
parents: 19440
diff changeset
3752 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
3753 currently checked-out branch.
9502
8d7d68dd91fd commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents: 9189
diff changeset
3754
8d7d68dd91fd commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents: 9189
diff changeset
3755 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
3756 (see :hg:`commit --close-branch`).
9502
8d7d68dd91fd commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents: 9189
diff changeset
3757
8d7d68dd91fd commands: tweak help for 'heads'.
Greg Ward <greg-hg@gerg.ca>
parents: 9189
diff changeset
3758 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
3759 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
3760
fd511e9eeea6 commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10349
diff changeset
3761 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
3762 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
3763
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3764 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
3765 """
10328
0798a3d5f812 commands: simplify heads a little bit before I start hacking it up
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10326
diff changeset
3766
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
3767 start = None
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
3768 if 'rev' in opts:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
3769 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
3770
10350
fd511e9eeea6 commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10349
diff changeset
3771 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
3772 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
3773 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
3774 heads = []
14466
bd34a027f3ed commands: use repo.branchheads in heads command
Martin Geisler <mg@aragost.com>
parents: 14465
diff changeset
3775 for branch in repo.branchmap():
bd34a027f3ed commands: use repo.branchheads in heads command
Martin Geisler <mg@aragost.com>
parents: 14465
diff changeset
3776 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
3777 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
3778
fd511e9eeea6 commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10349
diff changeset
3779 if branchrevs:
13047
6c375e07d673 branch: operate on branch names in local string space where possible
Matt Mackall <mpm@selenic.com>
parents: 13022
diff changeset
3780 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
3781 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
3782
10349
20356e69710c commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10348
diff changeset
3783 if opts.get('active') and branchrevs:
20356e69710c commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10348
diff changeset
3784 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
3785 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
3786
20356e69710c commands: actually implement --closed for topological heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10348
diff changeset
3787 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
3788 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
3789 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
3790 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
3791 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
3792 if opts.get('rev'):
16231
ce292f1379ba i18n: fix all remaining uses of % inside _()
Matt Mackall <mpm@selenic.com>
parents: 16230
diff changeset
3793 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
3794 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
3795
4648
8e503fa54d2d Add option to heads to show only heads for current branch.
Eric Hopper <hopper@omnifarious.org>
parents: 4646
diff changeset
3796 if not heads:
8e503fa54d2d Add option to heads to show only heads for current branch.
Eric Hopper <hopper@omnifarious.org>
parents: 4646
diff changeset
3797 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
3798
10350
fd511e9eeea6 commands: do all branch heads by default, demote topological to -t/--topo
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10349
diff changeset
3799 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
3800 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
3801 for ctx in heads:
ec5240a22f4a commands: always order heads recent to oldest
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 10330
diff changeset
3802 displayer.show(ctx)
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
3803 displayer.close()
221
2bfe525ef6ca Beginning of multi-head support
mpm@selenic.com
parents: 220
diff changeset
3804
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3805 @command('help',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3806 [('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
3807 ('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
3808 ('k', 'keyword', '', _('show topics matching keyword')),
497deec204d1 help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents: 16708
diff changeset
3809 ],
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
3810 _('[-ec] [TOPIC]'),
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
3811 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
3812 def help_(ui, name=None, **opts):
7210
833d1250ce00 help: update help
Matt Mackall <mpm@selenic.com>
parents: 7197
diff changeset
3813 """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
3814
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
3815 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
3816
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
3817 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
3818 topic.
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3819
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3820 Returns 0 if successful.
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3821 """
15023
157a294444b2 help: move option text display into a helper function
Matt Mackall <mpm@selenic.com>
parents: 15022
diff changeset
3822
13608
63ab6b0ccedc help: limit documentation width to at most 80 characters
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 13601
diff changeset
3823 textwidth = min(ui.termwidth(), 80) - 2
3655
da361aa7a118 alphabetize help_ in commands
Matt Mackall <mpm@selenic.com>
parents: 3654
diff changeset
3824
22585
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3825 keep = []
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3826 if ui.verbose:
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3827 keep.append('verbose')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3828 if sys.platform.startswith('win'):
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3829 keep.append('windows')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3830 elif sys.platform == 'OpenVMS':
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3831 keep.append('vms')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3832 elif sys.platform == 'plan9':
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3833 keep.append('plan9')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3834 else:
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3835 keep.append('unix')
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3836 keep.append(sys.platform.lower())
15282c6612fb help: support OS-specific help sections
Matt Mackall <mpm@selenic.com>
parents: 22578
diff changeset
3837
22587
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3838 section = None
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3839 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
3840 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
3841
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
3842 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
3843
22587
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3844 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
3845 section=section)
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3846 if section and not formatted:
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3847 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
3848
17837
b623e323c561 help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17830
diff changeset
3849 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
3850 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
3851 else:
b623e323c561 help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17830
diff changeset
3852 keep.append('notomitted')
22587
c3c3dd31fe1c help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com>
parents: 22585
diff changeset
3853 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
3854 section=section)
16854
d71ada5a6a33 help: format all output using RST
Olav Reinert <seroton10@gmail.com>
parents: 16853
diff changeset
3855 ui.write(formatted)
6653
a78d8edaeedd help: list special help topics with -v
Johannes Stezenbach <js@sig21.net>
parents: 6652
diff changeset
3856
221
2bfe525ef6ca Beginning of multi-head support
mpm@selenic.com
parents: 220
diff changeset
3857
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3858 @command('identify|id',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3859 [('r', 'rev', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3860 _('identify the specified revision'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3861 ('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
3862 ('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
3863 ('b', 'branch', None, _('show branch')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3864 ('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
3865 ('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
3866 ] + remoteopts,
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
3867 _('[-nibtB] [-r REV] [SOURCE]'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
3868 optionalrepo=True)
13477
0fb2ff949790 id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents: 13473
diff changeset
3869 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
3870 num=None, id=None, branch=None, tags=None, bookmarks=None, **opts):
4665
091c9e54d306 identify: accept a revision argument
Matt Mackall <mpm@selenic.com>
parents: 4664
diff changeset
3871 """identify the working copy or specified revision
091c9e54d306 identify: accept a revision argument
Matt Mackall <mpm@selenic.com>
parents: 4664
diff changeset
3872
13963
3c753f9a2fbc identify: further clarification of help
Kevin Bullock <kbullock@ringworld.org>
parents: 13952
diff changeset
3873 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
3874 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
3875 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
3876 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
3877
1416b9118540 identify/help: say what the command does first, mention bookmarks
Idan Kamara <idankk86@gmail.com>
parents: 13693
diff changeset
3878 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
3879 repository.
4671
150afe6becf6 identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents: 4667
diff changeset
3880
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
3881 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
3882 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
3883
15112
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3884 .. container:: verbose
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3885
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3886 Examples:
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3887
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3888 - generate a build identifier for the working directory::
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3889
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3890 hg id --id > build-id.dat
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3891
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3892 - find the revision corresponding to a tag::
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3893
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3894 hg id -n -r 1.3
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3895
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3896 - check the most recent revision of a remote repository::
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3897
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3898 hg id -r tip http://selenic.com/hg/
24f5489452af id: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15111
diff changeset
3899
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
3900 Returns 0 if successful.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
3901 """
4662
f9b8ea362b49 identify: show nullid for empty repo
Matt Mackall <mpm@selenic.com>
parents: 4659
diff changeset
3902
5330
4528858e7202 make identify an optionalrepo command
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 5329
diff changeset
3903 if not repo and not source:
12067
a4fbbe0fbc38 Lowercase error messages
Martin Geisler <mg@lazybytes.net>
parents: 11881
diff changeset
3904 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
3905 "(.hg not found)"))
4528858e7202 make identify an optionalrepo command
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 5329
diff changeset
3906
2966
fb493241d7f6 Only show long hashes with --debug, not --verbose
Matt Mackall <mpm@selenic.com>
parents: 2963
diff changeset
3907 hexfunc = ui.debugflag and hex or short
13477
0fb2ff949790 id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents: 13473
diff changeset
3908 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
3909 output = []
7757
af6a63438a8a identify: have consistent output for local repositories
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 7743
diff changeset
3910 revs = []
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3911
4671
150afe6becf6 identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents: 4667
diff changeset
3912 if source:
10365
d757bc0c7865 interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents: 10364
diff changeset
3913 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
3914 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
3915 repo = peer.local()
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
3916 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
3917
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
3918 if not repo:
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3919 if num or branch or tags:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3920 raise util.Abort(
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3921 _("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
3922 if not rev and revs:
150afe6becf6 identify: take a path to a remote repo
Matt Mackall <mpm@selenic.com>
parents: 4667
diff changeset
3923 rev = revs[0]
4667
c7a81e3ae80f identify: work with remote repos
Matt Mackall <mpm@selenic.com>
parents: 4666
diff changeset
3924 if not rev:
c7a81e3ae80f identify: work with remote repos
Matt Mackall <mpm@selenic.com>
parents: 4666
diff changeset
3925 rev = "tip"
13644
7e6c2f58ad56 identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents: 13639
diff changeset
3926
17191
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
3927 remoterev = peer.lookup(rev)
4666
48c94bffdb28 identify: add support for output flags
Matt Mackall <mpm@selenic.com>
parents: 4665
diff changeset
3928 if default or id:
13644
7e6c2f58ad56 identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents: 13639
diff changeset
3929 output = [hexfunc(remoterev)]
7e6c2f58ad56 identify: list bookmarks for remote repositories
Nils Adermann <naderman@naderman.de>
parents: 13639
diff changeset
3930
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3931 def getbms():
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3932 bms = []
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3933
17191
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
3934 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
3935 hexremoterev = hex(remoterev)
17191
5884812686f7 peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents: 17190
diff changeset
3936 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
3937 if bmr == hexremoterev]
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3938
18366
fdf2f5730bd4 identity: report bookmarks sorted
Mads Kiilerich <mads@kiilerich.com>
parents: 18267
diff changeset
3939 return sorted(bms)
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3940
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3941 if bookmarks:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3942 output.extend(getbms())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3943 elif default and not ui.quiet:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3944 # 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
3945 bm = '/'.join(getbms())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3946 if bm:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3947 output.append(bm)
4665
091c9e54d306 identify: accept a revision argument
Matt Mackall <mpm@selenic.com>
parents: 4664
diff changeset
3948 else:
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3949 if not rev:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3950 ctx = repo[None]
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3951 parents = ctx.parents()
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3952 changed = ""
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3953 if default or id or num:
17255
3e856d8abe9c identity: show trailing '+' for dirty subrepos (issue2839)
Patrick Mezard <patrick@mezard.eu>
parents: 17248
diff changeset
3954 if (util.any(repo.status())
3e856d8abe9c identity: show trailing '+' for dirty subrepos (issue2839)
Patrick Mezard <patrick@mezard.eu>
parents: 17248
diff changeset
3955 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
3956 changed = '+'
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3957 if default or id:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3958 output = ["%s%s" %
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3959 ('+'.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
3960 if num:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3961 output.append("%s%s" %
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3962 ('+'.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
3963 else:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
3964 ctx = scmutil.revsingle(repo, rev)
13953
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3965 if default or id:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3966 output = [hexfunc(ctx.node())]
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3967 if num:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3968 output.append(str(ctx.rev()))
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3969
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3970 if default and not ui.quiet:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3971 b = ctx.branch()
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3972 if b != 'default':
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3973 output.append("(%s)" % b)
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3974
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3975 # 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
3976 t = '/'.join(ctx.tags())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3977 if t:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3978 output.append(t)
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3979
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3980 # 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
3981 bm = '/'.join(ctx.bookmarks())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3982 if bm:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3983 output.append(bm)
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3984 else:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3985 if branch:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3986 output.append(ctx.branch())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3987
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3988 if tags:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3989 output.extend(ctx.tags())
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3990
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3991 if bookmarks:
ae10a5e8e558 identify: restructure code to make it more readable
Idan Kamara <idankk86@gmail.com>
parents: 13950
diff changeset
3992 output.extend(ctx.bookmarks())
13477
0fb2ff949790 id: add bookmarks to id
Kevin Bullock <kbullock@ringworld.org>
parents: 13473
diff changeset
3993
386
494c8e3f47f3 Improvements for hg identify:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 371
diff changeset
3994 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
3995
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3996 @command('import|patch',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3997 [('p', 'strip', 1,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
3998 _('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
3999 'meaning as the corresponding patch option'), _('NUM')),
14532
2498128821a9 import: deprecate --base
Patrick Mezard <pmezard@gmail.com>
parents: 14529
diff changeset
4000 ('b', 'base', '', _('base path (DEPRECATED)'), _('PATH')),
15221
269374b89b74 import: add --edit switch
Matt Mackall <mpm@selenic.com>
parents: 15212
diff changeset
4001 ('e', 'edit', False, _('invoke editor on commit messages')),
19409
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
4002 ('f', 'force', None,
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
4003 _('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
4004 ('', 'no-commit', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4005 _("don't commit, just update the working directory")),
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4006 ('', 'bypass', None,
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4007 _("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
4008 ('', '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
4009 _('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
4010 ('', 'exact', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4011 _('apply patch to the nodes from which it was generated')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4012 ('', 'import-branch', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4013 _('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
4014 commitopts + commitopts2 + similarityopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4015 _('[OPTION]... PATCH...'))
15327
67e92d29ecb5 import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents: 15321
diff changeset
4016 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
4017 """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
4018
9649
20b91f91f9ca minor documentation improvements
timeless@mozdev.org
parents: 9646
diff changeset
4019 Import a list of patches and commit them individually (unless
20b91f91f9ca minor documentation improvements
timeless@mozdev.org
parents: 9646
diff changeset
4020 --no-commit is specified).
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4021
19409
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
4022 Because import first applies changes to the working directory,
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
4023 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
4024
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
4025 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
4026 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
4027 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
4028 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
4029 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
4030 message.
2504
158d3d2ae070 import: parse email messages
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2494
diff changeset
4031
11193
687c7d395f20 Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents: 11185
diff changeset
4032 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
4033 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
4034 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
4035 override these.
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4036
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4037 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
4038 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
4039 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
4040 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
4041 deficiencies in the text patch format.
4263
47ba52121433 Add import --exact.
Brendan Cully <brendan@kublai.com>
parents: 4256
diff changeset
4042
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4043 Use --bypass to apply and commit patches directly to the
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4044 repository, not touching the working directory. Without --exact,
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4045 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
4046 revision.
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4047
8033
aeb4a5c7a28e commands: consistently write switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents: 8032
diff changeset
4048 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
4049 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
4050
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
4051 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
4052 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
4053 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
4054 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
4055 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
4056 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
4057 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
4058 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
4059 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
4060
8931
4c99eafb101e commands: add note about import retrieving patches from URLs
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8927
diff changeset
4061 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
4062 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
4063 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
4064
15113
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4065 .. container:: verbose
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4066
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4067 Examples:
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4068
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4069 - import a traditional patch from a website and detect renames::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4070
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4071 hg import -s 80 http://example.com/bugfix.patch
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4072
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4073 - import a changeset from an hgweb server::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4074
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4075 hg import http://www.selenic.com/hg/rev/5ca8c111e9aa
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4076
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4077 - import all the patches in an Unix-style mbox::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4078
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4079 hg import incoming-patches.mbox
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4080
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4081 - attempt to exactly restore an exported changeset (not always
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4082 possible)::
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4083
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4084 hg import --exact proposed-fix.patch
b55129f7f039 import: add help examples
Matt Mackall <mpm@selenic.com>
parents: 15112
diff changeset
4085
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
4086 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
4087 """
15327
67e92d29ecb5 import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents: 15321
diff changeset
4088
67e92d29ecb5 import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents: 15321
diff changeset
4089 if not patch1:
67e92d29ecb5 import: abort usefully if no patch name given
Kevin Bullock <kbullock@ringworld.org>
parents: 15321
diff changeset
4090 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
4091
437
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
4092 patches = (patch1,) + patches
500
ebc4714a7632 [PATCH] Clean up destination directory if a clone fails.
mpm@selenic.com
parents: 499
diff changeset
4093
6139
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
4094 date = opts.get('date')
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
4095 if date:
989467e8e3a9 Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6134
diff changeset
4096 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
4097
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4098 update = not opts.get('bypass')
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4099 if not update and opts.get('no_commit'):
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4100 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
4101 try:
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4102 sim = float(opts.get('similarity') or 0)
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4103 except ValueError:
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4104 raise util.Abort(_('similarity must be a number'))
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4105 if sim < 0 or sim > 100:
bffdab64dfbb import: add similarity option (issue295)
Brendan Cully <brendan@kublai.com>
parents: 7372
diff changeset
4106 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
4107 if sim and not update:
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4108 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
4109 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
4110 raise util.Abort(_('cannot use --exact with --edit'))
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4111
19476
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
4112 if update:
4fed15d4c5aa commands: add checks for unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19475
diff changeset
4113 cmdutil.checkunfinished(repo)
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4114 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
4115 cmdutil.bailifchanged(repo)
966
022bcc738389 hg import: abort with uncommitted changes, override with --force
mpm@selenic.com
parents: 965
diff changeset
4116
15195
5b2a3bb06cef import: rename some local variables
Greg Ward <greg@gerg.ca>
parents: 15194
diff changeset
4117 base = opts["base"]
15198
62dc0e7ab092 import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents: 15197
diff changeset
4118 wlock = lock = tr = None
12913
0e0a52bd58f9 import: --no-commit should update .hg/last-message.txt
Steve Borho <steve@borho.org>
parents: 12893
diff changeset
4119 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
4120 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
4121
10405
2d30d66a89ad whitespace cleanup
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 10394
diff changeset
4122
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
4123 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
4124 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
4125 wlock = repo.wlock()
22405
6f63c47cbb86 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com>
parents: 22390
diff changeset
4126 repo.dirstate.beginparentchange()
16274
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4127 if not opts.get('no_commit'):
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4128 lock = repo.lock()
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4129 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
4130 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
4131 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
4132 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
4133 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
4134 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
4135 patchurl = 'stdin' # for error message
14611
adbf5e7df96d import: add --bypass option
Patrick Mezard <pmezard@gmail.com>
parents: 14610
diff changeset
4136 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
4137 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
4138 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
4139 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
4140
2ed335669e18 commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15265
diff changeset
4141 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
4142 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
4143 (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
4144 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
4145 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
4146 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
4147 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
4148 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
4149 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
4150 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
4151 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
4152 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
4153 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
4154 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
4155 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
4156 "`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
4157 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
4158 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
4159
2ed335669e18 commands: use separate try/except and try/finally as needed for python2.4
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15265
diff changeset
4160 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
4161 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
4162
16274
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4163 if tr:
5d75eb8568d1 encoding: tune fast-path of tolocal a bit
Matt Mackall <mpm@selenic.com>
parents: 16249
diff changeset
4164 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
4165 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
4166 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
4167 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
4168 return ret
16705
c2d9ef43ff6c check-code: ignore naked excepts with a "re-raise" comment
Brodie Rao <brodie@sf.io>
parents: 16690
diff changeset
4169 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
4170 # 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
4171 # 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
4172 # 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
4173 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
4174 raise
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
4175 finally:
15198
62dc0e7ab092 import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents: 15197
diff changeset
4176 if tr:
62dc0e7ab092 import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents: 15197
diff changeset
4177 tr.release()
8109
496ae1ea4698 switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents: 8088
diff changeset
4178 release(lock, wlock)
437
5b38a5af4019 Commands cleanup
mpm@selenic.com
parents: 429
diff changeset
4179
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4180 @command('incoming|in',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4181 [('f', 'force', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4182 _('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
4183 ('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
4184 ('', 'bundle', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4185 _('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
4186 ('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
4187 ('B', 'bookmarks', False, _("compare bookmarks")),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4188 ('b', 'branch', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4189 _('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
4190 ] + logopts + remoteopts + subrepoopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4191 _('[-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
4192 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
4193 """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
4194
1979
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
4195 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
4196 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
4197 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
4198
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4199 For remote repository, using --bundle avoids downloading the
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4200 changesets twice if the incoming is followed by a pull.
1979
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
4201
d545fa1426b9 More detailed documentation about ssh:// URLs; fixes issue170.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1974
diff changeset
4202 See pull for valid source format details.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4203
20834
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4204 .. container:: verbose
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4205
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4206 Examples:
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4207
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4208 - show incoming changes with patches and full description::
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4209
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4210 hg incoming -vp
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4211
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4212 - show incoming changes excluding merges, store a bundle::
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4213
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4214 hg in -vpM --bundle incoming.hg
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4215 hg pull incoming.hg
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4216
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4217 - briefly list changes inside a bundle::
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4218
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4219 hg in changes.hg -T "{desc|firstline}\\n"
8c210b169c69 help: add examples to incoming
Matt Mackall <mpm@selenic.com>
parents: 20791
diff changeset
4220
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4221 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
4222 """
17182
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4223 if opts.get('graph'):
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4224 cmdutil.checkunsupportedgraphflags([], opts)
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4225 def display(other, chlist, displayer):
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4226 revdag = cmdutil.graphrevs(other, chlist, opts)
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4227 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
4228 cmdutil.displaygraph(ui, revdag, displayer, showparents,
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4229 graphmod.asciiedges)
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4230
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4231 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
4232 return 0
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4233
12274
c02e1ed3d407 incoming: recurse into subrepositories with --subrepos/-S flag
Martin Geisler <mg@lazybytes.net>
parents: 12273
diff changeset
4234 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
4235 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
4236
13366
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4237 if opts.get('bookmarks'):
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4238 source, branches = hg.parseurl(ui.expandpath(source),
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4239 opts.get('branch'))
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
4240 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
4241 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
4242 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
4243 return 0
14076
924c82157d46 url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents: 14073
diff changeset
4244 ui.status(_('comparing with %s\n') % util.hidepassword(source))
13366
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4245 return bookmarks.diff(ui, repo, other)
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4246
14360
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4247 repo._subtoppath = ui.expandpath(source)
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4248 try:
14362
8c740a850ad7 commands: replace 'x = f(); return x' with 'return f()'
Martin Geisler <mg@lazybytes.net>
parents: 14361
diff changeset
4249 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
4250 finally:
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4251 del repo._subtoppath
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4252
1944
fdf40c9b3306 incoming: add support for remote repo using bundlerepo
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1943
diff changeset
4253
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
4254 @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
4255 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
4256 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
4257 """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
4258
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
4259 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
4260 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
4261
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4262 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
4263
9970
36760956f6d3 commands: mark "ssh://" as inline literals in help texts
Martin Geisler <mg@lazybytes.net>
parents: 9952
diff changeset
4264 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
4265 See :hg:`help urls` for more information.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4266
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4267 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4268 """
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
4269 hg.peer(ui, opts, ui.expandpath(dest), create=True)
338
1e091b3293d5 default path support with .hg/hgrc
mpm@selenic.com
parents: 335
diff changeset
4270
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4271 @command('locate',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4272 [('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
4273 ('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
4274 ('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
4275 ] + walkopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4276 _('[OPTION]... [PATTERN]...'))
627
b6c42714d900 Add locate command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 625
diff changeset
4277 def locate(ui, repo, *pats, **opts):
22431
eaeee6f95fc0 locate: deprecate in favor of files
Matt Mackall <mpm@selenic.com>
parents: 22429
diff changeset
4278 """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
4279
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4280 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
4281 names match the given patterns.
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4282
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4283 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
4284 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
4285 subdirectories, use "--include .".
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4286
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4287 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
4288 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
4289
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4290 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
4291 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
4292 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
4293 contain whitespace as multiple filenames.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4294
22433
ae1932dce9c1 locate: add pointer to files command in help
Matt Mackall <mpm@selenic.com>
parents: 22431
diff changeset
4295 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
4296
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4297 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
4298 """
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
4299 end = opts.get('print0') and '\0' or '\n'
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
4300 rev = scmutil.revsingle(repo, opts.get('rev'), None).node()
742
092937de2ad7 Refactor matchpats and walk
mpm@selenic.com
parents: 740
diff changeset
4301
4196
1c69c73d85d9 locate: exit(1) if we didn't print any file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 4195
diff changeset
4302 ret = 1
21986
48166e46f111 locate: use ctx.matches instead of ctx.walk
Siddharth Agarwal <sid0@fb.com>
parents: 21980
diff changeset
4303 ctx = repo[rev]
48166e46f111 locate: use ctx.matches instead of ctx.walk
Siddharth Agarwal <sid0@fb.com>
parents: 21980
diff changeset
4304 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
4305 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
4306
48166e46f111 locate: use ctx.matches instead of ctx.walk
Siddharth Agarwal <sid0@fb.com>
parents: 21980
diff changeset
4307 for abs in ctx.matches(m):
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
4308 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
4309 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
4310 else:
6584
29c77e5dfb3c walk: remove rel and exact returns
Matt Mackall <mpm@selenic.com>
parents: 6583
diff changeset
4311 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
4312 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
4313
1c69c73d85d9 locate: exit(1) if we didn't print any file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 4195
diff changeset
4314 return ret
627
b6c42714d900 Add locate command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 625
diff changeset
4315
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4316 @command('^log|history',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4317 [('f', 'follow', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4318 _('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
4319 ('', 'follow-first', None,
15405
e4a17bb8472f log: hide some low-utility options
Matt Mackall <mpm@selenic.com>
parents: 15404
diff changeset
4320 _('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
4321 ('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
4322 ('C', 'copies', None, _('show copied files')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4323 ('k', 'keyword', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4324 _('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
4325 ('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
4326 ('', '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
4327 ('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
4328 ('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
4329 ('', 'only-branch', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4330 _('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
4331 _('BRANCH')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4332 ('b', 'branch', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4333 _('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
4334 ('P', 'prune', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4335 _('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
4336 ] + logopts + walkopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
4337 _('[OPTION]... [FILE]'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
4338 inferrepo=True)
1031
503aaf19a040 Rewrite log command. New version is faster and more featureful.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1030
diff changeset
4339 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
4340 """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
4341
2741
ae5ce3454ef5 log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2739
diff changeset
4342 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
4343 project.
ae5ce3454ef5 log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2739
diff changeset
4344
15104
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4345 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
4346 --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
4347 used as the starting revision.
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4348
2741
ae5ce3454ef5 log: add -f/--follow option, to follow rename/copy
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2739
diff changeset
4349 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
4350 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
4351 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
4352 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
4353
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4354 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
4355 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
4356 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
4357 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
4358
20544
8982a5397687 log: describe graph symbols in the help
Mads Kiilerich <madski@unity3d.com>
parents: 20526
diff changeset
4359 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
4360 recent changeset at the top.
8982a5397687 log: describe graph symbols in the help
Mads Kiilerich <madski@unity3d.com>
parents: 20526
diff changeset
4361 '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
4362 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
4363 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
4364
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
4365 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
4366
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
4367 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
4368 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
4369 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
4370 will appear in files:.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4371
15105
6e91fba485fa log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents: 15104
diff changeset
4372 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
4373
15105
6e91fba485fa log: add a usage note about --removed
Matt Mackall <mpm@selenic.com>
parents: 15104
diff changeset
4374 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
4375 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
4376 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
4377
15103
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4378 .. container:: verbose
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4379
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4380 Some examples:
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4381
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4382 - 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
4383
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4384 hg log -v
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4385
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4386 - changesets ancestral to the working directory::
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4387
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4388 hg log -f
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4389
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4390 - 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
4391
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4392 hg log -l 10 -b .
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4393
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4394 - 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
4395
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4396 hg log --removed file.c
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4397
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4398 - 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
4399
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4400 hg log -Mp lib/
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4401
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4402 - 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
4403
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4404 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
4405
21944
0483ff40e326 templates: re-add template listing support
Matt Mackall <mpm@selenic.com>
parents: 21940
diff changeset
4406 - list available log templates::
0483ff40e326 templates: re-add template listing support
Matt Mackall <mpm@selenic.com>
parents: 21940
diff changeset
4407
0483ff40e326 templates: re-add template listing support
Matt Mackall <mpm@selenic.com>
parents: 21940
diff changeset
4408 hg log -T list
0483ff40e326 templates: re-add template listing support
Matt Mackall <mpm@selenic.com>
parents: 21940
diff changeset
4409
22576
c712238c4f9b help: fix typo in log examples
Matt Mackall <mpm@selenic.com>
parents: 22493
diff changeset
4410 - 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
4411
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4412 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
4413
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4414 - 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
4415
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4416 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
4417
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4418 - 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
4419
5ca8c111e9aa log: add some usage examples to verbose help
Matt Mackall <mpm@selenic.com>
parents: 15081
diff changeset
4420 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
4421
15104
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4422 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
4423
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4424 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
4425 specifying revisions.
a20f5088013a log: rearrange the help text a bit
Matt Mackall <mpm@selenic.com>
parents: 15103
diff changeset
4426
16568
770190bff625 help: add reference to template help (issue3413)
A. S. Budden <abudden@gmail.com>
parents: 16551
diff changeset
4427 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
4428 specifying custom templates.
770190bff625 help: add reference to template help (issue3413)
A. S. Budden <abudden@gmail.com>
parents: 16551
diff changeset
4429
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4430 Returns 0 on success.
22493
abf4e98b8ff2 help: mention mode in hg log --removed help (issue4381)
Matt Mackall <mpm@selenic.com>
parents: 22316
diff changeset
4431
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4432 """
17181
6f71167292f2 log: support --graph without graphlog extension
Patrick Mezard <patrick@mezard.eu>
parents: 17168
diff changeset
4433 if opts.get('graph'):
6f71167292f2 log: support --graph without graphlog extension
Patrick Mezard <patrick@mezard.eu>
parents: 17168
diff changeset
4434 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
4435
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4436 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
4437 limit = cmdutil.loglimit(opts)
1756
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
4438 count = 0
f29857aaa053 add -l,--limit to log command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1747
diff changeset
4439
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4440 getrenamed = None
16175
280e834c9d15 log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents: 16163
diff changeset
4441 if opts.get('copies'):
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4442 endrev = None
16175
280e834c9d15 log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents: 16163
diff changeset
4443 if opts.get('rev'):
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4444 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
4445 getrenamed = templatekw.getrenamedfn(repo, endrev=endrev)
3197
e18c3d08528d Show copies in hg log.
Brendan Cully <brendan@kublai.com>
parents: 3194
diff changeset
4446
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4447 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
4448 for rev in revs:
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4449 if count == limit:
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4450 break
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4451 ctx = repo[rev]
10060
f780b1098efc templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents: 10021
diff changeset
4452 copies = None
16175
280e834c9d15 log: restore cache used by --copies
Patrick Mezard <patrick@mezard.eu>
parents: 16163
diff changeset
4453 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
4454 copies = []
9662
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
4455 for fn in ctx.files():
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
4456 rename = getrenamed(fn, rev)
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
4457 if rename:
f3d60543924f walkchangerevs: move 'add' to callback
Matt Mackall <mpm@selenic.com>
parents: 9656
diff changeset
4458 copies.append((fn, rename[0]))
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4459 revmatchfn = filematcher and filematcher(ctx.rev()) or None
11488
f786fc4b8764 log: follow filenames through renames (issue647)
Mads Kiilerich <mads@kiilerich.com>
parents: 11459
diff changeset
4460 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
4461 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
4462 count += 1
21127
69402eb72115 log: changed implementation to use graphlog code
Lucas Moscovicz <lmoscovicz@fb.com>
parents: 21105
diff changeset
4463
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
4464 displayer.close()
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4465
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4466 @command('manifest',
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4467 [('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
4468 ('', '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
4469 + formatteropts,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4470 _('[-r REV]'))
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4471 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
4472 """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
4473
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4474 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
4475 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
4476 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
4477
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4478 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
4479 With --debug, print file revision hashes.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4480
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4481 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
4482 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
4483
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4484 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4485 """
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4486
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4487 fm = ui.formatter('manifest', opts)
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4488
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4489 if opts.get('all'):
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4490 if rev or node:
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4491 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
4492
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4493 res = []
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4494 prefix = "data/"
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4495 suffix = ".i"
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4496 plen = len(prefix)
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4497 slen = len(suffix)
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4498 lock = repo.lock()
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4499 try:
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4500 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
4501 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
4502 res.append(fn[plen:-slen])
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4503 finally:
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4504 lock.release()
17376
3738d6254bd3 manifest: remove redundant sorted() call for --all
Adrian Buehlmann <adrian@cadifra.com>
parents: 17370
diff changeset
4505 for f in res:
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4506 fm.startitem()
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4507 fm.write("path", '%s\n', f)
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4508 fm.end()
14399
71938479eff9 add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents: 14382
diff changeset
4509 return
3736
ad3d5b4367cb make manifest friendlier
Matt Mackall <mpm@selenic.com>
parents: 3707
diff changeset
4510
5155
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4511 if rev and node:
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4512 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
4513
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4514 if not node:
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4515 node = rev
13d23d66a6cd manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents: 5148
diff changeset
4516
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4517 char = {'l': '@', 'x': '*', '': ''}
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4518 mode = {'l': '644', 'x': '755', '': '644'}
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
4519 ctx = scmutil.revsingle(repo, node)
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4520 mf = ctx.manifest()
6749
51b0e799352f manifest: remove execf/linkf methods
Matt Mackall <mpm@selenic.com>
parents: 6748
diff changeset
4521 for f in ctx:
17911
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4522 fm.startitem()
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4523 fl = ctx[f].flags()
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4524 fm.condwrite(ui.debugflag, 'hash', '%s ', hex(mf[f]))
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4525 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
4526 fm.write('path', '%s\n', f)
8a8d1a2fd19d manifest: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17910
diff changeset
4527 fm.end()
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4528
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4529 @command('^merge',
19439
f4148c36f0aa merge: deprecate the --force option
Florence Laguzet <florence.laguzet@gmail.com>
parents: 19434
diff changeset
4530 [('f', 'force', None,
f4148c36f0aa merge: deprecate the --force option
Florence Laguzet <florence.laguzet@gmail.com>
parents: 19434
diff changeset
4531 _('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
4532 ('r', 'rev', '', _('revision to merge'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4533 ('P', 'preview', None,
14852
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
4534 _('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
4535 ] + mergetoolopts,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4536 _('[-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
4537 def merge(ui, repo, node=None, **opts):
4014
509342f95564 various doc fixes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 4013
diff changeset
4538 """merge working directory with another revision
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
4539
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4540 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
4541 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
4542
1cd3775e097c commands: better merge help text
Martin Geisler <mg@daimi.au.dk>
parents: 7976
diff changeset
4543 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
4544 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
4545 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
4546 two parents.
2915
013921c753bd merge with other head by default, not tip.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2911
diff changeset
4547
12750
05bd2658bbb3 merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents: 12727
diff changeset
4548 ``--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
4549 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
4550 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
4551
2915
013921c753bd merge with other head by default, not tip.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2911
diff changeset
4552 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
4553 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
4554 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
4555 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
4556
12750
05bd2658bbb3 merge: add --tool argument to merge and resolve
Steve Borho <steve@borho.org>
parents: 12727
diff changeset
4557 :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
4558
11452
eac141407b85 merge: document how to 'undo' a merge
Matt Mackall <mpm@selenic.com>
parents: 11442
diff changeset
4559 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
4560 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
4561 all changes.
eac141407b85 merge: document how to 'undo' a merge
Matt Mackall <mpm@selenic.com>
parents: 11442
diff changeset
4562
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4563 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
4564 """
2806
0bf22c109cc3 Factor doupdate into _lookup + hg.update
Matt Mackall <mpm@selenic.com>
parents: 2803
diff changeset
4565
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4566 if opts.get('rev') and node:
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
4567 raise util.Abort(_("please specify just one revision"))
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
4568 if not node:
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4569 node = opts.get('rev')
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
4570
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4571 if node:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4572 node = scmutil.revsingle(repo, node).node()
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4573
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4574 if not node and repo._bookmarkcurrent:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4575 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
4576 curhead = repo[repo._bookmarkcurrent].node()
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4577 if len(bmheads) == 2:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4578 if curhead == bmheads[0]:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4579 node = bmheads[1]
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4580 else:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4581 node = bmheads[0]
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4582 elif len(bmheads) > 2:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4583 raise util.Abort(_("multiple matching bookmarks to merge - "
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4584 "please merge with an explicit rev or bookmark"),
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4585 hint=_("run 'hg heads' to see all heads"))
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4586 elif len(bmheads) <= 1:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4587 raise util.Abort(_("no matching bookmark to merge - "
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4588 "please merge with an explicit rev or bookmark"),
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4589 hint=_("run 'hg heads' to see all heads"))
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4590
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4591 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
4592 branch = repo[None].branch()
6844
a38dff85d31f merge: use correct branch name for counting heads
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6843
diff changeset
4593 bheads = repo.branchheads(branch)
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4594 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
4595
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4596 if len(nbhs) > 2:
14198
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4597 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
4598 "please merge with an explicit rev")
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4599 % (branch, len(bheads)),
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4600 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
4601
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
4602 parent = repo.dirstate.p1()
17386
45b5eb2941d0 merge: handle case when heads are all bookmarks
John Li <jli@circularly.org>
parents: 17370
diff changeset
4603 if len(nbhs) <= 1:
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4604 if len(bheads) > 1:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4605 raise util.Abort(_("heads are bookmarked - "
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4606 "please merge with an explicit rev"),
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4607 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
4608 if len(repo.heads()) > 1:
14198
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4609 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
4610 "please merge with an explicit rev")
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4611 % branch,
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4612 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
4613 msg, hint = _('nothing to merge'), None
15618
0aca2695a110 merge: remove excess creation of changectx
Kevin Bullock <kbullock@ringworld.org>
parents: 15614
diff changeset
4614 if parent != repo.lookup(branch):
15619
6c8573dd1b6b merge: make 'nothing to merge' aborts consistent
Kevin Bullock <kbullock@ringworld.org>
parents: 15618
diff changeset
4615 hint = _("use 'hg update' instead")
6c8573dd1b6b merge: make 'nothing to merge' aborts consistent
Kevin Bullock <kbullock@ringworld.org>
parents: 15618
diff changeset
4616 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
4617
6723
1fe6f365df2e merge: only in-branch merges can be implicit
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6686
diff changeset
4618 if parent not in bheads:
14198
8f11fd321014 commands: use util.Abort's hint some more
Martin Geisler <mg@aragost.com>
parents: 14197
diff changeset
4619 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
4620 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
4621 "explicit revision"))
16708
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4622 if parent == nbhs[0]:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4623 node = nbhs[-1]
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4624 else:
4a02cf4fbb2e merge: respect bookmarks during merge
David Soria Parra <dsp@php.net>
parents: 16705
diff changeset
4625 node = nbhs[0]
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4626
8834
6d36fc70754e merge: rename -S/--show option to -P/--preview
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8815
diff changeset
4627 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
4628 # 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
4629 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
4630 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
4631 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
4632
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4633 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
4634 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
4635 displayer.show(repo[node])
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
4636 displayer.close()
8387
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4637 return 0
50b6af595e0c merge: add -S/--show option to review revisions without merging
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8366
diff changeset
4638
12788
de793925862e merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents: 12765
diff changeset
4639 try:
de793925862e merge: implement --tool arguments using new ui.forcemerge configurable
Steve Borho <steve@borho.org>
parents: 12765
diff changeset
4640 # 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
4641 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
4642 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
4643 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
4644 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
4645
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4646 @command('outgoing|out',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4647 [('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
4648 ('r', 'rev', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4649 _('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
4650 ('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
4651 ('B', 'bookmarks', False, _('compare bookmarks')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4652 ('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
4653 _('BRANCH')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4654 ] + logopts + remoteopts + subrepoopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4655 _('[-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
4656 def outgoing(ui, repo, dest=None, **opts):
10376
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
4657 """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
4658
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4659 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
4660 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
4661 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
4662
10376
a2950e053614 help: Improved body text
timeless <timeless@mozdev.org>
parents: 10375
diff changeset
4663 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
4664
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4665 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
4666 """
17182
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4667 if opts.get('graph'):
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4668 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
4669 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
4670 if not o:
21051
1004d3cd65fd outgoing: introduce "outgoinghooks" to avoid redundant outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21050
diff changeset
4671 cmdutil.outgoinghooks(ui, repo, other, opts, o)
17182
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4672 return
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4673
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4674 revdag = cmdutil.graphrevs(repo, o, opts)
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4675 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
4676 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
4677 cmdutil.displaygraph(ui, revdag, displayer, showparents,
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4678 graphmod.asciiedges)
21051
1004d3cd65fd outgoing: introduce "outgoinghooks" to avoid redundant outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21050
diff changeset
4679 cmdutil.outgoinghooks(ui, repo, other, opts, o)
17182
cdf1532d89c6 incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu>
parents: 17181
diff changeset
4680 return 0
13366
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4681
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4682 if opts.get('bookmarks'):
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4683 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
4684 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
4685 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
4686 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
4687 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
4688 return 0
14076
924c82157d46 url: move URL parsing functions into util to improve startup time
Brodie Rao <brodie@bitheap.org>
parents: 14073
diff changeset
4689 ui.status(_('comparing with %s\n') % util.hidepassword(dest))
13366
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4690 return bookmarks.diff(ui, other, repo)
c756e9166417 bookmarks: merge incoming/outgoing into core
Matt Mackall <mpm@selenic.com>
parents: 13344
diff changeset
4691
14360
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4692 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
4693 try:
14362
8c740a850ad7 commands: replace 'x = f(); return x' with 'return f()'
Martin Geisler <mg@lazybytes.net>
parents: 14361
diff changeset
4694 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
4695 finally:
ab687820c4cc subrepo: respect non-default path for incoming/outgoing
Martin Geisler <mg@aragost.com>
parents: 14014
diff changeset
4696 del repo._subtoppath
920
270756aa29d5 Add hg outgoing command
mpm@selenic.com
parents: 918
diff changeset
4697
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4698 @command('parents',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4699 [('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
4700 ] + templateopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
4701 _('[-r REV] [FILE]'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
4702 inferrepo=True)
3658
d12c8668b102 remove legacy hg parents REV syntax
Matt Mackall <mpm@selenic.com>
parents: 3657
diff changeset
4703 def parents(ui, repo, file_=None, **opts):
22501
bde49bbfb30f commands: deprecate the parents commands
Matt Mackall <mpm@selenic.com>
parents: 22480
diff changeset
4704 """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
4705
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4706 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
4707 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
4708 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
4709 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
4710 argument to --rev if given) is printed.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4711
22501
bde49bbfb30f commands: deprecate the parents commands
Matt Mackall <mpm@selenic.com>
parents: 22480
diff changeset
4712 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
4713
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4714 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4715 """
12925
6eab8f0df2ca commands: add revset support to most commands
Matt Mackall <mpm@selenic.com>
parents: 12918
diff changeset
4716
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
4717 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
4718
4586
1fcc076fcb17 Make parents with a file but not a revision use working directory revision.
Brendan Cully <brendan@kublai.com>
parents: 4451
diff changeset
4719 if file_:
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
4720 m = scmutil.match(ctx, (file_,), opts)
6582
5acbdd3941c4 walk: remove remaining users of cmdutils.matchpats
Matt Mackall <mpm@selenic.com>
parents: 6579
diff changeset
4721 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
4722 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
4723 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
4724 filenodes = []
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4725 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
4726 if not cp:
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4727 continue
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4728 try:
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4729 filenodes.append(cp.filenode(file_))
7633
08cabecfa8a8 errors: move revlog errors
Matt Mackall <mpm@selenic.com>
parents: 7632
diff changeset
4730 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
4731 pass
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4732 if not filenodes:
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4733 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
4734 p = []
0cfb62e043e8 parents: change parents command to use filectx
Durham Goode <durham@fb.com>
parents: 19306
diff changeset
4735 for fn in filenodes:
0cfb62e043e8 parents: change parents command to use filectx
Durham Goode <durham@fb.com>
parents: 19306
diff changeset
4736 fctx = repo.filectx(file_, fileid=fn)
0cfb62e043e8 parents: change parents command to use filectx
Durham Goode <durham@fb.com>
parents: 19306
diff changeset
4737 p.append(fctx.node())
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4738 else:
5298
cba2a689117d parents: make it match the doc when called on a file
Patrick Mezard <pmezard@gmail.com>
parents: 5230
diff changeset
4739 p = [cp.node() for cp in ctx.parents()]
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4740
3643
b4ad640a3bcf templates: move changeset templating bits to cmdutils
Matt Mackall <mpm@selenic.com>
parents: 3631
diff changeset
4741 displayer = cmdutil.show_changeset(ui, repo, opts)
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4742 for n in p:
1092
0a02315976ff commands: use node functions directly
mpm@selenic.com
parents: 1090
diff changeset
4743 if n != nullid:
7743
ec9b726a9428 commands: fix paths command docstring indention
Martin Geisler <mg@daimi.au.dk>
parents: 7739
diff changeset
4744 displayer.show(repo[n])
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
4745 displayer.close()
255
20a44c82795f hg help: use docstrings only
mpm@selenic.com
parents: 254
diff changeset
4746
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
4747 @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
4748 def paths(ui, repo, search=None):
7691
bcdc2fe3fd07 Clarified 'hg paths' command help
Bill Barry <after.fallout@gmail.com>
parents: 7684
diff changeset
4749 """show aliases for remote repositories
bcdc2fe3fd07 Clarified 'hg paths' command help
Bill Barry <after.fallout@gmail.com>
parents: 7684
diff changeset
4750
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
4751 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
4752 show definition of all available names.
7743
ec9b726a9428 commands: fix paths command docstring indention
Martin Geisler <mg@daimi.au.dk>
parents: 7739
diff changeset
4753
14331
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
4754 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
4755 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
4756
12083
ebfc46929f3e help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents: 12067
diff changeset
4757 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
4758 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
4759 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
4760
11007
a0102da324ab commands: revised documentation of 'default' and 'default-push'
Faheem Mitha <faheem@email.unc.edu>
parents: 10948
diff changeset
4761 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
4762 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
4763 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
4764 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
4765 ``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
4766 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
4767 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
4768 ``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
4769 :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
4770 :hg:`bundle`) operations.
10933
e3396b218e10 Document 'default' and 'default-push' in paths docstring
Faheem Mitha <faheem@email.unc.edu>
parents: 10645
diff changeset
4771
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
4772 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
4773
35e2d453cf0d commands: document return values of add and paths commands
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11488
diff changeset
4774 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4775 """
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4776 if search:
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4777 for name, path in ui.configitems("paths"):
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4778 if name == search:
14331
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
4779 ui.status("%s\n" % util.hidepassword(path))
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4780 return
14331
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
4781 if not ui.quiet:
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
4782 ui.warn(_("not found!\n"))
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4783 return 1
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4784 else:
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4785 for name, path in ui.configitems("paths"):
14331
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
4786 if ui.quiet:
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
4787 ui.write("%s\n" % name)
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
4788 else:
3b9a896af09c paths: Add support for -q/--quiet
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14326
diff changeset
4789 ui.write("%s = %s\n" % (name, util.hidepassword(path)))
779
b3c7cb74d325 Add paths command
TK Soh <teekaysoh@yahoo.com>
parents: 778
diff changeset
4790
17981
e689b0d91546 command: remove phase from the list of basic command
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 17949
diff changeset
4791 @command('phase',
15849
513ca86b88ef phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents: 15837
diff changeset
4792 [('p', 'public', False, _('set changeset phase to public')),
513ca86b88ef phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents: 15837
diff changeset
4793 ('d', 'draft', False, _('set changeset phase to draft')),
513ca86b88ef phase: lowercase option help, rephrase slightly
Martin Geisler <mg@aragost.com>
parents: 15837
diff changeset
4794 ('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
4795 ('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
4796 ('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
4797 ],
15854
2260e6ed09c3 phase: the REV argument can be repeated
Martin Geisler <mg@aragost.com>
parents: 15853
diff changeset
4798 _('[-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
4799 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
4800 """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
4801
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
4802 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
4803
15851
05ccad068313 phase: use standard syntax for command line flags
Martin Geisler <mg@aragost.com>
parents: 15850
diff changeset
4804 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
4805 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
4806
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
4807 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
4808 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
4809
b03388ffeb31 phase: fix up help string
Matt Mackall <mpm@selenic.com>
parents: 15831
diff changeset
4810 public < draft < secret
15906
aad565319fa3 phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 15877
diff changeset
4811
20633
2d183dd54384 phase: say "Returns 0" instead of "Return 0" like other command help
Yuya Nishihara <yuya@tcha.org>
parents: 20594
diff changeset
4812 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
4813 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
4814 """
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
4815 # 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
4816 targetphase = None
15853
fbb68b382040 commands: no need to rename merge and phases on import
Martin Geisler <mg@aragost.com>
parents: 15852
diff changeset
4817 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
4818 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
4819 if targetphase is not None:
15833
3cf2bb3a9fcc phase: mark messages for i18n
Matt Mackall <mpm@selenic.com>
parents: 15832
diff changeset
4820 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
4821 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
4822
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
4823 # 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
4824 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
4825 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
4826 if not revs:
15958
0d2ac0299020 commands: drop exclamation mark in abort message
Idan Kamara <idankk86@gmail.com>
parents: 15957
diff changeset
4827 raise util.Abort(_('no revisions specified'))
15831
0ecaf1e72609 phase: drop reference to working directory phase
Matt Mackall <mpm@selenic.com>
parents: 15830
diff changeset
4828
16024
7c967c4a6144 phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 16023
diff changeset
4829 revs = scmutil.revrange(repo, revs)
7c967c4a6144 phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 16023
diff changeset
4830
15830
8ed112ed774a phases: add a phases command to display and manipulate phases
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 15829
diff changeset
4831 lock = None
15906
aad565319fa3 phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 15877
diff changeset
4832 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
4833 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
4834 # display
16024
7c967c4a6144 phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 16023
diff changeset
4835 for r in revs:
7c967c4a6144 phase: accept old style revision specification
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 16023
diff changeset
4836 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
4837 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
4838 else:
22050
56ccd95b49c6 phase: wrap `hg phases` phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22039
diff changeset
4839 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
4840 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
4841 try:
22050
56ccd95b49c6 phase: wrap `hg phases` phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22039
diff changeset
4842 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
4843 # set phase
16659
58edd786e96f phase: make if abort on nullid for the good reason
Patrick Mezard <patrick@mezard.eu>
parents: 16657
diff changeset
4844 if not revs:
17299
e51d4aedace9 check-code: indent 4 spaces in py files
Mads Kiilerich <mads@kiilerich.com>
parents: 17292
diff changeset
4845 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
4846 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
4847 # 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
4848 # 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
4849 unfi = repo.unfiltered()
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
4850 getphase = unfi._phasecache.phase
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
4851 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
4852 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
4853 if opts['force']:
22070
c1ca47204590 phase: add a transaction argument to retractboundary
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22069
diff changeset
4854 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
4855 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
4856 finally:
22050
56ccd95b49c6 phase: wrap `hg phases` phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22039
diff changeset
4857 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
4858 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
4859 lock.release()
22892
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
4860 getphase = unfi._phasecache.phase
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
4861 newdata = [getphase(unfi, r) for r in unfi]
40f46fd7c50e phases: change phase command change detection
Durham Goode <durham@fb.com>
parents: 22837
diff changeset
4862 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
4863 cl = unfi.changelog
16715
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4864 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
4865 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
4866 if rejected:
20093
1dee888b22f7 phase: better error message when --force is needed
Martin Geisler <martin@geisler.net>
parents: 19997
diff changeset
4867 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
4868 'phase, use --force\n') % len(rejected))
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4869 ret = 1
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4870 if changes:
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4871 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
4872 if ret:
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4873 ui.status(msg)
15906
aad565319fa3 phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 15877
diff changeset
4874 else:
16715
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4875 ui.note(msg)
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4876 else:
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4877 ui.warn(_('no phases changed\n'))
1e24da6fcd67 phase: remove useless test, olddata is never None
Patrick Mezard <patrick@mezard.eu>
parents: 16713
diff changeset
4878 ret = 1
15968
bf87b6b95ce5 phase: alway return a value
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 15959
diff changeset
4879 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
4880
5224
20817af258d8 pull -u: if "url#rev" was given, update to rev
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 5222
diff changeset
4881 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
4882 if modheads == 0:
16107
a3dcc59054ca pull: backout change to return code
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
4883 return
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
4884 if optupdate:
19523
f37b5a17e6a0 bookmarks: pull --update updates to active bookmark if it moved (issue4007)
Kevin Bullock <kbullock@ringworld.org>
parents: 19496
diff changeset
4885 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
4886 try:
16019
eb85d5f89fef bookmarks: move current bookmark on update -u and bare pull -u (issue3222)
Matt Mackall <mpm@selenic.com>
parents: 16010
diff changeset
4887 ret = hg.update(repo, checkout)
14485
610873cf064a Make pull -u behave like pull && update
Brendan Cully <brendan@kublai.com>
parents: 14466
diff changeset
4888 except util.Abort, inst:
16230
d4d35fd0889d update: don't translate the abort message twice
Javi Merino <cibervicho@gmail.com>
parents: 16219
diff changeset
4889 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
4890 if inst.hint:
a9abdb168425 pull: for pull --update with failed update, print hint if any
Siddharth Agarwal <sid0@fb.com>
parents: 19757
diff changeset
4891 ui.warn(_("(%s)\n") % inst.hint)
14485
610873cf064a Make pull -u behave like pull && update
Brendan Cully <brendan@kublai.com>
parents: 14466
diff changeset
4892 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
4893 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
4894 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
4895 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
4896 return ret
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
4897 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
4898 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
4899 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
4900 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
4901 elif currentbranchheads > 1:
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16660
diff changeset
4902 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
4903 "merge)\n"))
2019
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
4904 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
4905 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
4906 else:
ced2d3620f95 add merge command. means same thing as "update -m".
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1996
diff changeset
4907 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
4908
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4909 @command('^pull',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4910 [('u', 'update', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4911 _('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
4912 ('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
4913 ('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
4914 ('B', 'bookmark', [], _("bookmark to pull"), _('BOOKMARK')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4915 ('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
4916 _('BRANCH')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4917 ] + remoteopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4918 _('[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]'))
404
a1ecef497721 [PATCH] Unintuive use
mpm@selenic.com
parents: 403
diff changeset
4919 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
4920 """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
4921
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4922 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
4923
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
4924 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
4925 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
4926 -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
4927 project in the working directory.
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
4928
11193
687c7d395f20 Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents: 11185
diff changeset
4929 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
4930 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
4931 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
4932 -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
4933
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
4934 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
4935 See :hg:`help urls` for more information.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
4936
16107
a3dcc59054ca pull: backout change to return code
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
4937 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
4938 """
10379
a78bfaf988e1 add -b/--branch option to clone, bundle, incoming, outgoing, pull, push
Sune Foldager <cryo@cyanite.org>
parents: 10376
diff changeset
4939 source, branches = hg.parseurl(ui.expandpath(source), opts.get('branch'))
14556
517e1d88bf7e hg: change various repository() users to use peer() where appropriate
Matt Mackall <mpm@selenic.com>
parents: 14553
diff changeset
4940 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
4941 try:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4942 ui.status(_('pulling from %s\n') % util.hidepassword(source))
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4943 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
4944 opts.get('rev'))
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4945
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4946 remotebookmarks = other.listkeys('bookmarks')
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4947
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4948 if opts.get('bookmark'):
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4949 if not revs:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4950 revs = []
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4951 for b in opts['bookmark']:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4952 if b not in remotebookmarks:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4953 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
4954 revs.append(remotebookmarks[b])
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4955
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4956 if revs:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4957 try:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4958 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
4959 except error.CapabilityError:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4960 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
4961 "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
4962 raise util.Abort(err)
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4963
22694
21d5416b8a8a commands: directly use exchange.pull
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22677
diff changeset
4964 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
4965 force=opts.get('force'),
21d5416b8a8a commands: directly use exchange.pull
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22677
diff changeset
4966 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
4967 if checkout:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4968 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
4969 repo._subtoppath = source
5259
65dc707606ed Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents: 5248
diff changeset
4970 try:
20576
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4971 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
4972
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4973 finally:
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4974 del repo._subtoppath
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4975
12852
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
4976 finally:
20576
7f865a94691e pull: close peer repo on completion (issue2491) (issue2797)
Piotr Klecha <pklecha@forcom.com.pl>
parents: 20293
diff changeset
4977 other.close()
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
4978 return ret
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
4979
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4980 @command('^push',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4981 [('f', 'force', None, _('force push')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4982 ('r', 'rev', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4983 _('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
4984 _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4985 ('B', 'bookmark', [], _("bookmark to push"), _('BOOKMARK')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4986 ('b', 'branch', [],
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4987 _('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
4988 ('', '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
4989 ] + remoteopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
4990 _('[-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
4991 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
4992 """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
4993
11217
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
4994 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
4995 destination.
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
4996
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
4997 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
4998 in the destination repository from the current one.
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
4999
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5000 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
5001 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
5002 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
5003 before pushing.
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5004
11219
39a7f69a0a9a commands: document --new-branch flag for push
Martin Geisler <mg@aragost.com>
parents: 11218
diff changeset
5005 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
5006 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
5007 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
5008
19935
4f53de036af8 push: add more detailed explanation about "--force" to online help document
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19919
diff changeset
5009 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
5010
19941
2bf99bc5077a help: minor tweak to push help
Matt Mackall <mpm@selenic.com>
parents: 19935
diff changeset
5011 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
5012 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
5013 almost always cause confusion for collaborators.
11217
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5014
1b8aa9ffa7dc commands: updates to push docstring.
Faheem Mitha <faheem@email.unc.edu>
parents: 11103
diff changeset
5015 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
5016 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
5017
17190
d99d0b559084 bookmarks: document behavior of -B/--bookmark in help
Augie Fackler <raf@durin42.com>
parents: 17188
diff changeset
5018 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
5019 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
5020 repository.
d99d0b559084 bookmarks: document behavior of -B/--bookmark in help
Augie Fackler <raf@durin42.com>
parents: 17188
diff changeset
5021
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
5022 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
5023 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
5024
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5025 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
5026 """
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5027
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5028 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
5029 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
5030 for b in opts['bookmark']:
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5031 # 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
5032 if b in repo._bookmarks:
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5033 opts.setdefault('rev', []).append(b)
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5034 else:
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5035 # 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
5036 # 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
5037 opts.setdefault('rev', []).append("null")
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5038
10365
d757bc0c7865 interpret repo#name url syntax as branch instead of revision
Sune Foldager <cryo@cyanite.org>
parents: 10364
diff changeset
5039 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
5040 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
5041 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
5042 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
5043 try:
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5044 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
5045 except error.RepoError:
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5046 if dest == "default-push":
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5047 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
5048 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
5049 else:
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5050 raise
c4f45ce85351 push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents: 20544
diff changeset
5051
4478
b2b55acbacdd Add support for url#id syntax
Matt Mackall <mpm@selenic.com>
parents: 4474
diff changeset
5052 if revs:
17168
e058f4eec69c push: accept revset argument for --rev
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 17149
diff changeset
5053 revs = [repo.lookup(r) for r in scmutil.revrange(repo, revs)]
8815
e87b0fc4750b subrepo: basic push support
Matt Mackall <mpm@selenic.com>
parents: 8812
diff changeset
5054
12852
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5055 repo._subtoppath = dest
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5056 try:
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5057 # 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
5058 c = repo['']
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5059 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
5060 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
5061 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
5062 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
5063 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
5064 finally:
5dbff89cf107 subrepo: propagate non-default pull/push path to relative subrepos (issue1852)
Mads Kiilerich <mads@kiilerich.com>
parents: 12831
diff changeset
5065 del repo._subtoppath
22617
1625770c2ce1 push: use `exchange.push` in `commands.push`
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22594
diff changeset
5066 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
5067 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
5068 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
5069
1625770c2ce1 push: use `exchange.push` in `commands.push`
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22594
diff changeset
5070 result = not pushop.cgresult
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5071
22625
62ab9ca90b36 push: perform bookmark export in the push function
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22623
diff changeset
5072 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
5073 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
5074 result = 2
22625
62ab9ca90b36 push: perform bookmark export in the push function
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22623
diff changeset
5075 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
5076 result = 2
13368
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5077
d4ab9486e514 bookmarks: move push/pull command features to core
Matt Mackall <mpm@selenic.com>
parents: 13367
diff changeset
5078 return result
319
9ab17e83bce3 stopgap hg push support
mpm@selenic.com
parents: 317
diff changeset
5079
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5080 @command('recover', [])
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
5081 def recover(ui, repo):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5082 """roll back an interrupted transaction
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5083
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5084 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
5085
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
5086 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
5087 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
5088 suggests it.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5089
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5090 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
5091 """
1516
0b1b029b4de3 Automatically run "verify" whenever we run "recover"
Matt Mackall <mpm@selenic.com>
parents: 1514
diff changeset
5092 if repo.recover():
2778
fdc232d8a193 Move repo.verify
Matt Mackall <mpm@selenic.com>
parents: 2776
diff changeset
5093 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
5094 return 1
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
5095
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5096 @command('^remove|rm',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5097 [('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
5098 ('f', 'force', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5099 _('remove (and delete) file even if added or modified')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5100 ] + walkopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5101 _('[OPTION]... FILE...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5102 inferrepo=True)
2179
520dd3d28e9b add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2175
diff changeset
5103 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
5104 """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
5105
15114
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5106 Schedule the indicated files for removal from the current branch.
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5107
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5108 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
5109 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
5110 files, see :hg:`forget`.
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5111
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5112 .. container:: verbose
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5113
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5114 -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
5115 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
5116 can be used to remove files from the next revision without
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5117 deleting them from the working directory.
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5118
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5119 The following table details the behavior of remove for different
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5120 file states (columns) and option combinations (rows). The file
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5121 states are Added [A], Clean [C], Modified [M] and Missing [!]
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5122 (as reported by :hg:`status`). The actions are Warn, Remove
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5123 (from branch) and Delete (from disk):
15037
df47381b41d6 minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents: 15023
diff changeset
5124
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
5125 ========= == == == ==
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
5126 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
5127 ========= == == == ==
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
5128 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
5129 -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
5130 -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
5131 -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
5132 ========= == == == ==
2309
b2f37c7026ca remove: rewrite to be ~400x faster, bit more friendly
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2301
diff changeset
5133
15114
d1bbabf7d35d remove: simplify help
Matt Mackall <mpm@selenic.com>
parents: 15113
diff changeset
5134 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
5135 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
5136
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5137 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
5138 """
6346
8e3b651382f5 improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6336
diff changeset
5139
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5140 ret = 0
6346
8e3b651382f5 improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6336
diff changeset
5141 after, force = opts.get('after'), opts.get('force')
8e3b651382f5 improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6336
diff changeset
5142 if not pats and not after:
2179
520dd3d28e9b add --after option to remove command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2175
diff changeset
5143 raise util.Abort(_('no files specified'))
6346
8e3b651382f5 improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6336
diff changeset
5144
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
5145 m = scmutil.match(repo[None], pats, opts)
6761
cb981fc955fb remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents: 6760
diff changeset
5146 s = repo.status(match=m, clean=True)
cb981fc955fb remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents: 6760
diff changeset
5147 modified, added, deleted, clean = s[0], s[1], s[3], s[6]
cb981fc955fb remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents: 6760
diff changeset
5148
17848
66f0c78350ab remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents: 17837
diff changeset
5149 # warn about failure to delete explicit files/dirs
66f0c78350ab remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents: 17837
diff changeset
5150 wctx = repo[None]
8533
6062c6362b2e remove: warn if unversionned files are specified (issue1454)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 8464
diff changeset
5151 for f in m.files():
17848
66f0c78350ab remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents: 17837
diff changeset
5152 if f in repo.dirstate or f in wctx.dirs():
66f0c78350ab remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents: 17837
diff changeset
5153 continue
66f0c78350ab remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents: 17837
diff changeset
5154 if os.path.exists(m.rel(f)):
66f0c78350ab remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents: 17837
diff changeset
5155 if os.path.isdir(m.rel(f)):
66f0c78350ab remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents: 17837
diff changeset
5156 ui.warn(_('not removing %s: no tracked files\n') % m.rel(f))
66f0c78350ab remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents: 17837
diff changeset
5157 else:
14604
b1a534335548 forget, remove: don't note on nonexistent file twice
Idan Kamara <idankk86@gmail.com>
parents: 14564
diff changeset
5158 ui.warn(_('not removing %s: file is untracked\n') % m.rel(f))
17848
66f0c78350ab remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents: 17837
diff changeset
5159 # missing files will generate a warning elsewhere
66f0c78350ab remove: don't return error on directories with tracked files
Matt Mackall <mpm@selenic.com>
parents: 17837
diff changeset
5160 ret = 1
8533
6062c6362b2e remove: warn if unversionned files are specified (issue1454)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 8464
diff changeset
5161
6761
cb981fc955fb remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents: 6760
diff changeset
5162 if force:
14450
d1a1578c5f78 commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents: 14435
diff changeset
5163 list = modified + deleted + clean + added
6761
cb981fc955fb remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents: 6760
diff changeset
5164 elif after:
14450
d1a1578c5f78 commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents: 14435
diff changeset
5165 list = deleted
12129
07ac2a560fce remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents: 12128
diff changeset
5166 for f in modified + added + clean:
18053
0c2f0048125d rm: drop misleading 'use -f' hint for the rm --after 'not removing' warning
Mads Kiilerich <madski@unity3d.com>
parents: 18039
diff changeset
5167 ui.warn(_('not removing %s: file still exists\n') % m.rel(f))
12129
07ac2a560fce remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents: 12128
diff changeset
5168 ret = 1
6761
cb981fc955fb remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents: 6760
diff changeset
5169 else:
14450
d1a1578c5f78 commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents: 14435
diff changeset
5170 list = deleted + clean
12129
07ac2a560fce remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents: 12128
diff changeset
5171 for f in modified:
07ac2a560fce remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents: 12128
diff changeset
5172 ui.warn(_('not removing %s: file is modified (use -f'
07ac2a560fce remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents: 12128
diff changeset
5173 ' to force removal)\n') % m.rel(f))
07ac2a560fce remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents: 12128
diff changeset
5174 ret = 1
07ac2a560fce remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents: 12128
diff changeset
5175 for f in added:
15115
c84b3f42d5ae remove: suggest forget to undo adds
Matt Mackall <mpm@selenic.com>
parents: 15114
diff changeset
5176 ui.warn(_('not removing %s: file has been marked for add'
c84b3f42d5ae remove: suggest forget to undo adds
Matt Mackall <mpm@selenic.com>
parents: 15114
diff changeset
5177 ' (use forget to undo)\n') % m.rel(f))
12129
07ac2a560fce remove: properly set return code when warnings are issued
Brodie Rao <brodie@bitheap.org>
parents: 12128
diff changeset
5178 ret = 1
6761
cb981fc955fb remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents: 6760
diff changeset
5179
14450
d1a1578c5f78 commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents: 14435
diff changeset
5180 for f in sorted(list):
6761
cb981fc955fb remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents: 6760
diff changeset
5181 if ui.verbose or not m.exact(f):
cb981fc955fb remove: work directly off status
Matt Mackall <mpm@selenic.com>
parents: 6760
diff changeset
5182 ui.status(_('removing %s\n') % m.rel(f))
6346
8e3b651382f5 improved semantics for remove (issue438)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6336
diff changeset
5183
14450
d1a1578c5f78 commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents: 14435
diff changeset
5184 wlock = repo.wlock()
d1a1578c5f78 commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents: 14435
diff changeset
5185 try:
d1a1578c5f78 commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents: 14435
diff changeset
5186 if not after:
d1a1578c5f78 commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents: 14435
diff changeset
5187 for f in list:
d1a1578c5f78 commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents: 14435
diff changeset
5188 if f in added:
d1a1578c5f78 commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents: 14435
diff changeset
5189 continue # we never unlink added files on remove
18143
242d2f4ec01c util: fold ENOENT check into unlinkpath, controlled by new ignoremissing flag
Mads Kiilerich <madski@unity3d.com>
parents: 18133
diff changeset
5190 util.unlinkpath(repo.wjoin(f), ignoremissing=True)
14450
d1a1578c5f78 commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents: 14435
diff changeset
5191 repo[None].forget(list)
d1a1578c5f78 commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents: 14435
diff changeset
5192 finally:
d1a1578c5f78 commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents: 14435
diff changeset
5193 wlock.release()
d1a1578c5f78 commands.remove: don't use workingctx.remove(list, unlink=True)
Adrian Buehlmann <adrian@cadifra.com>
parents: 14435
diff changeset
5194
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5195 return ret
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
5196
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5197 @command('rename|move|mv',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5198 [('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
5199 ('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
5200 ] + walkopts + dryrunopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5201 _('[OPTION]... SOURCE... DEST'))
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
5202 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
5203 """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
5204
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
5205 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
5206 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
5207 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
5208
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5209 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
5210 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
5211 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
5212
7807
bd8f44638847 help: miscellaneous language fixes
timeless <timeless@gmail.com>
parents: 7765
diff changeset
5213 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
5214 before that, see :hg:`revert`.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5215
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5216 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
5217 """
4914
9a2a73ea6135 repo locks: use True/False
Matt Mackall <mpm@selenic.com>
parents: 4906
diff changeset
5218 wlock = repo.wlock(False)
4915
97b734fb9c6f Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents: 4914
diff changeset
5219 try:
5610
2493a478f395 copy: handle rename internally
Matt Mackall <mpm@selenic.com>
parents: 5589
diff changeset
5220 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
5221 finally:
8109
496ae1ea4698 switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents: 8088
diff changeset
5222 wlock.release()
1253
a45e717c61a8 Add rename/mv command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1250
diff changeset
5223
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5224 @command('resolve',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5225 [('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
5226 ('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
5227 ('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
5228 ('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
5229 ('n', 'no-status', None, _('hide status prefix'))]
14852
cac04f2f475b commands: use mergetoolopts when a command supports --tool
Martin Geisler <mg@aragost.com>
parents: 14840
diff changeset
5230 + mergetoolopts + walkopts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5231 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5232 inferrepo=True)
6518
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5233 def resolve(ui, repo, *pats, **opts):
11836
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5234 """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
5235
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5236 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
5237 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
5238 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
5239 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
5240 :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
5241 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
5242 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
5243
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5244 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
5245
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12803
diff changeset
5246 - :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
5247 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
5248 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
5249 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
5250 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
5251 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
5252 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
5253
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5254 - :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
5255 (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
5256 to mark all unresolved files.
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5257
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5258 - :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
5259 default is to mark all resolved files.
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5260
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5261 - :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
5262 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
5263
53fdc0989047 resolve: updated help documentation for improved clarity
Mark Edgington <edgimar@gmail.com>
parents: 11777
diff changeset
5264 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
5265 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
5266 commit after a conflicting merge.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5267
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5268 Returns 0 on success, 1 if any files fail a resolve attempt.
6518
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5269 """
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5270
9646
5b001f534452 commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents: 9645
diff changeset
5271 all, mark, unmark, show, nostatus = \
5b001f534452 commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents: 9645
diff changeset
5272 [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
5273
5a14a8f3b909 resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents: 7449
diff changeset
5274 if (show and (mark or unmark)) or (mark and unmark):
6518
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5275 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
5276 if pats and all:
5a14a8f3b909 resolve: require -a switch to resolve all files
Matt Mackall <mpm@selenic.com>
parents: 7449
diff changeset
5277 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
5278 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
5279 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
5280 hint=('use --all to remerge all files'))
6518
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5281
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5282 wlock = repo.wlock()
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5283 try:
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5284 ms = mergemod.mergestate(repo)
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5285
23024
ec36969497de resolve: run happily after conflict-free merge
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22989
diff changeset
5286 if not (ms.active() or repo.dirstate.p2() != nullid) and not show:
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5287 raise util.Abort(
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5288 _('resolve command not applicable when not merging'))
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5289
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5290 m = scmutil.match(repo[None], pats, opts)
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5291 ret = 0
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5292 didwork = False
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5293
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5294 for f in ms:
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5295 if not m(f):
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5296 continue
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5297
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5298 didwork = True
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5299
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5300 if show:
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5301 if nostatus:
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5302 ui.write("%s\n" % f)
9646
5b001f534452 commands: adding --no-status to resolve to match status
timeless <timeless@gmail.com>
parents: 9645
diff changeset
5303 else:
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5304 ui.write("%s %s\n" % (ms[f].upper(), f),
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5305 label='resolve.' +
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5306 {'u': 'unresolved', 'r': 'resolved'}[ms[f]])
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5307 elif mark:
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5308 ms.mark(f, "r")
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5309 elif unmark:
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5310 ms.mark(f, "u")
6518
92ccccb55ba3 resolve: new command
Matt Mackall <mpm@selenic.com>
parents: 6509
diff changeset
5311 else:
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5312 wctx = repo[None]
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5313
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5314 # backup pre-resolve (merge uses .orig for its own purposes)
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5315 a = repo.wjoin(f)
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5316 util.copyfile(a, a + ".resolve")
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5317
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5318 try:
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5319 # resolve file
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5320 ui.setconfig('ui', 'forcemerge', opts.get('tool', ''),
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5321 'resolve')
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5322 if ms.resolve(f, wctx):
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5323 ret = 1
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5324 finally:
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5325 ui.setconfig('ui', 'forcemerge', '', 'resolve')
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5326 ms.commit()
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5327
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5328 # replace filemerge's .orig file with our resolve file
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5329 util.rename(a + ".resolve", a + ".orig")
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5330
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5331 ms.commit()
21720
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5332
db2392a4effc merge with stable
Matt Mackall <mpm@selenic.com>
parents: 21712 21709
diff changeset
5333 if not didwork and pats:
21721
6539c4e9c874 resolve: fix grammar of no matching files message
Matt Mackall <mpm@selenic.com>
parents: 21720
diff changeset
5334 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
5335
21709
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5336 finally:
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5337 wlock.release()
14560418856d resolve: keep wlock while resolving
Mads Kiilerich <madski at unity3d.com>
parents: 21571
diff changeset
5338
21266
19d6fec60b81 resolve: print message when no unresolved files remain (issue4214)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21265
diff changeset
5339 # Nudge users into finishing an unfinished operation. We don't print
19d6fec60b81 resolve: print message when no unresolved files remain (issue4214)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21265
diff changeset
5340 # this with the list/show operation because we want list/show to remain
19d6fec60b81 resolve: print message when no unresolved files remain (issue4214)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21265
diff changeset
5341 # machine readable.
19d6fec60b81 resolve: print message when no unresolved files remain (issue4214)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21265
diff changeset
5342 if not list(ms.unresolved()) and not show:
21947
b081decd9062 resolve: add parenthesis around "no more unresolved files" message
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21944
diff changeset
5343 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
5344
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5345 return ret
7847
30cb79d84352 resolve: keep .orig files
Matt Mackall <mpm@selenic.com>
parents: 7829
diff changeset
5346
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5347 @command('revert',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5348 [('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
5349 ('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
5350 ('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
5351 ('C', 'no-backup', None, _('do not save backup copies of files')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5352 ] + walkopts + dryrunopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5353 _('[OPTION]... [-r REV] [NAME]...'))
1472
3c909a747d7f make revert use standard matcher
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1470
diff changeset
5354 def revert(ui, repo, *pats, **opts):
14540
944d9088da96 revert: rewrite help summary
Matt Mackall <mpm@selenic.com>
parents: 14532
diff changeset
5355 """restore files to their checkout state
5574
d4ec6d61b3ee imported patch rev-help
Matt Mackall <mpm@selenic.com>
parents: 5573
diff changeset
5356
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
5357 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
5358
14541
07ee46a2ece3 revert: simplify usage note
Matt Mackall <mpm@selenic.com>
parents: 14540
diff changeset
5359 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
5360 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
5361 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
5362
14544
586f33cc3cb9 revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents: 14543
diff changeset
5363 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
5364 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
5365 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
5366 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
5367 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
5368 revision.
1811
6cb548cffdf5 resync commands.py docstrings with hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1804
diff changeset
5369
14544
586f33cc3cb9 revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents: 14543
diff changeset
5370 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
5371 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
5372 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
5373 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
5374 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
5375 related method.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5376
5574
d4ec6d61b3ee imported patch rev-help
Matt Mackall <mpm@selenic.com>
parents: 5573
diff changeset
5377 Modified files are saved with a .orig suffix before reverting.
d4ec6d61b3ee imported patch rev-help
Matt Mackall <mpm@selenic.com>
parents: 5573
diff changeset
5378 To disable these backups, use --no-backup.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5379
14544
586f33cc3cb9 revert: rearrange the date help
Matt Mackall <mpm@selenic.com>
parents: 14543
diff changeset
5380 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
5381
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5382 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5383 """
2982
890e285c52a1 revert: require --all to revert all files.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2963
diff changeset
5384
11941
4532c44bb62d revert: use opts.get
Xavier Snelgrove <xs@wxs.ca>
parents: 11886
diff changeset
5385 if opts.get("date"):
4532c44bb62d revert: use opts.get
Xavier Snelgrove <xs@wxs.ca>
parents: 11886
diff changeset
5386 if opts.get("rev"):
3814
120be84f33de Add --date support to update and revert
Matt Mackall <mpm@selenic.com>
parents: 3813
diff changeset
5387 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
5388 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
5389
13022
3fd4e4e81382 revert: improve merge advice and favor its error over all
timeless <timeless@gmail.com>
parents: 12968
diff changeset
5390 parent, p2 = repo.dirstate.parents()
14903
a934b9249574 revert: restore check for uncommitted merge (issue2915) (BC)
Matt Mackall <mpm@selenic.com>
parents: 14849
diff changeset
5391 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
5392 # 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
5393 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
5394 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
5395
14726
e0039716f3ea revert: mention update in hint of abort when reverting to non-parent
Adrian Buehlmann <adrian@cadifra.com>
parents: 14725
diff changeset
5396 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
5397
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
5398 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
5399 msg = _("no files or directories specified")
4fcde634f5e0 revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents: 14713
diff changeset
5400 if p2 != nullid:
4fcde634f5e0 revert: be more helpful on uncommitted merges
Adrian Buehlmann <adrian@cadifra.com>
parents: 14713
diff changeset
5401 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
5402 " 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
5403 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
5404 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
5405 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
5406 if node != parent:
6ba51c81ff75 revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents: 14742
diff changeset
5407 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
5408 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
5409 " 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
5410 else:
e0039716f3ea revert: mention update in hint of abort when reverting to non-parent
Adrian Buehlmann <adrian@cadifra.com>
parents: 14725
diff changeset
5411 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
5412 " 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
5413 elif dirty:
6ba51c81ff75 revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents: 14742
diff changeset
5414 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
5415 else:
6ba51c81ff75 revert: improve hints on abort when reverting to parent without --all
Adrian Buehlmann <adrian@cadifra.com>
parents: 14742
diff changeset
5416 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
5417 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
5418
16304
a740fa28d718 revert: move bulk of revert command from commands to cmdutil
Angel Ezquerra <angel.ezquerra@gmail.com>
parents: 16274
diff changeset
5419 return cmdutil.revert(ui, repo, ctx, (parent, p2), *pats, **opts)
588
0c3bae18403b [PATCH] hg revert
mpm@selenic.com
parents: 582
diff changeset
5420
15183
59e8bc22506e rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents: 15179
diff changeset
5421 @command('rollback', dryrunopts +
59e8bc22506e rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents: 15179
diff changeset
5422 [('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
5423 def rollback(ui, repo, **opts):
19409
ea4342d0e6fe rollback: mark as deprecated
Matt Mackall <mpm@selenic.com>
parents: 19403
diff changeset
5424 """roll back the last transaction (DANGEROUS) (DEPRECATED)
5575
8788ff630c26 imported patch rollback-help
Matt Mackall <mpm@selenic.com>
parents: 5574
diff changeset
5425
19421
b2b08be5f556 rollback: add reference to "hg commit --amend"
Martin Geisler <martin@geisler.net>
parents: 19409
diff changeset
5426 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
5427 mistakes in the last commit.
b2b08be5f556 rollback: add reference to "hg commit --amend"
Martin Geisler <martin@geisler.net>
parents: 19409
diff changeset
5428
5575
8788ff630c26 imported patch rollback-help
Matt Mackall <mpm@selenic.com>
parents: 5574
diff changeset
5429 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
5430 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
5431 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
5432 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
5433 the working directory.
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
5434
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
5435 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
5436 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
5437 repository.
b558c9fa39c1 rollback: split off command example paragraph in help
Adrian Buehlmann <adrian@cadifra.com>
parents: 17045
diff changeset
5438
17142
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5439 .. container:: verbose
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5440
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5441 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
5442 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
5443
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5444 - commit
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5445 - import
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5446 - pull
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5447 - 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
5448 - unbundle
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5449
3e66d00b3026 rollback: move examples and --force note in help into verbose section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17141
diff changeset
5450 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
5451 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
5452 override this protection.
15183
59e8bc22506e rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents: 15179
diff changeset
5453
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
5454 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
5455 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
5456 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
5457 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
5458 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
5459 may fail if a rollback is performed.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5460
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5461 Returns 0 on success, 1 if no rollback data is available.
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
5462 """
15183
59e8bc22506e rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents: 15179
diff changeset
5463 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
5464 force=opts.get('force'))
2227
4f072bb06e89 deprecate undo command, replace with rollback command.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2212
diff changeset
5465
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5466 @command('root', [])
468
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
5467 def root(ui, repo):
8026
683d8ebcf434 expand "dir" to "directory" in help texts
Martin Geisler <mg@lazybytes.net>
parents: 8021
diff changeset
5468 """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
5469
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5470 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
5471
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5472 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5473 """
468
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
5474 ui.write(repo.root + "\n")
157675add351 [PATCH] add "root" command
mpm@selenic.com
parents: 467
diff changeset
5475
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5476 @command('^serve',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5477 [('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
5478 _('FILE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5479 ('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
5480 ('', '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
5481 ('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
5482 # 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
5483 ('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
5484 ('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
5485 _('ADDR')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5486 ('', '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
5487 _('PREFIX')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5488 ('n', 'name', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5489 _('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
5490 ('', 'web-conf', '',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5491 _('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
5492 ('', '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
5493 _('FILE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5494 ('', '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
5495 ('', '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
5496 ('', 'cmdserver', '', _('for remote clients'), _('MODE')),
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5497 ('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
5498 ('', 'style', '', _('template style to use'), _('STYLE')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5499 ('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
5500 ('', 'certificate', '', _('SSL certificate file'), _('FILE'))],
21775
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
5501 _('[OPTION]...'),
5403245edb3a commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21768
diff changeset
5502 optionalrepo=True)
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
5503 def serve(ui, repo, **opts):
10889
e25c450c351e commands: improve some command summaries
Matt Mackall <mpm@selenic.com>
parents: 10882
diff changeset
5504 """start stand-alone webserver
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5505
11102
275198bc904a commands: explain that "hg serve" is mostly for ad-hoc sharing
Martin Geisler <mg@lazybytes.net>
parents: 11089
diff changeset
5506 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
5507 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
5508 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
5509 longer periods of time.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5510
11103
d29bd98ebff6 commands: explain that "hg serve" does not do authentication
Martin Geisler <mg@lazybytes.net>
parents: 11102
diff changeset
5511 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
5512 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
5513 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
5514 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
5515 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
5516
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5517 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
5518 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
5519 files.
10629
d3f27d15c9cb serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents: 10617
diff changeset
5520
d3f27d15c9cb serve: allow --port=0 to specify "server chooses the port number"
Bryan O'Sullivan <bos@serpentine.com>
parents: 10617
diff changeset
5521 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
5522 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
5523 number it uses.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5524
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5525 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5526 """
624
876333a295ff Add an sshrepository class and hg serve --stdio
Matt Mackall <mpm@selenic.com>
parents: 618
diff changeset
5527
14647
2e9f379de0ac serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents: 14645
diff changeset
5528 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
5529 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
5530
21818
448714b79d9a serve: inline checkrepo() that is used only when --stdio is specified
Yuya Nishihara <yuya@tcha.org>
parents: 21817
diff changeset
5531 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
5532 if repo is None:
16935
f635c476fa3f serve: lowercase "no repo here" message
Martin Geisler <mg@aragost.com>
parents: 16934
diff changeset
5533 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
5534 " (.hg not found)"))
2396
8d44649df03b refactor ssh server.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2392
diff changeset
5535 s = sshserver.sshserver(ui, repo)
8d44649df03b refactor ssh server.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2392
diff changeset
5536 s.serve_forever()
2363
fa4c11751367 Give a response to unknown SSH commands
Matt Mackall <mpm@selenic.com>
parents: 2362
diff changeset
5537
14647
2e9f379de0ac serve: add --cmdserver option to communicate with hg over a pipe
Idan Kamara <idankk86@gmail.com>
parents: 14645
diff changeset
5538 if opts["cmdserver"]:
22989
dc8803ce3dfe cmdserver: switch service objects by mode
Yuya Nishihara <yuya@tcha.org>
parents: 22988
diff changeset
5539 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
5540 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
5541
10635
27027bee318e serve: fix port config
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10632
diff changeset
5542 # 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
5543 if opts.get('port'):
12076
49463314c24f mail/hgweb: support service names for ports (issue2350)
Brodie Rao <brodie@bitheap.org>
parents: 12070
diff changeset
5544 opts['port'] = util.getport(opts.get('port'))
10635
27027bee318e serve: fix port config
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10632
diff changeset
5545
8190
9b8ac5fb7760 ui: kill most users of parentui name and arg, replace with .copy()
Matt Mackall <mpm@selenic.com>
parents: 8189
diff changeset
5546 baseui = repo and repo.baseui or ui
5835
bd34f0ac3cb0 adding "prefix" option to "hg serve" (command line and [web] section)
Michele Cella <michele.cella@gmail.com>
parents: 5811
diff changeset
5547 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
5548 " accesslog errorlog certificate encoding")
987
bfe12654764d hgweb: change startup argument processing
mpm@selenic.com
parents: 981
diff changeset
5549 for o in optlist.split():
10630
9947e6b008bb serve: fix options recording, trailing whitespace
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 10629
diff changeset
5550 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
5551 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
5552 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
5553 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
5554 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
5555 repo.ui.setconfig("web", o, val, 'serve')
987
bfe12654764d hgweb: change startup argument processing
mpm@selenic.com
parents: 981
diff changeset
5556
11003
aca9a7cf2c9a serve: webdir_conf -> webconf
Matt Mackall <mpm@selenic.com>
parents: 10993
diff changeset
5557 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
5558 if not o:
7bb10d3dbcd6 hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents: 11003
diff changeset
5559 if not repo:
16935
f635c476fa3f serve: lowercase "no repo here" message
Martin Geisler <mg@aragost.com>
parents: 16934
diff changeset
5560 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
5561 " 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
5562 o = repo
11004
7bb10d3dbcd6 hgweb: unify hgweb calls in serve
Matt Mackall <mpm@selenic.com>
parents: 11003
diff changeset
5563
18827
6793ae6e36dc serve: pass the prepared baseui to hgweb
Simon Heimberg <simohe@besonet.ch>
parents: 18799
diff changeset
5564 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
5565 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
5566 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
5567
19919
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5568 class httpservice(object):
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5569 def __init__(self, ui, app, opts):
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5570 self.ui = ui
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5571 self.app = app
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5572 self.opts = opts
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5573
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5574 def init(self):
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5575 util.setsignalhandler()
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5576 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
5577
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5578 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
5579 return
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5580
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5581 if self.httpd.prefix:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5582 prefix = self.httpd.prefix.strip('/') + '/'
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5583 else:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5584 prefix = ''
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5585
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5586 port = ':%d' % self.httpd.port
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5587 if port == ':80':
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5588 port = ''
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5589
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5590 bindaddr = self.httpd.addr
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5591 if bindaddr == '0.0.0.0':
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5592 bindaddr = '*'
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5593 elif ':' in bindaddr: # IPv6
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5594 bindaddr = '[%s]' % bindaddr
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5595
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5596 fqaddr = self.httpd.fqaddr
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5597 if ':' in fqaddr:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5598 fqaddr = '[%s]' % fqaddr
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5599 if self.opts['port']:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5600 write = self.ui.status
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5601 else:
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5602 write = self.ui.write
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5603 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
5604 (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
5605 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
5606
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5607 def run(self):
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5608 self.httpd.serve_forever()
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5609
e48c70451afc commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com>
parents: 19893
diff changeset
5610
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5611 @command('^status|st',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5612 [('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
5613 ('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
5614 ('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
5615 ('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
5616 ('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
5617 ('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
5618 ('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
5619 ('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
5620 ('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
5621 ('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
5622 ('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
5623 ('', 'rev', [], _('show difference from revision'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5624 ('', '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
5625 ] + walkopts + subrepoopts + formatteropts,
21778
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5626 _('[OPTION]... [FILE]...'),
f6a6d07b66b3 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21775
diff changeset
5627 inferrepo=True)
731
91ca3afab8e8 Add name matching to status command.
Bryan O'Sullivan <bos@serpentine.com>
parents: 729
diff changeset
5628 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
5629 """show changed files in the working directory
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
5630
6448
cd3d49ffc6f6 Consistently 1 space after full stops in command doc strings
Christian Ebert <blacktrash@gmx.net>
parents: 6442
diff changeset
5631 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
5632 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
5633 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
5634 -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
5635 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
5636 options -mardu are used.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5637
6201
305d4450036a Extend/correct acc40572da5b regarding -qA and ignored files.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6200
diff changeset
5638 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
5639 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
5640
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
5641 .. note::
19997
de16c673455b documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents: 19960
diff changeset
5642
12390
aff4afdcfd2b Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents: 12389
diff changeset
5643 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
5644 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
5645 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
5646 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
5647
3467
2b3b703b3a2b Add --rev option to status
Brendan Cully <brendan@kublai.com>
parents: 3465
diff changeset
5648 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
5649 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
5650 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
5651 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
5652
9157
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5653 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
5654
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5655 M = modified
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5656 A = added
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5657 R = removed
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5658 C = clean
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5659 ! = 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
5660 ? = not tracked
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9142
diff changeset
5661 I = ignored
20660
19e9478c1a22 status: improve explanation of ' ' status
Matt Mackall <mpm@selenic.com>
parents: 20650
diff changeset
5662 = origin of the previous file (with --copies)
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5663
15119
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5664 .. container:: verbose
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5665
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5666 Examples:
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5667
15633
dc5d1394ecd1 status: add missing ":" to help text
Martin Geisler <mg@lazybytes.net>
parents: 15615
diff changeset
5668 - 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
5669 changeset::
15119
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5670
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5671 hg status --rev 9353
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5672
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5673 - show all changes including copies in an existing changeset::
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5674
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5675 hg status --copies --change 9353
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5676
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5677 - 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
5678
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5679 hg status -an0
ac46a9cdf6e6 status: add some help examples
Matt Mackall <mpm@selenic.com>
parents: 15118
diff changeset
5680
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5681 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5682 """
312
09375250eb31 Optimize diff and status in subdirectories
mpm@selenic.com
parents: 310
diff changeset
5683
10014
54cd28258ea7 status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents: 9983
diff changeset
5684 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
5685 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
5686
54cd28258ea7 status: add the --change option to display files changed in a revision
Gilles Moris <gilles.moris@free.fr>
parents: 9983
diff changeset
5687 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
5688 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
5689 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
5690 elif change:
15578
db0e277bdd37 status: support revsets with --change
Patrick Mezard <pmezard@gmail.com>
parents: 15528
diff changeset
5691 node2 = scmutil.revsingle(repo, change, None).node()
13878
a8d13ee0ce68 misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents: 13855
diff changeset
5692 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
5693 else:
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
5694 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
5695
1625
e1bcf7fa983f correct the relative path when walking from a subdir
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1622
diff changeset
5696 cwd = (pats and repo.getcwd()) or ''
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
5697 end = opts.get('print0') and '\0' or '\n'
6276
c93ca83a3354 status: find copies and renames beyond the working directory
Matt Mackall <mpm@selenic.com>
parents: 6262
diff changeset
5698 copy = {}
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5699 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
5700 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
5701 if opts.get('all'):
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5702 show += ui.quiet and (states[:4] + ['clean']) or states
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5703 if not show:
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5704 show = ui.quiet and states[:4] or states[:5]
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5705
14671
35c2cc322ba8 scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents: 14647
diff changeset
5706 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
5707 '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
5708 opts.get('subrepos'))
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5709 changestates = zip(states, 'MAR!?IC', stat)
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5710
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
5711 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
5712 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
5713
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5714 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
5715 fmt = '%s' + end
c8709ff57ff2 status: use condwrite to avoid zero-width format string hack
Matt Mackall <mpm@selenic.com>
parents: 17892
diff changeset
5716 showchar = not opts.get('no_status')
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5717
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5718 for state, char, files in changestates:
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5719 if state in show:
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5720 label = 'status.' + state
6605
bf2bf986ff87 status: refactor status command
Matt Mackall <mpm@selenic.com>
parents: 6603
diff changeset
5721 for f in files:
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5722 fm.startitem()
17910
c8709ff57ff2 status: use condwrite to avoid zero-width format string hack
Matt Mackall <mpm@selenic.com>
parents: 17892
diff changeset
5723 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
5724 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
5725 if f in copy:
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5726 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
5727 label='status.copied')
16136
68007f0557de formatter: convert status command
Matt Mackall <mpm@selenic.com>
parents: 16109
diff changeset
5728 fm.end()
213
d2172916ef6c commands: migrate status and branch
mpm@selenic.com
parents: 212
diff changeset
5729
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5730 @command('^summary|sum',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5731 [('', 'remote', None, _('check for push and pull'))], '[--remote]')
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5732 def summary(ui, repo, **opts):
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5733 """summarize working directory state
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5734
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5735 This generates a brief summary of the working directory state,
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5736 including parents, branch, commit status, and available updates.
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5737
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5738 With the --remote option, this will check the default paths for
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5739 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
5740
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
5741 Returns 0 on success.
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5742 """
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5743
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5744 ctx = repo[None]
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5745 parents = ctx.parents()
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5746 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
5747 marks = []
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5748
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5749 for p in parents:
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5750 # 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
5751 # 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
5752 # i18n: column positioning for "hg summary"
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5753 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
5754 label='log.changeset changeset.%s' % p.phasestr())
10833
d7b601f1e02c commands: retrieve tags from context object
Martin Geisler <mg@lazybytes.net>
parents: 10832
diff changeset
5755 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
5756 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
5757 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
5758 if p.rev() == -1:
d75a309a24b1 summary: add empty repository and no revision checked out hints
Matt Mackall <mpm@selenic.com>
parents: 9617
diff changeset
5759 if not len(repo):
10834
4ab459a6c25c commands: small refactoring in summary
Martin Geisler <mg@lazybytes.net>
parents: 10833
diff changeset
5760 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
5761 else:
10834
4ab459a6c25c commands: small refactoring in summary
Martin Geisler <mg@lazybytes.net>
parents: 10833
diff changeset
5762 ui.write(_(' (no revision checked out)'))
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5763 ui.write('\n')
9618
d75a309a24b1 summary: add empty repository and no revision checked out hints
Matt Mackall <mpm@selenic.com>
parents: 9617
diff changeset
5764 if p.description():
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5765 ui.status(' ' + p.description().splitlines()[0].strip() + '\n',
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5766 label='log.summary')
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5767
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5768 branch = ctx.branch()
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5769 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
5770 # i18n: column positioning for "hg summary"
9873
541218fbad2a summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents: 9857
diff changeset
5771 m = _('branch: %s\n') % branch
541218fbad2a summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents: 9857
diff changeset
5772 if branch != 'default':
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5773 ui.write(m, label='log.branch')
9873
541218fbad2a summary: note non-default branches with -q
Matt Mackall <mpm@selenic.com>
parents: 9857
diff changeset
5774 else:
10832
420bc8124904 summary: make use of output labeling
Eric Eisner <ede@mit.edu>
parents: 10830
diff changeset
5775 ui.status(m, label='log.branch')
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5776
14906
7c3c8f37e84f summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents: 14874
diff changeset
5777 if marks:
7c3c8f37e84f summary: show bookmarks separate from tags and note active mark (issue2892)
Augie Fackler <durin42@gmail.com>
parents: 14874
diff changeset
5778 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
5779 # i18n: column positioning for "hg summary"
14907
84af56cc673b summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents: 14906
diff changeset
5780 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
5781 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
5782 if current in marks:
14907
84af56cc673b summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents: 14906
diff changeset
5783 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
5784 marks.remove(current)
f9eebf5629fa summary: show active bookmark even if not at current changeset
Kevin Bullock <kbullock@ringworld.org>
parents: 18621
diff changeset
5785 else:
18623
0027a5cec9d0 summary: add missing space for updated active bookmark display
Matt Mackall <mpm@selenic.com>
parents: 18622
diff changeset
5786 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
5787 for m in marks:
17299
e51d4aedace9 check-code: indent 4 spaces in py files
Mads Kiilerich <mads@kiilerich.com>
parents: 17292
diff changeset
5788 ui.write(' ' + m, label='log.bookmark')
14907
84af56cc673b summary: allow color to highlight active bookmark
Augie Fackler <durin42@gmail.com>
parents: 14906
diff changeset
5789 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
5790
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5791 status = repo.status(unknown=True)
11088
c4347e48b0d0 summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents: 11078
diff changeset
5792
11331
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
5793 c = repo.dirstate.copies()
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
5794 copied, renamed = [], []
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
5795 for d, s in c.iteritems():
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5796 if s in status.removed:
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5797 status.removed.remove(s)
11331
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
5798 renamed.append(d)
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
5799 else:
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
5800 copied.append(d)
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5801 if d in status.added:
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5802 status.added.remove(d)
11331
997ab9af81df summary: report copies and renames
Matt Mackall <mpm@selenic.com>
parents: 11321
diff changeset
5803
15856
6bed6cc6d0d0 commands: partial backout of fbb68b382040
Martin Geisler <mg@aragost.com>
parents: 15855
diff changeset
5804 ms = mergemod.mergestate(repo)
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5805 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
5806
c4347e48b0d0 summary: add subrepo status
Matt Mackall <mpm@selenic.com>
parents: 11078
diff changeset
5807 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
5808
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5809 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
5810 (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
5811 (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
5812 (ui.label(_('%d renamed'), 'status.copied'), renamed),
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5813 (ui.label(_('%d copied'), 'status.copied'), copied),
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5814 (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
5815 (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
5816 (ui.label(_('%d unresolved'), 'resolve.unresolved'), unresolved),
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5817 (ui.label(_('%d subrepos'), 'status.modified'), subs)]
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5818 t = []
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5819 for l, s in labels:
9607
8e0e0d854b60 commands: do not split a translated string
Martin Geisler <mg@lazybytes.net>
parents: 9603
diff changeset
5820 if s:
8e0e0d854b60 commands: do not split a translated string
Martin Geisler <mg@lazybytes.net>
parents: 9603
diff changeset
5821 t.append(l % len(s))
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5822
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5823 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
5824 cleanworkdir = False
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5825
19482
499fc471296b update: add tracking of interrupted updates (issue3113)
Matt Mackall <mpm@selenic.com>
parents: 19476
diff changeset
5826 if repo.vfs.exists('updatestate'):
499fc471296b update: add tracking of interrupted updates (issue3113)
Matt Mackall <mpm@selenic.com>
parents: 19476
diff changeset
5827 t += _(' (interrupted update)')
499fc471296b update: add tracking of interrupted updates (issue3113)
Matt Mackall <mpm@selenic.com>
parents: 19476
diff changeset
5828 elif len(parents) > 1:
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5829 t += _(' (merge)')
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5830 elif branch != parents[0].branch():
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5831 t += _(' (new branch)')
16720
e825a89de5d7 context: add changectx.closesbranch() method
Brodie Rao <brodie@sf.io>
parents: 16719
diff changeset
5832 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
5833 pnode in repo.branchheads(branch, closed=True)):
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5834 t += _(' (head closed)')
22926
2d0b60b5abc0 summary: make status code more readable
Martin von Zweigbergk <martinvonz@gmail.com>
parents: 22903
diff changeset
5835 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
5836 copied or subs):
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5837 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
5838 cleanworkdir = True
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5839 elif pnode not in bheads:
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5840 t += _(' (new branch head)')
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5841
10269
acf001ee5ef8 summary: L10N messages hide clean-ness of workdir from 'hg summary'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 10263
diff changeset
5842 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
5843 # i18n: column positioning for "hg summary"
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5844 ui.status(_('commit: %s\n') % t.strip())
9605
3194227a4158 summary: quieter with -q
Matt Mackall <mpm@selenic.com>
parents: 9604
diff changeset
5845 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
5846 # i18n: column positioning for "hg summary"
11310
ac873ecfc3c2 Backed out changeset: e1dde7363601
Steve Borho <steve@borho.org>
parents: 11302
diff changeset
5847 ui.write(_('commit: %s\n') % t.strip())
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 # 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
5850 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
5851 bheads))
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5852
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5853 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
5854 # i18n: column positioning for "hg summary"
9605
3194227a4158 summary: quieter with -q
Matt Mackall <mpm@selenic.com>
parents: 9604
diff changeset
5855 ui.status(_('update: (current)\n'))
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5856 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
5857 # i18n: column positioning for "hg summary"
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5858 ui.write(_('update: %d new changesets (update)\n') % new)
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5859 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
5860 # i18n: column positioning for "hg summary"
9603
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5861 ui.write(_('update: %d new changesets, %d branch heads (merge)\n') %
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5862 (new, len(bheads)))
220d39af2e57 Introduce summary command
Matt Mackall <mpm@selenic.com>
parents: 9584
diff changeset
5863
19211
3bfd7f1e7485 summary: augment output with info from extensions
Bryan O'Sullivan <bryano@fb.com>
parents: 19209
diff changeset
5864 cmdutil.summaryhooks(ui, repo)
3bfd7f1e7485 summary: augment output with info from extensions
Bryan O'Sullivan <bryano@fb.com>
parents: 19209
diff changeset
5865
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5866 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
5867 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
5868 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5869 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
5870 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
5871 if i:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5872 needsincoming = True
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5873 if o:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5874 needsoutgoing = True
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5875 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
5876 return
21045
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5877
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5878 def getincoming():
10389
6dc25b01e170 fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents: 10384
diff changeset
5879 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
5880 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
5881 try:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5882 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
5883 except error.RepoError:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5884 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
5885 raise
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5886 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
5887 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
5888 if revs:
160d8416e286 summary: make "incoming" information sensitive to branch in URL (issue3830)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18994
diff changeset
5889 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
5890 ui.debug('comparing with %s\n' % util.hidepassword(source))
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5891 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
5892 commoninc = discovery.findcommonincoming(repo, other, heads=revs)
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5893 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
5894 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
5895
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5896 if needsincoming:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5897 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
5898 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5899 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
5900
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5901 def getoutgoing():
10389
6dc25b01e170 fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents: 10384
diff changeset
5902 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
5903 dbranch = branches[0]
10389
6dc25b01e170 fix remaining hg.parseurl uses
Sune Foldager <cryo@cyanite.org>
parents: 10384
diff changeset
5904 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
5905 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
5906 try:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5907 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
5908 except error.RepoError:
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5909 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
5910 raise
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5911 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
5912 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
5913 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
5914 # 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
5915 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
5916 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5917 dother = sother
18997
4cf09a1bf5b2 summary: clear "commonincoming" also if branches are different
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18996
diff changeset
5918 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
5919 common = None
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5920 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5921 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
5922 if revs:
32843795e9b3 summary: make "outgoing" information sensitive to branch in URL (issue3829)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18963
diff changeset
5923 revs = [repo.lookup(rev) for rev in revs]
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5924 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
5925 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
5926 commoninc=common)
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5927 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
5928 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
5929
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5930 if needsoutgoing:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5931 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
5932 else:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5933 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
5934
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5935 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
5936 t = []
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5937 if incoming:
7f875ed19475 summary: separate checking incoming/outgoing and showing remote summary
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21041
diff changeset
5938 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
5939 o = outgoing.missing
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5940 if o:
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5941 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
5942 other = dother or sother
13454
afc84a879ac8 summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents: 13453
diff changeset
5943 if 'bookmarks' in other.listkeys('namespaces'):
afc84a879ac8 summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents: 13453
diff changeset
5944 lmarks = repo.listkeys('bookmarks')
afc84a879ac8 summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents: 13453
diff changeset
5945 rmarks = other.listkeys('bookmarks')
afc84a879ac8 summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents: 13453
diff changeset
5946 diff = set(rmarks) - set(lmarks)
afc84a879ac8 summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents: 13453
diff changeset
5947 if len(diff) > 0:
afc84a879ac8 summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents: 13453
diff changeset
5948 t.append(_('%d incoming bookmarks') % len(diff))
afc84a879ac8 summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents: 13453
diff changeset
5949 diff = set(lmarks) - set(rmarks)
afc84a879ac8 summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents: 13453
diff changeset
5950 if len(diff) > 0:
afc84a879ac8 summary: add bookmarks to summary
David Soria Parra <dsp@php.net>
parents: 13453
diff changeset
5951 t.append(_('%d outgoing bookmarks') % len(diff))
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5952
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5953 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
5954 # i18n: column positioning for "hg summary"
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5955 ui.write(_('remote: %s\n') % (', '.join(t)))
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5956 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
5957 # i18n: column positioning for "hg summary"
9620
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5958 ui.status(_('remote: (synced)\n'))
a7ef354da662 summary: add --remote
Matt Mackall <mpm@selenic.com>
parents: 9619
diff changeset
5959
21047
f0003f989e72 summary: introduce "summaryremotehooks" to avoid redundant incoming/outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21045
diff changeset
5960 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
5961 ((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
5962 (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
5963
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5964 @command('tag',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5965 [('f', 'force', None, _('force tag')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5966 ('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
5967 ('r', 'rev', '', _('revision to tag'), _('REV')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5968 ('', 'remove', None, _('remove a tag')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5969 # -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
5970 ('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
5971 ('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
5972 ] + commitopts2,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
5973 _('[-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
5974 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
5975 """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
5976
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5977 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
5978
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5979 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
5980 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
5981 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
5982 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
5983
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
5984 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
5985 used.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5986
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
5987 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
5988 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
5989 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
5990 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
5991 ".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
5992 repositories).
1c1ca9d393f4 tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents: 13134
diff changeset
5993
1c1ca9d393f4 tag: abort if not at a branch head (issue2552)
Kevin Bullock <kbullock@ringworld.org>
parents: 13134
diff changeset
5994 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
5995 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
5996 -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
5997 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
5998
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
5999 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
6000
eb23c876c111 tag: warn users about tag/branch possible name conflicts
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11061
diff changeset
6001 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
6002 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
6003
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6004 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6005 """
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6006 wlock = lock = None
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6007 try:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6008 wlock = repo.wlock()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6009 lock = repo.lock()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6010 rev_ = "."
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6011 names = [t.strip() for t in (name1,) + names]
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6012 if len(names) != len(set(names)):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6013 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
6014 for n in names:
17821
361ab1e2086f scmutil: add bad character checking to checknewlabel
Kevin Bullock <kbullock@ringworld.org>
parents: 17818
diff changeset
6015 scmutil.checknewlabel(repo, n, 'tag')
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6016 if not n:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6017 raise util.Abort(_('tag names cannot consist entirely of '
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6018 'whitespace'))
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6019 if opts.get('rev') and opts.get('remove'):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6020 raise util.Abort(_("--rev and --remove are incompatible"))
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6021 if opts.get('rev'):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6022 rev_ = opts['rev']
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6023 message = opts.get('message')
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6024 if opts.get('remove'):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6025 expectedtype = opts.get('local') and 'local' or 'global'
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6026 for n in names:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6027 if not repo.tagtype(n):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6028 raise util.Abort(_("tag '%s' does not exist") % n)
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6029 if repo.tagtype(n) != expectedtype:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6030 if expectedtype == 'global':
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6031 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
6032 else:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6033 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
6034 rev_ = nullid
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6035 if not message:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6036 # we don't translate commit messages
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6037 message = 'Removed tag %s' % ', '.join(names)
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6038 elif not opts.get('force'):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6039 for n in names:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6040 if n in repo.tags():
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6041 raise util.Abort(_("tag '%s' already exists "
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6042 "(use -f to force)") % n)
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6043 if not opts.get('local'):
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6044 p1, p2 = repo.dirstate.parents()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6045 if p2 != nullid:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6046 raise util.Abort(_('uncommitted merge'))
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6047 bheads = repo.branchheads()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6048 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
6049 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
6050 r = scmutil.revsingle(repo, rev_).node()
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6051
4213
3be4785f8994 tags: add --remove
Matt Mackall <mpm@selenic.com>
parents: 4179
diff changeset
6052 if not message:
9183
d0225fa2f6c4 do not translate commit messages
Martin Geisler <mg@lazybytes.net>
parents: 9128
diff changeset
6053 # we don't translate commit messages
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6054 message = ('Added tag %s for changeset %s' %
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6055 (', '.join(names), short(r)))
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6056
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6057 date = opts.get('date')
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6058 if date:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6059 date = util.parsedate(date)
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6060
22009
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6061 if opts.get('remove'):
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6062 editform = 'tag.remove'
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6063 else:
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6064 editform = 'tag.add'
0bbe8ef901d1 tag: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22008
diff changeset
6065 editor = cmdutil.getcommiteditor(editform=editform, **opts)
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6066
17260
e432fb4b4221 tag: don't allow tagging the null revision (issue1915)
Brad Hall <bhall@fb.com>
parents: 17255
diff changeset
6067 # 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
6068 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
6069 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
6070 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
6071
21237
0054a77f49df localrepo: add "editor" argument to "tag()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21200
diff changeset
6072 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
6073 editor=editor)
15877
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6074 finally:
afd459933d5f tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com>
parents: 15875
diff changeset
6075 release(lock, wlock)
401
af4848f83e68 From: Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
mpm@selenic.com
parents: 396
diff changeset
6076
22429
7a7eed5176a4 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com>
parents: 22423
diff changeset
6077 @command('tags', formatteropts, '')
17912
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6078 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
6079 """list repository tags
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6080
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
6081 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
6082 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
6083
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6084 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6085 """
477
520540fd6b64 Handle errors in .hgtags or hgrc [tags] section more gracefully.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 470
diff changeset
6086
17912
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6087 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
6088 hexfunc = fm.hexfunc
5658
ae3089cefaab Add --verbose support to tags command.
Osku Salerma <osku@iki.fi>
parents: 5657
diff changeset
6089 tagtype = ""
ae3089cefaab Add --verbose support to tags command.
Osku Salerma <osku@iki.fi>
parents: 5657
diff changeset
6090
8210
344751cd8cb8 replace various uses of list.reverse()
Matt Mackall <mpm@selenic.com>
parents: 8209
diff changeset
6091 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
6092 hn = hexfunc(n)
17912
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6093 label = 'tags.normal'
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6094 tagtype = ''
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6095 if repo.tagtype(t) == 'local':
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6096 label = 'tags.local'
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6097 tagtype = 'local'
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6098
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6099 fm.startitem()
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6100 fm.write('tag', '%s', t, label=label)
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6101 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
6102 fm.condwrite(not ui.quiet, 'rev node', fmt,
17912
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6103 repo.changelog.rev(n), hn, label=label)
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6104 fm.condwrite(ui.verbose and tagtype, 'type', ' %s',
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6105 tagtype, label=label)
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6106 fm.plain('\n')
7a3de6c23f6d tags: add formatter support
Matt Mackall <mpm@selenic.com>
parents: 17911
diff changeset
6107 fm.end()
248
b7645b3c86ff migrate remaining commands
mpm@selenic.com
parents: 247
diff changeset
6108
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6109 @command('tip',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6110 [('p', 'patch', None, _('show patch')),
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6111 ('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
6112 ] + templateopts,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6113 _('[-p] [-g]'))
1731
251729df9cc6 add -p option to tip. for issue 64.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1728
diff changeset
6114 def tip(ui, repo, **opts):
19403
9013f2930a4a tip: deprecate the tip command
Matt Mackall <mpm@selenic.com>
parents: 19402
diff changeset
6115 """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
6116
8779
708938509732 Improve English for help text of many core hg commands.
timeless <timeless@gmail.com>
parents: 8778
diff changeset
6117 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
6118 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
6119 recently changed head).
6364
b22b39059722 Make tip help more helpful
Patrick Mezard <pmezard@gmail.com>
parents: 6353
diff changeset
6120
6367
51984a2413f2 Remove unexpected "Alternately" word from tip help.
Patrick Mezard <pmezard@gmail.com>
parents: 6364
diff changeset
6121 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
6122 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
6123 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
6124 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
6125
19403
9013f2930a4a tip: deprecate the tip command
Matt Mackall <mpm@selenic.com>
parents: 19402
diff changeset
6126 This command is deprecated, please use :hg:`heads` instead.
9013f2930a4a tip: deprecate the tip command
Matt Mackall <mpm@selenic.com>
parents: 19402
diff changeset
6127
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6128 Returns 0 on success.
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6129 """
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
6130 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
6131 displayer.show(repo['tip'])
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 10111
diff changeset
6132 displayer.close()
245
fef0f8e041aa big heap of command clean-up work
mpm@selenic.com
parents: 241
diff changeset
6133
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6134 @command('unbundle',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6135 [('u', 'update', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6136 _('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
6137 _('[-u] FILE...'))
4699
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6138 def unbundle(ui, repo, fname1, *fnames, **opts):
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6139 """apply one or more changegroup files
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6140
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6141 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
6142 bundle command.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6143
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6144 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
6145 """
4699
a6b62584d0b2 unbundle: accept multiple file arguments
Giorgos Keramidas <keramida@ceid.upatras.gr>
parents: 4697
diff changeset
6146 fnames = (fname1,) + fnames
6180
d98ef03893e6 commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents: 6178
diff changeset
6147
8109
496ae1ea4698 switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents: 8088
diff changeset
6148 lock = repo.lock()
6180
d98ef03893e6 commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents: 6178
diff changeset
6149 try:
d98ef03893e6 commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents: 6178
diff changeset
6150 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
6151 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
6152 gen = exchange.readbundle(ui, f, fname)
20933
d3775db748a0 localrepo: move the addchangegroup method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20930
diff changeset
6153 modheads = changegroup.addchangegroup(repo, gen, 'unbundle',
d3775db748a0 localrepo: move the addchangegroup method in changegroup module
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20930
diff changeset
6154 'bundle:' + fname)
6180
d98ef03893e6 commands: lock() the repo while unbundling (issue1004)
Patrick Mezard <pmezard@gmail.com>
parents: 6178
diff changeset
6155 finally:
8109
496ae1ea4698 switch lock releasing in the core from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents: 8088
diff changeset
6156 lock.release()
22091
f72b71ba756b unbundle: don't advance bookmarks (issue4322) (BC)
Matt Mackall <mpm@selenic.com>
parents: 21959
diff changeset
6157
7131
23bd7383891c commands: optional options where possible
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7126
diff changeset
6158 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
6159
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6160 @command('^update|up|checkout|co',
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6161 [('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
6162 ('c', 'check', None,
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6163 _('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
6164 ('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
6165 ('r', 'rev', '', _('revision'), _('REV'))
61151f429a5f update: introduce --tool for controlling the merge tool
Mads Kiilerich <madski@unity3d.com>
parents: 21541
diff changeset
6166 ] + mergetoolopts,
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6167 _('[-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
6168 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
6169 tool=None):
10889
e25c450c351e commands: improve some command summaries
Matt Mackall <mpm@selenic.com>
parents: 10882
diff changeset
6170 """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
6171
8004
d5b1b846f277 commands: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents: 7983
diff changeset
6172 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
6173 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
6174 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
6175 bookmarks`).
12688
8c034a825cfe help: improve description of update --check
Kevin Bullock <kbullock@ringworld.org>
parents: 12618
diff changeset
6176
17343
e560ecb755fe update: fix typo in help text
Adrian Buehlmann <adrian@cadifra.com>
parents: 17322
diff changeset
6177 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
6178 changeset (see :hg:`help parents`).
c9e6c6ae4ea1 update: move help text about parent revision higher up
Adrian Buehlmann <adrian@cadifra.com>
parents: 17142
diff changeset
6179
16877
6e578e77cbe6 update: fix help regarding update to ancestor
Kevin Bullock <kbullock@ringworld.org>
parents: 16869
diff changeset
6180 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
6181 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
6182 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
6183 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
6184 changeset.
fe1b19bfe75b help: describe new cross-branch behavior in update help text, plus cleanups
Stuart W Marks <smarks@smarks.org>
parents: 9714
diff changeset
6185
17218
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6186 .. container:: verbose
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6187
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6188 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
6189 uncommitted changes:
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6190
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6191 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
6192 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
6193 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
6194 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
6195 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
6196 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
6197 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
6198 are preserved.
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6199
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6200 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
6201 uncommitted changes are preserved.
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6202
b8661d7c940f update: put rules for uncommitted changes into verbose help section
Adrian Buehlmann <adrian@cadifra.com>
parents: 17192
diff changeset
6203 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
6204 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
6205
17144
71e36b3d2cc4 update: mention how update can be used to cancel an uncommitted merge
Adrian Buehlmann <adrian@cadifra.com>
parents: 17143
diff changeset
6206 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
6207 :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
6208
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
6209 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
6210 :hg:`clone -U`).
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
6211
14729
94eea58da2a3 update: do not use the term 'update' when mentioning reverting one file
Adrian Buehlmann <adrian@cadifra.com>
parents: 14726
diff changeset
6212 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
6213 :hg:`revert [-r REV] NAME`.
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
6214
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10963
diff changeset
6215 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
6216
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6217 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
6218 """
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6219 if rev and node:
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6220 raise util.Abort(_("please specify just one revision"))
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6221
13568
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 13477
diff changeset
6222 if rev is None or rev == '':
4450
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6223 rev = node
8fa54b9c6c5a accept -r REV in more places
Daniel Holth <dholth@fastmail.fm>
parents: 4445
diff changeset
6224
19475
e24531a23ae4 update: clear any clearable unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19469
diff changeset
6225 cmdutil.clearunfinished(repo)
e24531a23ae4 update: clear any clearable unfinished operations (issue3955)
Matt Mackall <mpm@selenic.com>
parents: 19469
diff changeset
6226
15935
6c97eb445341 bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents: 15912
diff changeset
6227 # 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
6228 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
6229
13415
25b5694b9337 update: preserve possible bookmark name to set current bookmark correctly
David Soria Parra <dsp@php.net>
parents: 13407
diff changeset
6230 # 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
6231 brev = rev
14319
b33f3e35efb0 scmutil: move revsingle/pair/range from cmdutil
Matt Mackall <mpm@selenic.com>
parents: 14318
diff changeset
6232 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
6233
9450
e78967d3dd6f commands: forbid 'hg update --check --clean'
Stuart W Marks <smarks@smarks.org>
parents: 9429
diff changeset
6234 if check and clean:
9451
3e673c988c85 commands: expand -c and -C in update error message
Martin Geisler <mg@lazybytes.net>
parents: 9450
diff changeset
6235 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
6236
16092
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6237 if date:
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6238 if rev is not None:
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6239 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
6240 rev = cmdutil.finddate(ui, repo, date)
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6241
9450
e78967d3dd6f commands: forbid 'hg update --check --clean'
Stuart W Marks <smarks@smarks.org>
parents: 9429
diff changeset
6242 if check:
8855
f331de880cbb update: add --check option
Matt Mackall <mpm@selenic.com>
parents: 8849
diff changeset
6243 c = repo[None]
17849
6da47b655d97 update: check for missing files with --check (issue3595)
Matt Mackall <mpm@selenic.com>
parents: 17848
diff changeset
6244 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
6245 raise util.Abort(_("uncommitted changes"))
16490
c8ee34917045 update: fix "not rev" vs "rev is None"
Patrick Mezard <patrick@mezard.eu>
parents: 16473
diff changeset
6246 if rev is None:
16092
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6247 rev = repo[repo[None].branch()].rev()
16095
3eab42088be4 update: just merge unknown file collisions
Matt Mackall <mpm@selenic.com>
parents: 16092
diff changeset
6248 mergemod._checkunknown(repo, repo[None], repo[rev])
16092
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6249
21552
61151f429a5f update: introduce --tool for controlling the merge tool
Mads Kiilerich <madski@unity3d.com>
parents: 21541
diff changeset
6250 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
6251
16092
914bc95e227b update: use normal update path with --check (issue2450)
Matt Mackall <mpm@selenic.com>
parents: 16039
diff changeset
6252 if clean:
13367
cef73cd9c268 bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents: 13366
diff changeset
6253 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
6254 else:
13367
cef73cd9c268 bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents: 13366
diff changeset
6255 ret = hg.update(repo, rev)
cef73cd9c268 bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents: 13366
diff changeset
6256
15935
6c97eb445341 bookmarks: automatically advance bookmark on naked update (BC) (issue2894)
Matt Mackall <mpm@selenic.com>
parents: 15912
diff changeset
6257 if not ret and movemarkfrom:
16010
c7811ca6fb94 update: note updated bookmark
Kevin Bullock <kbullock@ringworld.org>
parents: 16009
diff changeset
6258 if bookmarks.update(repo, [movemarkfrom], repo['.'].node()):
c7811ca6fb94 update: note updated bookmark
Kevin Bullock <kbullock@ringworld.org>
parents: 16009
diff changeset
6259 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
6260 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
6261 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
6262 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
6263 elif brev:
21404
ca275f7ec576 update: when deactivating a bookmark, print a message
Siddharth Agarwal <sid0@fb.com>
parents: 21267
diff changeset
6264 if repo._bookmarkcurrent:
ca275f7ec576 update: when deactivating a bookmark, print a message
Siddharth Agarwal <sid0@fb.com>
parents: 21267
diff changeset
6265 ui.status(_("(leaving bookmark %s)\n") %
ca275f7ec576 update: when deactivating a bookmark, print a message
Siddharth Agarwal <sid0@fb.com>
parents: 21267
diff changeset
6266 repo._bookmarkcurrent)
16191
7c75924a6926 update: delete bookmarks.current when explicitly updating to a rev (issue3276)
Idan Kamara <idankk86@gmail.com>
parents: 16189
diff changeset
6267 bookmarks.unsetcurrent(repo)
13367
cef73cd9c268 bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents: 13366
diff changeset
6268
cef73cd9c268 bookmarks: merge current tracking on update into core
Matt Mackall <mpm@selenic.com>
parents: 13366
diff changeset
6269 return ret
254
c03f58e5fd2d unify checkout and resolve into update
mpm@selenic.com
parents: 252
diff changeset
6270
14297
2daa5179e73f commands: use a decorator to build table incrementally
Adrian Buehlmann <adrian@cadifra.com>
parents: 14291
diff changeset
6271 @command('verify', [])
247
863b508c5b36 migrate verify
mpm@selenic.com
parents: 246
diff changeset
6272 def verify(ui, repo):
1437
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6273 """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
6274
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6275 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
6276
ea51d296085f import docstring from doc/hg.1.txt
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1436
diff changeset
6277 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
6278 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
6279 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
6280 integrity of their crosslinks and indices.
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6281
17717
009db477c9fb help: add information about recovery from corruption to help of "verify"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17686
diff changeset
6282 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
6283 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
6284 repository.
009db477c9fb help: add information about recovery from corruption to help of "verify"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17686
diff changeset
6285
11177
6a64813276ed commands: initial audit of exit codes
Matt Mackall <mpm@selenic.com>
parents: 11173
diff changeset
6286 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
6287 """
2778
fdc232d8a193 Move repo.verify
Matt Mackall <mpm@selenic.com>
parents: 2776
diff changeset
6288 return hg.verify(repo)
247
863b508c5b36 migrate verify
mpm@selenic.com
parents: 246
diff changeset
6289
21768
16aeb28caaa6 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21767
diff changeset
6290 @command('version', [], norepo=True)
3651
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6291 def version_(ui):
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6292 """output version and copyright information"""
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6293 ui.write(_("Mercurial Distributed SCM (version %s)\n")
7632
9626819b2e3d refactor version code
Matt Mackall <mpm@selenic.com>
parents: 7628
diff changeset
6294 % util.version())
3651
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6295 ui.status(_(
12829
01145ee78c53 version: replace email address with url to reduce private mail
Matt Mackall <mpm@selenic.com>
parents: 12821
diff changeset
6296 "(see http://mercurial.selenic.com for more information)\n"
20227
9c963a43ecfb doc: bump copyright year
Kevin Bullock <kbullock@ringworld.org>
parents: 20192
diff changeset
6297 "\nCopyright (C) 2005-2014 Matt Mackall and others\n"
3651
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6298 "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
6299 "There is NO\nwarranty; "
6389205291c6 move show_version to version_
Matt Mackall <mpm@selenic.com>
parents: 3650
diff changeset
6300 "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
6301 ))
21848
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6302
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6303 ui.note(_("\nEnabled extensions:\n\n"))
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6304 if ui.verbose:
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6305 # format names and versions into columns
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6306 names = []
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6307 vers = []
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6308 for name, module in extensions.extensions():
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6309 names.append(name)
ecdbbb6e5d06 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com>
parents: 21819
diff changeset
6310 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
6311 if names:
54ff2789d75e version: don't traceback if no extensions to list (issue4312)
Matt Mackall <mpm@selenic.com>
parents: 21929
diff changeset
6312 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
6313 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
6314 ui.write(" %-*s %s\n" % (maxnamelen, name, vers[i]))