##// END OF EJS Templates
shelve: stop passing list of files to revert...
shelve: stop passing list of files to revert It seems to work just fine to not specify any files here. I suspect it looked the way it did for historical reasons. It apparently used to use merge instead of rebase until 1d7a36ff2615 (shelve: use rebase instead of merge (issue4068), 2013-10-23) and it makes sense to want to restrict the set of files then. I noticed this because of the files.extend(shelvectx.p1().files()). If the working copy was clean before, then shelvectx.p1() will be the working copy parent and that ended up adding all the files in that set. In our Google-internal Mercurial setup (including a FUSE) that was very noticeably slow when the working copy parent happened to have many files in large directories. This patch doesn't yet remove the call to shelvectx.p1().files(). We also use that set for deciding what to back up. I'm pretty sure it's safe to back up only the set of files we already back even if we no longer restrict the set of files to revert, so this patch should be safe on its own. Regardless, the next patch will delegate the backing-up to cmdutil.revert(). Incidentally, this also gets rid of a repo.pathto() that I had earlier wanted to get rid of. Differential Revision: https://phab.mercurial-scm.org/D6173

File last commit:

r41956:4d21ebc4 default
r42204:46065855 default
Show More
record.py
151 lines | 5.0 KiB | text/x-python | PythonLexer
Bryan O'Sullivan
Add record extension, giving darcs-like interactive hunk picking
r5037 # record.py
#
# Copyright 2007 Bryan O'Sullivan <bos@serpentine.com>
#
Martin Geisler
updated license to be explicit about GPL version 2
r8225 # This software may be used and distributed according to the terms of the
Matt Mackall
Update license to GPLv2+
r10263 # GNU General Public License version 2 or any later version.
Bryan O'Sullivan
Add record extension, giving darcs-like interactive hunk picking
r5037
Pierre-Yves David
record: deprecate the extension...
r28697 '''commands to interactively select changes for commit/qrefresh (DEPRECATED)
The feature provided by this extension has been moved into core Mercurial as
:hg:`commit --interactive`.'''
timeless
record: use absolute_import
r28381 from __future__ import absolute_import
Bryan O'Sullivan
Add record extension, giving darcs-like interactive hunk picking
r5037
Yuya Nishihara
py3: move up symbol imports to enforce import-checker rules...
r29205 from mercurial.i18n import _
timeless
record: use absolute_import
r28381 from mercurial import (
cmdutil,
commands,
error,
extensions,
Yuya Nishihara
registrar: move cmdutil.command to registrar module (API)...
r32337 registrar,
timeless
record: use absolute_import
r28381 )
Bryan O'Sullivan
Add record extension, giving darcs-like interactive hunk picking
r5037
Idan Kamara
record: use cmdutil.command decorator
r14408 cmdtable = {}
Yuya Nishihara
registrar: move cmdutil.command to registrar module (API)...
r32337 command = registrar.command(cmdtable)
Augie Fackler
extensions: change magic "shipped with hg" string...
r29841 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
Augie Fackler
extensions: document that `testedwith = 'internal'` is special...
r25186 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
# be specifying the version(s) of Mercurial they are tested with, or
# leave the attribute unspecified.
Augie Fackler
extensions: change magic "shipped with hg" string...
r29841 testedwith = 'ships-with-hg-core'
Idan Kamara
record: use cmdutil.command decorator
r14408
Bryan O'Sullivan
Add record extension, giving darcs-like interactive hunk picking
r5037
Idan Kamara
record: use cmdutil.command decorator
r14408 @command("record",
Ingo Proetel
record: add white space diff options
r14597 # same options as commit + white space diff options
Rodrigo Damazio
help: adding a proper declaration for shortlist/basic commands (API)...
r40331 [c for c in commands.table['commit|ci'][1][:]
Yuya Nishihara
commands: move templates of common command options to cmdutil (API)...
r32375 if c[1] != "interactive"] + cmdutil.diffwsopts,
rdamazio@google.com
help: assigning categories to existing commands...
r40329 _('hg record [OPTION]... [FILE]...'),
helpcategory=command.CATEGORY_COMMITTING)
Bryan O'Sullivan
Add record extension, giving darcs-like interactive hunk picking
r5037 def record(ui, repo, *pats, **opts):
Bryan O'Sullivan
record: improve docs, improve prompts
r5154 '''interactively select changes to commit
Martin Geisler
Use hg role in help strings
r10973 If a list of files is omitted, all changes reported by :hg:`status`
Martin Geisler
record: wrap docstrings at 70 characters
r9272 will be candidates for recording.
Bryan O'Sullivan
record: improve docs, improve prompts
r5154
Martin Geisler
Use hg role in help strings
r10973 See :hg:`help dates` for a list of formats valid for -d/--date.
Thomas Arendsen Hein
Document log date ranges and mention 'hg help dates' for all commands (issue998)
r6163
eloimorlaas
record: update help to describe ui.interface...
r31065 If using the text interface (see :hg:`help config`),
you will be prompted for whether to record changes to each
Martin Geisler
record: wrap docstrings at 70 characters
r9272 modified file, and for files with multiple changes, for each
change to use. For each query, the following responses are
possible::
Bryan O'Sullivan
record: improve docs, improve prompts
r5154
Martin Geisler
commands: use minirst parser when displaying help
r9157 y - record this change
n - skip this change
A. S. Budden
record: allow splitting of hunks by manually editing patches...
r16324 e - edit this change manually
Bryan O'Sullivan
record: improve docs, improve prompts
r5154
Martin Geisler
commands: use minirst parser when displaying help
r9157 s - skip remaining changes to this file
f - record remaining changes to this file
Bryan O'Sullivan
record: improve docs, improve prompts
r5154
Martin Geisler
commands: use minirst parser when displaying help
r9157 d - done, skip remaining changes and files
a - record all changes to all remaining files
q - quit, recording no changes
Bryan O'Sullivan
record: improve docs, improve prompts
r5154
Nicolas Dumazet
record: check that we are not committing a merge before patch selection...
r11237 ? - display help
This command is not available when committing a merge.'''
Bryan O'Sullivan
Add record extension, giving darcs-like interactive hunk picking
r5037
FUJIWARA Katsunori
record: omit meaningless 'commit' suggestion at 'hg commit -i'...
r25796 if not ui.interactive():
Pierre-Yves David
error: get Abort from 'error' instead of 'util'...
r26587 raise error.Abort(_('running non-interactively, use %s instead') %
FUJIWARA Katsunori
record: omit meaningless 'commit' suggestion at 'hg commit -i'...
r25796 'commit')
Pulkit Goyal
py3: handle keyword arguments correctly in hgext/record.py...
r35404 opts[r"interactive"] = True
Jun Wu
record: get rid of ui.backupconfig
r31458 overrides = {('experimental', 'crecord'): False}
with ui.configoverride(overrides, 'record'):
Philippe Pepiot
record: return code from underlying commit
r30158 return commands.commit(ui, repo, *pats, **opts)
Kirill Smelkov
hg qrecord -- like record, but for mq...
r5830
Matt Mackall
record: use command wrapper properly for qnew/qrefresh (issue3001)
r15184 def qrefresh(origfn, ui, repo, *pats, **opts):
Pulkit Goyal
py3: handle keyword arguments correctly in hgext/record.py...
r35404 if not opts[r'interactive']:
Matt Mackall
record: use command wrapper properly for qnew/qrefresh (issue3001)
r15184 return origfn(ui, repo, *pats, **opts)
Idan Kamara
record: add qrefresh -i/--interactive...
r14426 mq = extensions.find('mq')
def committomq(ui, repo, *pats, **opts):
# At this point the working copy contains only changes that
# were accepted. All other changes were reverted.
# We can't pass *pats here since qrefresh will undo all other
# changed files in the patch that aren't in pats.
mq.refresh(ui, repo, **opts)
# backup all changed files
FUJIWARA Katsunori
record: omit meaningless 'qrefresh' suggestion at 'hg qrefresh -i'...
r25798 cmdutil.dorecord(ui, repo, committomq, None, True,
Laurent Charignon
record: change interface of dorecord to accept new filters...
r24309 cmdutil.recordfilter, *pats, **opts)
Kirill Smelkov
hg qrecord -- like record, but for mq...
r5830
Gregory Szorc
record: declare commands using decorator
r21251 # This command registration is replaced during uisetup().
Gregory Szorc
record: define inferrepo in command decorator
r21787 @command('qrecord',
[],
_('hg qrecord [OPTION]... PATCH [FILE]...'),
rdamazio@google.com
help: assigning categories to existing commands...
r40329 helpcategory=command.CATEGORY_COMMITTING,
Gregory Szorc
record: define inferrepo in command decorator
r21787 inferrepo=True)
Kirill Smelkov
qrecord: record complements commit, so qrecord should complement qnew...
r5932 def qrecord(ui, repo, patch, *pats, **opts):
'''interactively record a new patch
Kirill Smelkov
hg qrecord -- like record, but for mq...
r5830
Martin Geisler
Use hg role in help strings
r10973 See :hg:`help qnew` & :hg:`help record` for more information and
Martin Geisler
record: wrap docstrings at 70 characters
r9272 usage.
Kirill Smelkov
hg qrecord -- like record, but for mq...
r5830 '''
FUJIWARA Katsunori
record: omit meaningless 'qnew' suggestion at 'hg qnew -i'...
r25797 return _qrecord('qnew', ui, repo, patch, *pats, **opts)
Kirill Smelkov
hg qrecord -- like record, but for mq...
r5830
FUJIWARA Katsunori
record: omit meaningless 'qnew' suggestion at 'hg qnew -i'...
r25797 def _qrecord(cmdsuggest, ui, repo, patch, *pats, **opts):
Kirill Smelkov
hg qrecord -- like record, but for mq...
r5830 try:
mq = extensions.find('mq')
except KeyError:
Pierre-Yves David
error: get Abort from 'error' instead of 'util'...
r26587 raise error.Abort(_("'mq' extension not loaded"))
Kirill Smelkov
hg qrecord -- like record, but for mq...
r5830
Idan Kamara
record: check patch name is valid before prompting in qrecord
r14424 repo.mq.checkpatchname(patch)
Dan Villiom Podlaski Christiansen
record: function variable naming & signature cleanup....
r10323 def committomq(ui, repo, *pats, **opts):
Pulkit Goyal
py3: handle keyword arguments correctly in hgext/record.py...
r35404 opts[r'checkname'] = False
Kirill Smelkov
qrecord: record complements commit, so qrecord should complement qnew...
r5932 mq.new(ui, repo, patch, *pats, **opts)
Kirill Smelkov
hg qrecord -- like record, but for mq...
r5830
Jun Wu
record: get rid of ui.backupconfig
r31458 overrides = {('experimental', 'crecord'): False}
with ui.configoverride(overrides, 'record'):
Navaneeth Suresh
mq: disable qrecord during histedit (issue5981)...
r41956 cmdutil.checkunfinished(repo)
FUJIWARA Katsunori
record: omit meaningless 'qnew' suggestion at 'hg qnew -i'...
r25797 cmdutil.dorecord(ui, repo, committomq, cmdsuggest, False,
Laurent Charignon
record: make hg record always use the non curses interface...
r25223 cmdutil.recordfilter, *pats, **opts)
Kirill Smelkov
record: refactor record into generic record driver...
r5827
Matt Mackall
record: use command wrapper properly for qnew/qrefresh (issue3001)
r15184 def qnew(origfn, ui, repo, patch, *args, **opts):
Pulkit Goyal
py3: handle keyword arguments correctly in hgext/record.py...
r35404 if opts[r'interactive']:
FUJIWARA Katsunori
record: omit meaningless 'qnew' suggestion at 'hg qnew -i'...
r25797 return _qrecord(None, ui, repo, patch, *args, **opts)
Matt Mackall
record: use command wrapper properly for qnew/qrefresh (issue3001)
r15184 return origfn(ui, repo, patch, *args, **opts)
Bryan O'Sullivan
Add record extension, giving darcs-like interactive hunk picking
r5037
Martin Geisler
record: use uisetup instead of extsetup to register qrecord...
r9710 def uisetup(ui):
Kirill Smelkov
hg qrecord -- like record, but for mq...
r5830 try:
mq = extensions.find('mq')
except KeyError:
return
Augie Fackler
cleanup: use () to wrap long lines instead of \...
r41925 cmdtable["qrecord"] = (
qrecord,
# same options as qnew, but copy them so we don't get
# -i/--interactive for qrecord and add white space diff options
mq.cmdtable['qnew'][1][:] + cmdutil.diffwsopts,
_('hg qrecord [OPTION]... PATCH [FILE]...'))
Idan Kamara
record: add qrefresh -i/--interactive...
r14426
Matt Mackall
record: use command wrapper properly for qnew/qrefresh (issue3001)
r15184 _wrapcmd('qnew', mq.cmdtable, qnew, _("interactively record a new patch"))
Idan Kamara
record: add qrefresh -i/--interactive...
r14426 _wrapcmd('qrefresh', mq.cmdtable, qrefresh,
_("interactively select changes to refresh"))
def _wrapcmd(cmd, table, wrapfn, msg):
Matt Mackall
record: use command wrapper properly for qnew/qrefresh (issue3001)
r15184 entry = extensions.wrapcommand(table, cmd, wrapfn)
Idan Kamara
record: add qrefresh -i/--interactive...
r14426 entry[1].append(('i', 'interactive', None, msg))