author | Pierre-Yves David <pierre-yves.david@octobus.net> |
Wed, 15 Feb 2023 20:48:51 +0100 | |
changeset 50123 | 059910ac7b76 |
parent 49883 | e78a41686464 |
child 51901 | f4733654f144 |
permissions | -rw-r--r-- |
33404
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
1 |
# amend.py - provide the amend command |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
2 |
# |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
3 |
# Copyright 2017 Facebook, Inc. |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
4 |
# |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
5 |
# This software may be used and distributed according to the terms of the |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
6 |
# GNU General Public License version 2 or any later version. |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
7 |
"""provide the amend command (EXPERIMENTAL) |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
8 |
|
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
9 |
This extension provides an ``amend`` command that is similar to |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
10 |
``commit --amend`` but does not prompt an editor. |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
11 |
""" |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
12 |
|
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
13 |
|
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
14 |
from mercurial.i18n import _ |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
15 |
from mercurial import ( |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
16 |
cmdutil, |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
17 |
commands, |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
18 |
registrar, |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
19 |
) |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
20 |
|
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
21 |
# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
22 |
# extensions which SHIP WITH MERCURIAL. Non-mainline extensions should |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
23 |
# be specifying the version(s) of Mercurial they are tested with, or |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
24 |
# leave the attribute unspecified. |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
25 |
testedwith = b'ships-with-hg-core' |
33404
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
26 |
|
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
27 |
cmdtable = {} |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
28 |
command = registrar.command(cmdtable) |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
29 |
|
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
30 |
|
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
31 |
@command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
32 |
b'amend', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
33 |
[ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
34 |
( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
35 |
b'A', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
36 |
b'addremove', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
37 |
None, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
38 |
_(b'mark new/missing files as added/removed before committing'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
39 |
), |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
40 |
(b'e', b'edit', None, _(b'invoke editor on commit messages')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
41 |
(b'i', b'interactive', None, _(b'use interactive mode')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
42 |
( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
43 |
b'', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
44 |
b'close-branch', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
45 |
None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
46 |
_(b'mark a branch as closed, hiding it from the branch list'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
47 |
), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
48 |
(b's', b'secret', None, _(b'use the secret phase for committing')), |
49883
e78a41686464
amend: add a --draft option to set phase to draft
Martin von Zweigbergk <martinvonz@google.com>
parents:
48966
diff
changeset
|
49 |
(b'', b'draft', None, _(b'use the draft phase for committing')), |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
50 |
(b'n', b'note', b'', _(b'store a note on the amend')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
51 |
] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
52 |
+ cmdutil.walkopts |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
53 |
+ cmdutil.commitopts |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
54 |
+ cmdutil.commitopts2 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
55 |
+ cmdutil.commitopts3, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
56 |
_(b'[OPTION]... [FILE]...'), |
40293
c303d65d2e34
help: assigning categories to existing commands
rdamazio@google.com
parents:
35025
diff
changeset
|
57 |
helpcategory=command.CATEGORY_COMMITTING, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
58 |
inferrepo=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42939
diff
changeset
|
59 |
) |
33404
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
60 |
def amend(ui, repo, *pats, **opts): |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
61 |
"""amend the working copy parent with all or specified outstanding changes |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
62 |
|
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
63 |
Similar to :hg:`commit --amend`, but reuse the commit message without |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
64 |
invoking editor, unless ``--edit`` was set. |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
65 |
|
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
66 |
See :hg:`help commit` for more details. |
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
67 |
""" |
49883
e78a41686464
amend: add a --draft option to set phase to draft
Martin von Zweigbergk <martinvonz@google.com>
parents:
48966
diff
changeset
|
68 |
cmdutil.check_at_most_one_arg(opts, 'draft', 'secret') |
47434
54849b65dc5f
cmdutil: make checknotesize() work on str-keyed opts
Martin von Zweigbergk <martinvonz@google.com>
parents:
47433
diff
changeset
|
69 |
cmdutil.check_note_size(opts) |
42937
7e9997041781
amend: prevent '\n' in the note string
Matt Harbison <matt_harbison@yahoo.com>
parents:
42936
diff
changeset
|
70 |
|
33404
0d5afd360e9e
amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
71 |
with repo.wlock(), repo.lock(): |
47433
6ce89165eaa0
amend: work mostly with str-type **opts for simplicity
Martin von Zweigbergk <martinvonz@google.com>
parents:
43077
diff
changeset
|
72 |
if not opts.get('logfile'): |
6ce89165eaa0
amend: work mostly with str-type **opts for simplicity
Martin von Zweigbergk <martinvonz@google.com>
parents:
43077
diff
changeset
|
73 |
opts['message'] = opts.get('message') or repo[b'.'].description() |
6ce89165eaa0
amend: work mostly with str-type **opts for simplicity
Martin von Zweigbergk <martinvonz@google.com>
parents:
43077
diff
changeset
|
74 |
opts['amend'] = True |
6ce89165eaa0
amend: work mostly with str-type **opts for simplicity
Martin von Zweigbergk <martinvonz@google.com>
parents:
43077
diff
changeset
|
75 |
return commands._docommit(ui, repo, *pats, **opts) |