[PATCH 2 of 2 V2] histedit: add experimental config for using the first word of the commit

Augie Fackler raf at durin42.com
Mon May 23 15:54:23 EDT 2016


On Tue, May 17, 2016 at 04:12:16PM -0700, Sean Farley wrote:
> # HG changeset patch
> # User Sean Farley <sean at farley.io>
> # Date 1462583556 25200
> #      Fri May 06 18:12:36 2016 -0700
> # Node ID 75fc0323200de860fafc4203714f334224673af4
> # Parent  d4c7748adeeadbb736376a57030c5255f3ac8bfb
> # EXP-Topic histedit-auto
> histedit: add experimental config for using the first word of the commit

queued these, interested to see how they work out in practice. Ryan,
I'd be interested to hear what happens if you promote this to your
users.

>
> This allows users to start a commit with "verb! ..." so that when this is
> opened in histedit, the default action will be "verb". For example, "roll! foo"
> will default to the action "roll". Currently, we'll allow any known verb to be
> used but this is experimental.
>
> diff --git a/hgext/histedit.py b/hgext/histedit.py
> --- a/hgext/histedit.py
> +++ b/hgext/histedit.py
> @@ -416,10 +416,18 @@ class histeditaction(object):
>          """
>          ctx = self.repo[self.node]
>          summary = ''
>          if ctx.description():
>              summary = ctx.description().splitlines()[0]
> +
> +        fword = summary.split(' ', 1)[0].lower()
> +        # if it doesn't end with the special character '!' just skip this
> +        if (self.repo.ui.configbool("experimental", "histedit.autoverb") and
> +            initial and fword.endswith('!')):
> +            fword = fword[:-1]
> +            if fword in primaryactions | secondaryactions | tertiaryactions:
> +                self.verb = fword
>          line = '%s %s %d %s' % (self.verb, ctx, ctx.rev(), summary)
>          # trim to 75 columns by default so it's not stupidly wide in my editor
>          # (the 5 more are left for verb)
>          maxlen = self.repo.ui.configint('histedit', 'linelen', default=80)
>          maxlen = max(maxlen, 22) # avoid truncating hash
> 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
> @@ -497,5 +497,55 @@ amend should not be blocked by the ongoi
>    > [experimental]
>    > evolution=createmarkers,allowunstable
>    > EOF
>    $ hg commit --amend -m 'allow this fold'
>    $ hg histedit --continue
> +
> +  $ cd ..
> +
> +Test autoverb feature
> +
> +  $ hg init autoverb
> +  $ cd autoverb
> +  $ echo alpha >> alpha
> +  $ hg addr
> +  adding alpha
> +  $ hg ci -m one
> +  $ echo alpha >> alpha
> +  $ hg ci -m two
> +  $ echo alpha >> alpha
> +  $ hg ci -m "roll! three"
> +
> +  $ hg log --style compact --graph
> +  @  2[tip]   1b0b0b04c8fe   1970-01-01 00:00 +0000   test
> +  |    roll! three
> +  |
> +  o  1   579e40513370   1970-01-01 00:00 +0000   test
> +  |    two
> +  |
> +  o  0   6058cbb6cfd7   1970-01-01 00:00 +0000   test
> +       one
> +
> +
> +Check that 'roll' is selected by default
> +
> +  $ HGEDITOR=cat hg histedit 1 --config experimental.histedit.autoverb=True
> +  pick 579e40513370 1 two
> +  roll 1b0b0b04c8fe 2 roll! three
> +
> +  # Edit history between 579e40513370 and 1b0b0b04c8fe
> +  #
> +  # Commits are listed from least to most recent
> +  #
> +  # You can reorder changesets by reordering the lines
> +  #
> +  # Commands:
> +  #
> +  #  e, edit = use commit, but stop for amending
> +  #  m, mess = edit commit message without changing commit content
> +  #  p, pick = use commit
> +  #  d, drop = remove commit from history
> +  #  f, fold = use commit, but combine it with the one above
> +  #  r, roll = like fold, but discard this commit's description
> +  #
> +
> +  $ cd ..
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list