[PATCH] histedit: expose histedit plan via tags RFC
Mateusz Kwapich
mitrandir at fb.com
Tue Jan 5 21:32:28 UTC 2016
I usually donât do long histedit chains - that may be why I donât see how
useful is this. Can you tell me more about the intended use cases of such
tags?
On 12/29/15, 2:26 PM, "Mercurial-devel on behalf of Augie Fackler" <mercurial-devel-bounces at selenic.com on behalf of raf at durin42.com> wrote:
>On Fri, Dec 25, 2015 at 03:23:05PM -0600, timeless wrote:
>> # HG changeset patch
>> # User timeless <timeless at mozdev.org>
>> # Date 1451069184 0
>> # Fri Dec 25 18:46:24 2015 +0000
>> # Node ID ea3b6c05af8fe118aafe23f719bce3ad86f3f297
>> # Parent e2aa9c4030c4109e5efa50462ffc6048ca30106f
>> histedit: expose histedit plan via tags RFC
>>
>> This isn't ready for merging, but I'd like people to think about this...
>>
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__public.etherpad-2Dmozilla.org_p_HisteditLabels&d=CwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=dK7q_6fOymlfdGMBe3wUaA&m=Wr5NcAfmeBq5rmUpIolh-XWaMGhdfHgB0IJhhNiexC4&s=g343cEq-wnu5XEOjK_lYnorbhkRKf9P8Fs-UhOD7FB0&e=
>
>Interesting thought. Probably worth talking to Mateusz (from Facebook)
>and writing up a more complete Plan page on the wiki. I'd probably try
>and push you towards using some sort of namespace rather than tags for
>this as well, but that might defeat the purpose a littl I guess. Seems
>like an area that's worth pursuing more though, for users with really
>long histedit chains.
>
>>
>> $ EDITOR=cat hg histedit --edit-plan
>> mess 4a16ba62654e 2 1
>> drop 5d1098ab227e 3 2
>> fold 6767ceabe4dd 4 3
>> roll 361cfb0601fc 5 4
>> pick 405aae9a557f 6 5
>> pick 629dbc9cce33 7 6
>> pick fb6bc3d9960a 8 7
>> pick c67e1d4dd153 9 8
>>
>> $ hg log -G --template "{rev}\n{tags}"
>> @ 12
>> | h_2_applied tip
>> o 11
>> h_0_applied
>> o 10
>> | h_0 h_0_origin
>> o 9
>> | h_10 h_10_pick
>> o 8
>> | h_9 h_9_pick
>> o 7
>> | h_8 h_8_pick
>> o 6
>> | h_7 h_7_pick
>> o 5
>> | h_6 h_6_roll
>> o 4
>> | h_5 h_5_fold
>> o 3
>> | h-next h_4 h_4_drop
>> o 2
>> | h-current h_3 h_3_mess
>> o 1
>> | h-prev h_2 h_2_origin
>> o 0
>> h_1 h_1_dropped
>>
>> diff --git a/hgext/histedit.py b/hgext/histedit.py
>> --- a/hgext/histedit.py
>> +++ b/hgext/histedit.py
>> @@ -193,6 +193,7 @@
>> from mercurial import scmutil
>> from mercurial import util
>> from mercurial import obsolete
>> +from mercurial import localrepo
>> from mercurial import merge as mergemod
>> from mercurial.lock import release
>> from mercurial.i18n import _
>> @@ -1260,7 +1261,7 @@
>> 1) the list of final node
>> 2) the list of temporary node
>>
>> - This meant to be used on abort as less data are required in this case.
>> + This is meant to be used on abort as less data are required in this case.
>> """
>> replacements = state.replacements
>> allsuccs = set()
>> @@ -1428,6 +1429,55 @@
>> ui.write(_('hist: %s (histedit --continue)\n') %
>> (ui.label(_('%d remaining'), 'histedit.remaining') %
>> len(state.actions)))
>> +def reposetup(ui, repo):
>> + class histeditrepo(repo.__class__):
>> + def _findtags(self):
>> + '''augment tags from base class with patch tags'''
>> + result = super(histeditrepo, self)._findtags()
>> +
>> + histedittags = []
>> +
>> + state = histeditstate(repo)
>> +
>> + if not state.inprogress():
>> + return result
>> + state.read()
>> +
>> + i = 0
>> + def addstate(rev, tag):
>> + histedittags.append((rev, "h_%d" % i))
>> + histedittags.append((rev, "h_%d_%s" % (i, tag)))
>> + for (origin, applied) in state.replacements:
>> + if len(applied):
>> + histedittags.append((applied[0], "h_%d_%s" % (i, 'applied')))
>> + addstate(origin, 'origin')
>> + else:
>> + addstate(origin, 'dropped')
>> + i += 1
>> + if i != 0:
>> + histedittags.append((histedittags[-1][0], 'h-prev'))
>> + if state.actions:
>> + histedittags.append((state.actions[0].node, 'h-current'))
>> + if len(state.actions) > 1:
>> + histedittags.append((state.actions[1].node, 'h-next'))
>> + for a in state.actions:
>> + addstate(a.node, a.verb)
>> + i += 1
>> + if not histedittags:
>> + return result
>> +
>> + tags = result[0]
>> + for item in histedittags:
>> + if item[1] in tags:
>> + self.ui.warn(_('tag %s overrides histedit concept of same '
>> + 'name\n') % item[1])
>> + else:
>> + tags[item[1]] = item[0]
>> +
>> + return result
>> +
>> + if repo.local():
>> + repo.__class__ = histeditrepo
>>
>> def extsetup(ui):
>> cmdutil.summaryhooks.add('histedit', summaryhook)
>> _______________________________________________
>> Mercurial-devel mailing list
>> Mercurial-devel at selenic.com
>> https://selenic.com/mailman/listinfo/mercurial-devel
>_______________________________________________
>Mercurial-devel mailing list
>Mercurial-devel at selenic.com
>https://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list