Evolve feedbacks
Gilles Moris
gilles.moris at free.fr
Wed May 20 09:10:22 UTC 2015
Le 20/05/2015 02:06, Matt Harbison a écrit :
> On Tue, 19 May 2015 03:07:21 -0400, Gilles Moris
> <gilles.moris at free.fr> wrote:
>
>> I am currently a beginner with evolve, though I have followed the
>> introduction of the concepts those last years.
>>
>> Currently, I am a MQ user. I introduced its usage at work, and
>> everybody is pleased with its use, though it have some limitations
>> that evolve remedy elegantly.
>> First, I am overall pleased with the usage of evolve, so I won't come
>> back on its intrinsics quality, like non destructiveness, easy
>> merging of downstream patches, etc...
>>
>> So below is what I am missing currently. May be some of those already
>> exists.
>>
>> - I would have expected an "evolve --list", much like there is a
>> "resolve --list". Basically, I need a roadmap of all the evolutions I
>> need to perform to stabilize my work tree. I guess this could be
>> partially addressed with some revsets, or "summary --verbose". But I
>> am expecting more than that. What are the suspended changesets that
>> make some commits unstable ? What is the public commit that bumped my
>> changeset? What is the list of divergent commit? I would expect an
>> "evolve --list" to give that. Giving the phases in the summary
>> command was part of the same move.
>>
>> - Even though evolve is non destructive, it is not obvious how to
>> recover that past information:
>> * I use allprecursors() revset to get access to that, but for a
>> typical user, it is not very easy to understand which revset to use.
>> In addition, it usually won't display anything, which is my second
>> bullet:
>> * I think some revsets, implying hidden commit should probably
>> implicitely trigger --hidden. I don't know if this can be considered
>> a bug, but having to do: "hg log -r 'hidden()' --hidden" seems weird.
>> And the "--hidden" flag is not very dicoverable, buried in hg help -v
>> (which might be on purpose). The same could apply to precursors(),
>> successors().
>
> I thought there was a bug written for this, but maybe it was just
> recent chatter on the main mailing list.
>
>> * Is there a way to display the meta-graph of the precursors /
>> successors of a commit ? This would enable to show how we get to a
>> particular commit.
>
> You mean this?
>
> $ hg log -G --hidden -r "allprecursors(26993)"
No, this shows the graph of the mercurial revlogs. What I would like is
a graph of the obsolescence markers.
>
>> * By extension, I would like to see the incremental diffs
>> introduced by each precursor. A dumb implementation for a linear
>> obsolete meta-graph can be made by doing repeatidly: "hg diff
>> --hidden --rev precuror1 --rev precursor2". Note again --hidden
>> needed. Note also that rebase will bring unrelated changes into the
>> diff. But at least, that's a start.
>
> I miss this a lot from my MQ usage- the ability to see just how my
> changes were impacted:
>
> $ hg ci --mq
> $ hg pull
> $ hg rebase -s qbase -d tip
> $ hg bcompare --mq
>
> Here's a crude script I use to get roughly the same as the last line,
> so that it avoids all of the noise in the linear diff:
>
> #!/bin/sh
>
> node=$1
> #hash1=$(hg --hidden log -r "limit(precursors($node),1)" -T
> "{node|short}")
> #hash2=$(hg log -r $node -T "{node|short}")
> hash1=$(hg --hidden log -r $1 -T "{node|short}")
> hash2=$(hg --hidden log -r $2 -T "{node|short}")
>
> hg --hidden export -r "$hash1" -o '/tmp/%h.patch'
> hg --hidden export -r "$hash2" -o '/tmp/%h.patch'
>
> echo "comparing $hash1.patch to $hash2.patch"
> bcompare.exe "/tmp/$hash1.patch" "/tmp/$hash2.patch"
>
>
> Just invoke it like:
>
> $ odiff.sh 'precursors(x)' x
Thanks!
>
> Obviously I can't put this in contrib with the diff tool hardcoded and
> no cleanup, so I started trying to wrap extdiff. But I ran into some
> issues, and haven't gotten back to it in awhile. I took out the
> internal precursors assumption, because it is also useful to compare
> grafts. BTW, the odiff name comes from the 'odiff' command evolve
> adds, but I think that it includes the linear noise.
>
>
>> - With prune, you can remove a patch in a linear series. How do you
>> do the reverse? Insert a new patch in a linear series. AFAICS, this
>> implies: hg update + hg commit + hg rebase. Right? If yes, this may
>> deserve a command, much like prune.
>> * Related: what would be the equivalent to: hg qpush --move. A few
>> rebase?
>
> I think that makes sense. I don't use histedit, so maybe there's a
> better way. It's not specifically mentioned here, but this is an MQ
> -> evolve cheatsheet:
>
> http://mercurial.selenic.com/wiki/MqDeprecationPlan
Yes indeed, hg graft -O seems to do it.
http://evolution.experimentalworks.net/doc/from-mq.html
I still think there might be in the end a specific command for that.
Thanks.
Gilles.
>
>> * Generalization: how do you handle patch re-ordering with evolve?
>>
>> - I did not find any high level roadmap of the roll out of evolve.
>> Will it be merged back in the main HG repo as an extension? What are
>> the condition for that? What is the plan to merge it as standard HG
>> commands? When will that happen? What is missing for that to happen?
>>
>> Regards.
>> Gilles.
>> PS: given the low traffic on evolve mailing list, should this go to
>> mercurial-devel instead?
>> _______________________________________________
>> Evolve-testers mailing list
>> Evolve-testers at selenic.com
>> http://selenic.com/mailman/listinfo/evolve-testers
More information about the Evolve-testers
mailing list