[PATCH V3] histedit: delete to drop
Augie Fackler
raf at durin42.com
Fri Dec 18 10:25:56 CST 2015
On Tue, Dec 15, 2015 at 01:42:20PM -0800, Mateusz Kwapich wrote:
> # HG changeset patch
> # User Mateusz Kwapich <mitrandir at fb.com>
> # Date 1450214829 28800
> # Tue Dec 15 13:27:09 2015 -0800
> # Node ID 1b06a38d0bc02461481d9b23e5d3adf41e852e46
> # Parent 3870f0e279ebcab96996d796c073b69d0c2f45d2
> histedit: delete to drop
Queued, many thanks. Sorry for the slow review on this, it's been a
busy week for me.
>
> The default behaviour to forbid this makes a lot of sense for novice users
> because it's safeguarding them from dangerous behavior but making it
> configurable will be apprieciated by power users in at least one big
> organization.
>
> It allows an user to look an histedit rules from declarative perspective and
> make the rules reflect the state after histedit. If we can move lines t move
> commits why can't we drop lines to drop commits?
>
> Let's put this behind config knob and inform users about this feature the very
> moment they are trying to use it so they can choose desired behaviour.
>
> diff --git a/hgext/histedit.py b/hgext/histedit.py
> --- a/hgext/histedit.py
> +++ b/hgext/histedit.py
> @@ -143,6 +143,9 @@
> repository that Mercurial does not detect to be related to the source
> repo, you can add a ``--force`` option.
>
> +Config
> +------
> +
> Histedit rule lines are truncated to 80 characters by default. You
> can customize this behavior by setting a different length in your
> configuration file::
> @@ -156,6 +159,14 @@
>
> [histedit]
> defaultrev = only(.) & draft()
> +
> +By default each edited revision needs to be present in histedit commands.
> +To remove revision you need to use ``drop`` operation. You can configure
> +the drop to be implicit for missing commits by adding:
> +
> + [histedit]
> + dropmissing = True
> +
> """
>
> try:
> @@ -1262,10 +1273,17 @@
> ha[:12])
> seen.add(ha)
> missing = sorted(expected - seen) # sort to stabilize output
> - if missing:
> +
> + if state.repo.ui.configbool('histedit', 'dropmissing'):
> + drops = [drop(state, node.bin(n)) for n in missing]
> + # put the in the beginning so they execute immediately and
> + # don't show in the edit-plan in the future
> + actions[:0] = drops
> + elif missing:
> raise error.Abort(_('missing rules for changeset %s') %
> missing[0][:12],
> - hint=_('use "drop %s" to discard the change') % missing[0][:12])
> + hint=_('use "drop %s" to discard, see also: '
> + '"hg help -e histedit.config"') % missing[0][:12])
>
> def newnodestoabort(state):
> """process the list of replacements to return
> diff --git a/tests/test-histedit-arguments.t b/tests/test-histedit-arguments.t
> --- a/tests/test-histedit-arguments.t
> +++ b/tests/test-histedit-arguments.t
> @@ -164,7 +164,7 @@
> > pick 08d98a8350f3 4 five
> > EOF
> abort: missing rules for changeset c8e68270e35a
> - (use "drop c8e68270e35a" to discard the change)
> + (use "drop c8e68270e35a" to discard, see also: "hg help -e histedit.config")
> [255]
>
> Test that extra revisions are detected
> diff --git a/tests/test-histedit-drop.t b/tests/test-histedit-drop.t
> --- a/tests/test-histedit-drop.t
> +++ b/tests/test-histedit-drop.t
> @@ -151,4 +151,27 @@
> summary: a
>
>
> - $ cd ..
> + $ hg histedit cb9a9f314b8b --commands - 2>&1 << EOF | fixbundle
> + > pick cb9a9f314b8b a
> + > pick ee283cb5f2d5 e
> + > EOF
> + abort: missing rules for changeset a4f7421b80f7
> + (use "drop a4f7421b80f7" to discard, see also: "hg help -e histedit.config")
> + $ hg --config histedit.dropmissing=True histedit cb9a9f314b8b --commands - 2>&1 << EOF | fixbundle
> + > pick cb9a9f314b8b a
> + > pick ee283cb5f2d5 e
> + > EOF
> + 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
> + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> + $ hg log --graph
> + @ changeset: 1:e99c679bf03e
> + | tag: tip
> + | user: test
> + | date: Thu Jan 01 00:00:00 1970 +0000
> + | summary: e
> + |
> + o changeset: 0:cb9a9f314b8b
> + user: test
> + date: Thu Jan 01 00:00:00 1970 +0000
> + summary: a
> +
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list