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

Martin von Zweigbergk martinvonz at google.com
Tue May 24 16:31:32 EDT 2016


On Tue, May 24, 2016 at 1:28 PM, Sean Farley <sean at farley.io> wrote:
>
> Martin von Zweigbergk <martinvonz at google.com> writes:
>
>> On Tue, May 17, 2016 at 4:12 PM, Sean Farley <sean at farley.io> 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
>>>
>>> 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"
>>
>> Having used git before, I would expect "roll! one" to tell histedit to
>> also apply this patch efter the one with commit message (starting
>> with) "one". Future plans?
>
> Sure, that sounds cool. What happens with multiple commit messages? e.g.
>
> one
> two
> roll! one
> roll! one
>
> ?

I'd assume:

one
roll! one # first one
roll! one # second one
two


More information about the Mercurial-devel mailing list