[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: RFC: svn mergeinfo improvements for 1.5

From: Troy Curtis Jr <troycurtisjr_at_gmail.com>
Date: Tue, 18 Mar 2008 21:19:32 -0500

On Tue, Mar 18, 2008 at 3:49 PM, Paul Burba <ptburba_at_gmail.com> wrote:
> Today the svn mergeinfo command gives basic information on what
> revisions have been merged to a path and what revisions are eligible
> to be merged to that path, e.g.:
> >svn mergeinfo merge_tests-90\A_COPY
> Path: merge_tests-90\A_COPY
> Source path: /A
> Merged ranges: r1:6
> Eligible ranges: r6:7
> This meets our basic requirement for change set availability auditing,
> see http://svn.collab.net/repos/svn/trunk/www/merge-tracking/requirements.html#change-set-availability
> There are some problems though:
> 1) The eligible ranges can include revisions that don't apply to the
> merge source, see
> http://subversion.tigris.org/issues/show_bug.cgi?id=3126
> 2) You can specify multiple targets but only one --from-source, is
> this ever going to be useful? Is the support of multiple targets even
> that useful? It adds another level of indentation to the output,
> which is already a bit ugly to start with (see 3).
> 3) When there are a *lot* of merged/eligible ranges then the output is
> not easily parsed. Look at a 1.5.x WC for example:
> >svn mergeinfo \svn\src-branch
> Path: \SVN\src-branch
> Source path: /trunk
> Merged ranges: r0:29080, r29084:29089, r29090:29091, r29093:29107,
> r29110:29111, r29113:29114, r29116:29117, r29125:29127, r29128:29133,
> r29134:29150,
> r29152:29164, r29165:29166, r29173:29174, r29175:29186, r29187:29189,
> r29192:29194, r29197:29200, r29201:29206, r29207:29251, r29253:29256,
> r29260:29261, r
> 29266:29273, r29276:29277, r29279:29281, r29283:29284, r29286:29303,
> r29304:29307, r29308:29325, r29326:29343, r29344:29348, r29357:29379,
> r29380:29392, r2
> 9396:29397, r29398:29399, r29400:29401, r29408:29409, r29411:29412,
> r29413:29415, r29416:29423, r29424:29426, r29428:29429, r29432:29434,
> r29435:29438, r29
> 439:29447, r29448:29466, r29467:29478, r29481:29482, r29483:29484,
> r29485:29487, r29488:29489, r29490:29491, r29492:29493, r29495:29496,
> r29497:29498, r295
> 07:29508, r29526:29528, r29530:29531, r29532:29533, r29538:29540,
> r29541:29542, r29543:29544, r29545:29546, r29550:29551, r29552:29553,
> r29555:29556, r2955
> 8:29559, r29564:29565, r29566:29569, r29570:29578, r29580:29581,
> r29582:29583, r29590:29591, r29593:29594, r29599:29600, r29602:29603,
> r29606:29607, r29610
> :29611, r29612:29614, r29618:29619, r29622:29623, r29624:29626,
> r29629:29631, r29633:29634, r29641:29642, r29647:29648, r29649:29650,
> r29655:29656, r29658:
> 29660, r29662:29664, r29670:29672, r29676:29680, r29691:29692,
> r29737:29739, r29741:29744, r29745:29746, r29750:29751, r29762:29763,
> r29768:29770, r29783:2
> 9784, r29786:29787, r29820:29821, r29823:29824, r29827:29828,
> r29834:29835, r29854:29855, r29867:29869, r29877:29878, r29882:29884
> Eligible ranges: r29080:29084, r29089:29090, r29091:29093,
> r29107:29110, r29111:29113, r29114:29116, r29117:29125, r29127:29128,
> r29133:29134, r29150:2
> 9152, r29164:29165, r29166:29173, r29174:29175, r29186:29187,
> r29189:29192, r29194:29197, r29200:29201, r29206:29207, r29251:29253,
> r29256:29260, r29261:29
> 266, r29273:29276, r29277:29279, r29281:29283, r29284:29286,
> r29303:29304, r29307:29308, r29325:29326, r29343:29344, r29348:29357,
> r29379:29380, r29392:293
> 96, r29397:29398, r29399:29400, r29401:29408, r29409:29411,
> r29412:29413, r29415:29416, r29423:29424, r29426:29428, r29429:29432,
> r29434:29435, r29438:2943
> 9, r29447:29448, r29466:29467, r29478:29481, r29482:29483,
> r29484:29485, r29487:29488, r29489:29490, r29491:29492, r29493:29495,
> r29496:29497, r29498:29507
> , r29508:29526, r29528:29530, r29531:29532, r29533:29538,
> r29540:29541, r29542:29543, r29544:29545, r29546:29550, r29551:29552,
> r29553:29555, r29556:29558,
> r29559:29564, r29565:29566, r29569:29570, r29578:29580, r29581:29582,
> r29583:29590, r29591:29593, r29594:29599, r29600:29602, r29603:29606,
> r29607:29610,
> r29611:29612, r29614:29618, r29619:29622, r29623:29624, r29626:29629,
> r29631:29633, r29634:29641, r29642:29647, r29648:29649, r29650:29655,
> r29656:29658, r
> 29660:29662, r29664:29670, r29672:29676, r29680:29691, r29692:29737,
> r29739:29741, r29744:29745, r29746:29750, r29751:29762, r29763:29768,
> r29770:29783, r2
> 9784:29786, r29787:29820, r29821:29823, r29824:29827, r29828:29834,
> r29835:29854, r29855:29867, r29869:29877, r29878:29882, r29884:29943
> Ouch! For the merged ranges this is little better than doing a propget:
> >svn pg svn:mergeinfo \svn\src-branch
> /trunk:1-29080,29085-29089,29091,29094-29107,29111,29114,29117,29126-29127,29129-29133,29135-29150,29153-29164,29166,29174,29176-29186,29188-29189,29193-29
> 194,29198-29200,29202-29206,29208-29251,29254-29256,29261,29267-29273,29277,29280-29281,29284,29287-29303,29305-29307,29309-29325,29327-29343,29345-29348,2
> 9358-29379,29381-29392,29397,29399,29401,29409,29412,29414-29415,29417-29423,29425-29426,29429,29433-29434,29436-29438,29440-29447,29449-29466,29468-29478,
> 29482,29484,29486-29487,29489,29491,29493,29496,29498,29508,29527-29528,29531,29533,29539-29540,29542,29544,29546,29551,29553,29556,29559,29565,29567-29569
> ,29571-29578,29581,29583,29591,29594,29600,29603,29607,29611,29613-29614,29619,29623,29625-29626,29630-29631,29634,29642,29648,29650,29656,29659-29660,2966
> 3-29664,29671-29672,29677-29680,29692,29738-29739,29742-29744,29746,29751,29763,29769-29770,29784,29787,29821,29824,29828,29835,29855,29868-29869,29878,298
> ~~~~~
> Anyway, Mike, Julian, and I were discussing these problems today and
> came to a consensus that the following changes would be nice to get
> into 1.5:
> A) When displaying eligible revisions display only those that affect
> the merge source (i.e. don't display revisions, which if merged, would
> be no-ops).

I haven't played with the merge-tracking features in 1.5 too much yet, so it
blows my mind that this isn't already true. That would go a long way toward
de-cluttering the output for sure!

> B) Support only one target, still support --from-source filter.
> C) By default show only merged revisions. Add a new option
> --merged-revs ARG ('merged', 'eligible'). Yes, as things stand now,
> it would make more sense to just use an option like '--show-eligible',
> but we want to be ready for the day when true revision blocking is
> available so we can easily see --merged-revs=blocked.

At the risk of bike-shedding a little I do have a suggestion here. Change the
'--merged-revs' to something like '--display-revs'. The option
'--merged-revs=blocked' and '--merged-revs=eligible' doesn't "read"
quite right.
But '--display-revs=eligible' immediately says what it is doing: Displaying the
eligible revisions.

I also think the default should be show eligible ranges since that tends to be
the more interesting case. Otherwise I think people will effectively have to
type this EVERY innovaction of the mergeinfo subcommand:

svn mergeinfo --display-revs=eligible

That's a lot of typing for something that you need to use frequently. Thus
far at work very very few times have I executed a command to determine what
HAS been merged, it's always to determine what HAS NOT been merged. I don't
think I am alone here, as the svnmerge script has a command NAMED 'available'.

> D) Print the revision lists as one range per line, e.g.:
> >svn mergeinfo \svn\src-branch --merged-revs eligible
> Source path: /trunk
> Eligible ranges:
> r29080:29084
> r29089:29090
> r29091:29093
> r29107:29110
> .
> <snip>
> .
> r29869:29877
> r29878:29882
> r29884:29943

Much more readable, even if you do have to pipe it to a pager to make it
useful. :)

> These changes make svn mergeinfo a bit more useful today, while
> allowing subsequent changes in 1.6 to be made based on user feedback
> (e.g. --verbose could show log info for merged/eligible revisions).
> Any objections to these changes and/or the goal of getting them into
> 1.5? Alternate suggestions?

Personally the lack of supporting true block operations in 1.5 is a deal
breaker for using it at work, so I don't have an opinion on getting it into
1.5. However, I do think those suggestions will go a long way to improving
the usefullness of the mergeinfo command.

> Paul
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
> For additional commands, e-mail: dev-help_at_subversion.tigris.org


Beware of spyware. If you can, use the Firefox browser. - USA Today
Download now at http://getfirefox.com
Registered Linux User #354814 ( http://counter.li.org/)
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-03-19 03:19:44 CET

This is an archived mail posted to the Subversion Dev mailing list.