hgext/amend.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Wed, 14 Apr 2021 11:30:49 +0200
changeset 46938 a48f15f1c178
parent 43077 687b865b95ad
child 47433 6ce89165eaa0
permissions -rw-r--r--
patchbomb: use `get_unique_pull_path` The patchbomb code does not support multiple destinations yet. It would not be too hard to implemented since `hg outgoing` does. However that is a bit too much of a detour right now. In addition that kind of "select outgoing changesets for processing" code exist for various commands so the best would be to factor it out later. Let us use the dedicated API until this is solved. This comes with a small output change in the test that I find more accurate. So I kept it. Differential Revision: https://phab.mercurial-scm.org/D10405
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
from __future__ import absolute_import
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    14
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    15
from mercurial.i18n import _
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    16
from mercurial import (
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    17
    cmdutil,
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    18
    commands,
35025
3e549546a6e9 py3: handle keyword arguments in hgext/amend.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 34889
diff changeset
    19
    pycompat,
33404
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    20
    registrar,
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    21
)
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    22
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    23
# 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
    24
# 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
    25
# 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
    26
# leave the attribute unspecified.
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    27
testedwith = b'ships-with-hg-core'
33404
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    28
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    29
cmdtable = {}
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    30
command = registrar.command(cmdtable)
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    31
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    32
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    33
@command(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    34
    b'amend',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    35
    [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    36
        (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    37
            b'A',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    38
            b'addremove',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    39
            None,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    40
            _(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
    41
        ),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    42
        (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
    43
        (b'i', b'interactive', None, _(b'use interactive mode')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    44
        (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    45
            b'',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    46
            b'close-branch',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    47
            None,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    48
            _(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
    49
        ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    50
        (b's', b'secret', None, _(b'use the secret phase for committing')),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    51
        (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
    52
    ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    53
    + cmdutil.walkopts
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    54
    + cmdutil.commitopts
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    55
    + cmdutil.commitopts2
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    56
    + cmdutil.commitopts3,
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    57
    _(b'[OPTION]... [FILE]...'),
40293
c303d65d2e34 help: assigning categories to existing commands
rdamazio@google.com
parents: 35025
diff changeset
    58
    helpcategory=command.CATEGORY_COMMITTING,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    59
    inferrepo=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42939
diff changeset
    60
)
33404
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    61
def amend(ui, repo, *pats, **opts):
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    62
    """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
    63
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    64
    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
    65
    invoking editor, unless ``--edit`` was set.
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    66
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    67
    See :hg:`help commit` for more details.
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    68
    """
35025
3e549546a6e9 py3: handle keyword arguments in hgext/amend.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 34889
diff changeset
    69
    opts = pycompat.byteskwargs(opts)
42937
7e9997041781 amend: prevent '\n' in the note string
Matt Harbison <matt_harbison@yahoo.com>
parents: 42936
diff changeset
    70
    cmdutil.checknotesize(ui, opts)
7e9997041781 amend: prevent '\n' in the note string
Matt Harbison <matt_harbison@yahoo.com>
parents: 42936
diff changeset
    71
33404
0d5afd360e9e amend: new extension providing the amend command
Jun Wu <quark@fb.com>
parents:
diff changeset
    72
    with repo.wlock(), repo.lock():
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    73
        if not opts.get(b'logfile'):
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    74
            opts[b'message'] = opts.get(b'message') or repo[b'.'].description()
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    75
        opts[b'amend'] = True
35025
3e549546a6e9 py3: handle keyword arguments in hgext/amend.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 34889
diff changeset
    76
        return commands._docommit(ui, repo, *pats, **pycompat.strkwargs(opts))