[PATCH 2 of 2 V2] histedit: add experimental config for using the first word of the commit
timeless
timeless at gmail.com
Tue May 24 20:39:37 UTC 2016
Personally I'm more likely to do roll! {sha} -- in fact, of late, I've
been writing commits more or less of this form (before upgrading to
get the feature that was being implemented/discussed).
a foo
b bar
c foo
d baz
e roll! foo
f roll! foo
g roll! bar
h fold! foo
i roll! foo
e and f should both roll onto c, g onto b
i should be indeterminate, since it would depend on whether the fold
changes the commit message of c*.
On Tue, May 24, 2016 at 4:31 PM, Martin von Zweigbergk via
Mercurial-devel <mercurial-devel at mercurial-scm.org> wrote:
> 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
> _______________________________________________
> 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