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

RFC: svn mergeinfo improvements for 1.5

From: Paul Burba <ptburba_at_gmail.com>
Date: Tue, 18 Mar 2008 16:49:57 -0400

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).

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.

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

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?

Paul

---------------------------------------------------------------------
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-18 21:50:10 CET

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