diff --git a/hgext/histedit.py b/hgext/histedit.py --- a/hgext/histedit.py +++ b/hgext/histedit.py @@ -143,6 +143,9 @@ as running ``hg histedit 836302820282``. 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 @@ revset in your configuration file:: [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: @@ -1225,10 +1236,17 @@ def verifyactions(actions, state, ctxs): 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 @@ -159,7 +159,7 @@ Test that missing revisions are detected > 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 @@ -148,4 +148,26 @@ Drop the last changeset 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 + $ 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 +