annotate hgext/record.py @ 29559:7dec5e441bf7

sslutil: config option to specify TLS protocol version Currently, Mercurial will use TLS 1.0 or newer when connecting to remote servers, selecting the highest TLS version supported by both peers. On older Pythons, only TLS 1.0 is available. On newer Pythons, TLS 1.1 and 1.2 should be available. Security-minded people may want to not take any risks running TLS 1.0 (or even TLS 1.1). This patch gives those people a config option to explicitly control which TLS versions Mercurial should use. By providing this option, one can require newer TLS versions before they are formally deprecated by Mercurial/Python/OpenSSL/etc and lower their security exposure. This option also provides an easy mechanism to change protocol policies in Mercurial. If there is a 0-day and TLS 1.0 is completely broken, we can act quickly without changing much code. Because setting the minimum TLS protocol is something you'll likely want to do globally, this patch introduces a global config option under [hostsecurity] for that purpose. wrapserversocket() has been taught a hidden config option to define the explicit protocol to use. This is queried in this function and not passed as an argument because I don't want to expose this dangerous option as part of the Python API. There is a risk someone could footgun themselves. But the config option is a devel option, has a warning comment, and I doubt most people are using `hg serve` to run a production HTTPS server (I would have something not Mercurial/Python handle TLS). If this is problematic, we can go back to using a custom extension in tests to coerce the server into bad behavior.
author Gregory Szorc <gregory.szorc@gmail.com>
date Thu, 14 Jul 2016 20:47:22 -0700
parents a0939666b836
children d5883fd055c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5037
b2607267236d Add record extension, giving darcs-like interactive hunk picking
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
1 # record.py
b2607267236d Add record extension, giving darcs-like interactive hunk picking
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
2 #
b2607267236d Add record extension, giving darcs-like interactive hunk picking
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
3 # Copyright 2007 Bryan O'Sullivan <bos@serpentine.com>
b2607267236d Add record extension, giving darcs-like interactive hunk picking
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
4 #
8225
46293a0c7e9f updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents: 8208
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: 9837
diff changeset
6 # GNU General Public License version 2 or any later version.
5037
b2607267236d Add record extension, giving darcs-like interactive hunk picking
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
7
28697
d001d6d27570 record: deprecate the extension
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 28381
diff changeset
8 '''commands to interactively select changes for commit/qrefresh (DEPRECATED)
d001d6d27570 record: deprecate the extension
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 28381
diff changeset
9
d001d6d27570 record: deprecate the extension
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 28381
diff changeset
10 The feature provided by this extension has been moved into core Mercurial as
d001d6d27570 record: deprecate the extension
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 28381
diff changeset
11 :hg:`commit --interactive`.'''
d001d6d27570 record: deprecate the extension
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 28381
diff changeset
12
28381
44ffbb2a4f59 record: use absolute_import
timeless <timeless@mozdev.org>
parents: 26587
diff changeset
13 from __future__ import absolute_import
5037
b2607267236d Add record extension, giving darcs-like interactive hunk picking
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
14
29205
a0939666b836 py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents: 28697
diff changeset
15 from mercurial.i18n import _
28381
44ffbb2a4f59 record: use absolute_import
timeless <timeless@mozdev.org>
parents: 26587
diff changeset
16 from mercurial import (
44ffbb2a4f59 record: use absolute_import
timeless <timeless@mozdev.org>
parents: 26587
diff changeset
17 cmdutil,
44ffbb2a4f59 record: use absolute_import
timeless <timeless@mozdev.org>
parents: 26587
diff changeset
18 commands,
44ffbb2a4f59 record: use absolute_import
timeless <timeless@mozdev.org>
parents: 26587
diff changeset
19 error,
44ffbb2a4f59 record: use absolute_import
timeless <timeless@mozdev.org>
parents: 26587
diff changeset
20 extensions,
44ffbb2a4f59 record: use absolute_import
timeless <timeless@mozdev.org>
parents: 26587
diff changeset
21 )
5037
b2607267236d Add record extension, giving darcs-like interactive hunk picking
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
22
14408
054da1e0afbe record: use cmdutil.command decorator
Idan Kamara <idankk86@gmail.com>
parents: 14407
diff changeset
23 cmdtable = {}
054da1e0afbe record: use cmdutil.command decorator
Idan Kamara <idankk86@gmail.com>
parents: 14407
diff changeset
24 command = cmdutil.command(cmdtable)
25186
80c5b2666a96 extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents: 24309
diff changeset
25 # Note for extension authors: ONLY specify testedwith = 'internal' for
80c5b2666a96 extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents: 24309
diff changeset
26 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
80c5b2666a96 extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents: 24309
diff changeset
27 # be specifying the version(s) of Mercurial they are tested with, or
80c5b2666a96 extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents: 24309
diff changeset
28 # leave the attribute unspecified.
16743
38caf405d010 hgext: mark all first-party extensions as such
Augie Fackler <raf@durin42.com>
parents: 16683
diff changeset
29 testedwith = 'internal'
14408
054da1e0afbe record: use cmdutil.command decorator
Idan Kamara <idankk86@gmail.com>
parents: 14407
diff changeset
30
5037
b2607267236d Add record extension, giving darcs-like interactive hunk picking
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
31
14408
054da1e0afbe record: use cmdutil.command decorator
Idan Kamara <idankk86@gmail.com>
parents: 14407
diff changeset
32 @command("record",
14597
3f1dccea9510 record: add white space diff options
Ingo Proetel <proetel@aicas.de>
parents: 14441
diff changeset
33 # same options as commit + white space diff options
24278
0b94b68aace9 record: add interactive option to the commit command
Laurent Charignon <lcharignon@fb.com>
parents: 24272
diff changeset
34 [c for c in commands.table['^commit|ci'][1][:]
0b94b68aace9 record: add interactive option to the commit command
Laurent Charignon <lcharignon@fb.com>
parents: 24272
diff changeset
35 if c[1] != "interactive"] + commands.diffwsopts,
14408
054da1e0afbe record: use cmdutil.command decorator
Idan Kamara <idankk86@gmail.com>
parents: 14407
diff changeset
36 _('hg record [OPTION]... [FILE]...'))
5037
b2607267236d Add record extension, giving darcs-like interactive hunk picking
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
37 def record(ui, repo, *pats, **opts):
5154
67afecb8d6cc record: improve docs, improve prompts
Bryan O'Sullivan <bos@serpentine.com>
parents: 5147
diff changeset
38 '''interactively select changes to commit
67afecb8d6cc record: improve docs, improve prompts
Bryan O'Sullivan <bos@serpentine.com>
parents: 5147
diff changeset
39
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10890
diff changeset
40 If a list of files is omitted, all changes reported by :hg:`status`
9272
784899697571 record: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents: 9157
diff changeset
41 will be candidates for recording.
5154
67afecb8d6cc record: improve docs, improve prompts
Bryan O'Sullivan <bos@serpentine.com>
parents: 5147
diff changeset
42
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10890
diff changeset
43 See :hg:`help dates` for a list of formats valid for -d/--date.
6163
1f733c2f0165 Document log date ranges and mention 'hg help dates' for all commands (issue998)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 5932
diff changeset
44
9272
784899697571 record: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents: 9157
diff changeset
45 You will be prompted for whether to record changes to each
784899697571 record: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents: 9157
diff changeset
46 modified file, and for files with multiple changes, for each
784899697571 record: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents: 9157
diff changeset
47 change to use. For each query, the following responses are
784899697571 record: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents: 9157
diff changeset
48 possible::
5154
67afecb8d6cc record: improve docs, improve prompts
Bryan O'Sullivan <bos@serpentine.com>
parents: 5147
diff changeset
49
9157
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9087
diff changeset
50 y - record this change
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9087
diff changeset
51 n - skip this change
16324
46b991a1f428 record: allow splitting of hunks by manually editing patches
A. S. Budden <abudden@gmail.com>
parents: 15184
diff changeset
52 e - edit this change manually
5154
67afecb8d6cc record: improve docs, improve prompts
Bryan O'Sullivan <bos@serpentine.com>
parents: 5147
diff changeset
53
9157
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9087
diff changeset
54 s - skip remaining changes to this file
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9087
diff changeset
55 f - record remaining changes to this file
5154
67afecb8d6cc record: improve docs, improve prompts
Bryan O'Sullivan <bos@serpentine.com>
parents: 5147
diff changeset
56
9157
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9087
diff changeset
57 d - done, skip remaining changes and files
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9087
diff changeset
58 a - record all changes to all remaining files
9261667e9b82 commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents: 9087
diff changeset
59 q - quit, recording no changes
5154
67afecb8d6cc record: improve docs, improve prompts
Bryan O'Sullivan <bos@serpentine.com>
parents: 5147
diff changeset
60
11237
feb2a58fc592 record: check that we are not committing a merge before patch selection
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11236
diff changeset
61 ? - display help
feb2a58fc592 record: check that we are not committing a merge before patch selection
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11236
diff changeset
62
feb2a58fc592 record: check that we are not committing a merge before patch selection
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11236
diff changeset
63 This command is not available when committing a merge.'''
5037
b2607267236d Add record extension, giving darcs-like interactive hunk picking
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
64
25796
4eb8d8a44bf1 record: omit meaningless 'commit' suggestion at 'hg commit -i'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 25223
diff changeset
65 if not ui.interactive():
26587
56b2bcea2529 error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25798
diff changeset
66 raise error.Abort(_('running non-interactively, use %s instead') %
25796
4eb8d8a44bf1 record: omit meaningless 'commit' suggestion at 'hg commit -i'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 25223
diff changeset
67 'commit')
4eb8d8a44bf1 record: omit meaningless 'commit' suggestion at 'hg commit -i'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 25223
diff changeset
68
24307
7fcd9f4af49b record: make record use commit -i
Laurent Charignon <lcharignon@fb.com>
parents: 24278
diff changeset
69 opts["interactive"] = True
25223
29be0450b667 record: make hg record always use the non curses interface
Laurent Charignon <lcharignon@fb.com>
parents: 25186
diff changeset
70 backup = ui.backupconfig('experimental', 'crecord')
29be0450b667 record: make hg record always use the non curses interface
Laurent Charignon <lcharignon@fb.com>
parents: 25186
diff changeset
71 try:
29be0450b667 record: make hg record always use the non curses interface
Laurent Charignon <lcharignon@fb.com>
parents: 25186
diff changeset
72 ui.setconfig('experimental', 'crecord', False, 'record')
29be0450b667 record: make hg record always use the non curses interface
Laurent Charignon <lcharignon@fb.com>
parents: 25186
diff changeset
73 commands.commit(ui, repo, *pats, **opts)
29be0450b667 record: make hg record always use the non curses interface
Laurent Charignon <lcharignon@fb.com>
parents: 25186
diff changeset
74 finally:
29be0450b667 record: make hg record always use the non curses interface
Laurent Charignon <lcharignon@fb.com>
parents: 25186
diff changeset
75 ui.restoreconfig(backup)
5830
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
76
15184
351a9292e430 record: use command wrapper properly for qnew/qrefresh (issue3001)
Matt Mackall <mpm@selenic.com>
parents: 14597
diff changeset
77 def qrefresh(origfn, ui, repo, *pats, **opts):
351a9292e430 record: use command wrapper properly for qnew/qrefresh (issue3001)
Matt Mackall <mpm@selenic.com>
parents: 14597
diff changeset
78 if not opts['interactive']:
351a9292e430 record: use command wrapper properly for qnew/qrefresh (issue3001)
Matt Mackall <mpm@selenic.com>
parents: 14597
diff changeset
79 return origfn(ui, repo, *pats, **opts)
351a9292e430 record: use command wrapper properly for qnew/qrefresh (issue3001)
Matt Mackall <mpm@selenic.com>
parents: 14597
diff changeset
80
14426
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
81 mq = extensions.find('mq')
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
82
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
83 def committomq(ui, repo, *pats, **opts):
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
84 # At this point the working copy contains only changes that
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
85 # were accepted. All other changes were reverted.
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
86 # We can't pass *pats here since qrefresh will undo all other
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
87 # changed files in the patch that aren't in pats.
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
88 mq.refresh(ui, repo, **opts)
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
89
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
90 # backup all changed files
25798
08f2177b15c7 record: omit meaningless 'qrefresh' suggestion at 'hg qrefresh -i'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 25797
diff changeset
91 cmdutil.dorecord(ui, repo, committomq, None, True,
24309
fefcafda10b8 record: change interface of dorecord to accept new filters
Laurent Charignon <lcharignon@fb.com>
parents: 24307
diff changeset
92 cmdutil.recordfilter, *pats, **opts)
5830
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
93
21251
a836fa58b512 record: declare commands using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 20334
diff changeset
94 # This command registration is replaced during uisetup().
21787
fb5f34bb3867 record: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21251
diff changeset
95 @command('qrecord',
fb5f34bb3867 record: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21251
diff changeset
96 [],
fb5f34bb3867 record: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21251
diff changeset
97 _('hg qrecord [OPTION]... PATCH [FILE]...'),
fb5f34bb3867 record: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21251
diff changeset
98 inferrepo=True)
5932
b014ff3fdaeb qrecord: record complements commit, so qrecord should complement qnew
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5830
diff changeset
99 def qrecord(ui, repo, patch, *pats, **opts):
b014ff3fdaeb qrecord: record complements commit, so qrecord should complement qnew
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5830
diff changeset
100 '''interactively record a new patch
5830
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
101
10973
49a07f441496 Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents: 10890
diff changeset
102 See :hg:`help qnew` & :hg:`help record` for more information and
9272
784899697571 record: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents: 9157
diff changeset
103 usage.
5830
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
104 '''
25797
cc9fb45986d4 record: omit meaningless 'qnew' suggestion at 'hg qnew -i'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 25796
diff changeset
105 return _qrecord('qnew', ui, repo, patch, *pats, **opts)
5830
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
106
25797
cc9fb45986d4 record: omit meaningless 'qnew' suggestion at 'hg qnew -i'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 25796
diff changeset
107 def _qrecord(cmdsuggest, ui, repo, patch, *pats, **opts):
5830
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
108 try:
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
109 mq = extensions.find('mq')
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
110 except KeyError:
26587
56b2bcea2529 error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25798
diff changeset
111 raise error.Abort(_("'mq' extension not loaded"))
5830
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
112
14424
4eb88d296f63 record: check patch name is valid before prompting in qrecord
Idan Kamara <idankk86@gmail.com>
parents: 14408
diff changeset
113 repo.mq.checkpatchname(patch)
4eb88d296f63 record: check patch name is valid before prompting in qrecord
Idan Kamara <idankk86@gmail.com>
parents: 14408
diff changeset
114
10323
0aa59f532ef9 record: function variable naming & signature cleanup.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 10282
diff changeset
115 def committomq(ui, repo, *pats, **opts):
14424
4eb88d296f63 record: check patch name is valid before prompting in qrecord
Idan Kamara <idankk86@gmail.com>
parents: 14408
diff changeset
116 opts['checkname'] = False
5932
b014ff3fdaeb qrecord: record complements commit, so qrecord should complement qnew
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5830
diff changeset
117 mq.new(ui, repo, patch, *pats, **opts)
5830
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
118
25223
29be0450b667 record: make hg record always use the non curses interface
Laurent Charignon <lcharignon@fb.com>
parents: 25186
diff changeset
119 backup = ui.backupconfig('experimental', 'crecord')
29be0450b667 record: make hg record always use the non curses interface
Laurent Charignon <lcharignon@fb.com>
parents: 25186
diff changeset
120 try:
29be0450b667 record: make hg record always use the non curses interface
Laurent Charignon <lcharignon@fb.com>
parents: 25186
diff changeset
121 ui.setconfig('experimental', 'crecord', False, 'record')
25797
cc9fb45986d4 record: omit meaningless 'qnew' suggestion at 'hg qnew -i'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 25796
diff changeset
122 cmdutil.dorecord(ui, repo, committomq, cmdsuggest, False,
25223
29be0450b667 record: make hg record always use the non curses interface
Laurent Charignon <lcharignon@fb.com>
parents: 25186
diff changeset
123 cmdutil.recordfilter, *pats, **opts)
29be0450b667 record: make hg record always use the non curses interface
Laurent Charignon <lcharignon@fb.com>
parents: 25186
diff changeset
124 finally:
29be0450b667 record: make hg record always use the non curses interface
Laurent Charignon <lcharignon@fb.com>
parents: 25186
diff changeset
125 ui.restoreconfig(backup)
5827
0c29977bd7db record: refactor record into generic record driver
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5826
diff changeset
126
15184
351a9292e430 record: use command wrapper properly for qnew/qrefresh (issue3001)
Matt Mackall <mpm@selenic.com>
parents: 14597
diff changeset
127 def qnew(origfn, ui, repo, patch, *args, **opts):
351a9292e430 record: use command wrapper properly for qnew/qrefresh (issue3001)
Matt Mackall <mpm@selenic.com>
parents: 14597
diff changeset
128 if opts['interactive']:
25797
cc9fb45986d4 record: omit meaningless 'qnew' suggestion at 'hg qnew -i'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 25796
diff changeset
129 return _qrecord(None, ui, repo, patch, *args, **opts)
15184
351a9292e430 record: use command wrapper properly for qnew/qrefresh (issue3001)
Matt Mackall <mpm@selenic.com>
parents: 14597
diff changeset
130 return origfn(ui, repo, patch, *args, **opts)
351a9292e430 record: use command wrapper properly for qnew/qrefresh (issue3001)
Matt Mackall <mpm@selenic.com>
parents: 14597
diff changeset
131
5037
b2607267236d Add record extension, giving darcs-like interactive hunk picking
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
132
9710
1765599f4899 record: use uisetup instead of extsetup to register qrecord
Martin Geisler <mg@lazybytes.net>
parents: 9688
diff changeset
133 def uisetup(ui):
5830
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
134 try:
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
135 mq = extensions.find('mq')
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
136 except KeyError:
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
137 return
c32d41affb68 hg qrecord -- like record, but for mq
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5827
diff changeset
138
14408
054da1e0afbe record: use cmdutil.command decorator
Idan Kamara <idankk86@gmail.com>
parents: 14407
diff changeset
139 cmdtable["qrecord"] = \
14427
9d4cabd189df record: alias qrecord to qnew -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14426
diff changeset
140 (qrecord,
9d4cabd189df record: alias qrecord to qnew -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14426
diff changeset
141 # same options as qnew, but copy them so we don't get
14597
3f1dccea9510 record: add white space diff options
Ingo Proetel <proetel@aicas.de>
parents: 14441
diff changeset
142 # -i/--interactive for qrecord and add white space diff options
20300
0076643077a3 record: use commands.diffwsopts instead of ad-hoc diffopts
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 20266
diff changeset
143 mq.cmdtable['^qnew'][1][:] + commands.diffwsopts,
14408
054da1e0afbe record: use cmdutil.command decorator
Idan Kamara <idankk86@gmail.com>
parents: 14407
diff changeset
144 _('hg qrecord [OPTION]... PATCH [FILE]...'))
14426
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
145
15184
351a9292e430 record: use command wrapper properly for qnew/qrefresh (issue3001)
Matt Mackall <mpm@selenic.com>
parents: 14597
diff changeset
146 _wrapcmd('qnew', mq.cmdtable, qnew, _("interactively record a new patch"))
14426
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
147 _wrapcmd('qrefresh', mq.cmdtable, qrefresh,
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
148 _("interactively select changes to refresh"))
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
149
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
150 def _wrapcmd(cmd, table, wrapfn, msg):
15184
351a9292e430 record: use command wrapper properly for qnew/qrefresh (issue3001)
Matt Mackall <mpm@selenic.com>
parents: 14597
diff changeset
151 entry = extensions.wrapcommand(table, cmd, wrapfn)
14426
1df64ccef23e record: add qrefresh -i/--interactive
Idan Kamara <idankk86@gmail.com>
parents: 14425
diff changeset
152 entry[1].append(('i', 'interactive', None, msg))