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

Re: Tweaking 1.5.x's Mergeinfo (Was: svn commit: r30390 - branches/1.5.x)

From: Paul Burba <ptburba_at_gmail.com>
Date: Wed, 9 Apr 2008 17:32:24 -0400

On Wed, Apr 9, 2008 at 1:44 PM, Paul Burba <ptburba_at_gmail.com> wrote:
>
> On Wed, Apr 9, 2008 at 12:42 PM, C. Michael Pilato <cmpilato_at_collab.net> wrote:
> >
> > > 'svn help merge' contains this:
> > >
> > > [...]
> > > 3. merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [WCPATH]
> > > [...]
> > > 3. In the third form, SOURCE can be either a URL or a working copy
> > > path (in which case its corresponding URL is used). SOURCE (in
> > > revision REV) is compared as it existed between revisions N and M
> > > for each revision range provided. If REV is not specified, HEAD
> > > is assumed. '-c M' is equivalent to '-r <M-1>:M', and '-c -M'
> > > does the reverse: '-r M:<M-1>'. If no revision ranges are
> > > specified, the default range of 0:HEAD is used. Multiple '-c'
> > > and/or '-r' instances may be specified, and mixing of forward
> > > and reverse ranges is allowed.
> > >
> > > Maybe I got bit by the default range of 0:HEAD? That's a stupid default,
> > by the way, and inconsistent with our policy of allowing specified peg
> > revisions dictate the upper bound on the operative revision range.
> > >
> >
> > I'm testing a patch for this now. (I suspect that I actually wrote the
> > bogus code myself, too.)
> >
> >
> > > But anyway, I tried with the obvious workaround:
> >
> > >
> > > $ svn merge http://svn.collab.net/repos/svn/branches/1.5.x-r30215@30348 .
> > \
> > > -r0:30348
> > > subversion/libsvn_ra_neon/util.c:711: (apr_err=160013)
> > > svn: Working copy path 'CHANGES' does not exist in repository
> > > $
> > >
> >
> > Not sure what's up here.
> >
> >
> >
> > > (Sidebar: 'svn help log' indicates that HEAD:1 is the default revision
> > range even when a peg revision to the URL is supplied. Clearly, that's a
> > lie. How many bugs are we up to now?)
> > >
> >
> > This was fixed in r30449, and proposed for backport to 1.5.x.
> >
> >
> >
> >
> > > Anyway, back to using a real range for this merge:
> > >
> > > $ svn merge http://svn.collab.net/repos/svn/branches/1.5.x-r30215@30348
> > -r30222:30348 .
> > > --- Merging r30223 through r30348 into '.':
> > > U subversion/include/svn_client.h
> > > U subversion/libsvn_client/util.c
> > > U subversion/libsvn_client/mergeinfo.c
> > > U subversion/tests/cmdline/mergeinfo_tests.py
> > > U subversion/tests/cmdline/svntest/actions.py
> > > D subversion/tests/cmdline/svntest/parsers.py
> > > U subversion/svn/cl.h
> > > U subversion/svn/mergeinfo-cmd.c
> > > U subversion/svn/util.c
> > > U subversion/svn/main.c
> > > G .
> > > $ svn st
> > > M .
> > > M subversion/include/svn_client.h
> > > M subversion/libsvn_client/util.c
> > > M subversion/libsvn_client/mergeinfo.c
> > > M subversion/tests/cmdline/mergeinfo_tests.py
> > > D subversion/tests/cmdline/svntest/parsers.py
> > > M subversion/tests/cmdline/svntest/actions.py
> > > M subversion/svn/cl.h
> > > M subversion/svn/mergeinfo-cmd.c
> > > M subversion/svn/util.c
> > > M subversion/svn/main.c
> > > M CHANGES
> > > $ svn diff --depth empty
> > >
> > > Property changes on: .
> > > ___________________________________________________________________
> > > Modified: svn:mergeinfo
> > > Reverse-merged
> > /trunk:r29085-29089,29091,29094-29107,29111,29114,29117,29126-29127,29129-29133,29135-29150,29153-29164,29166,29174,29176-29186,29188-29189,29193-29194,29198-29206,29208-29251,29254-29256,29261,29267-29273,29277,29280-29281,29284,29287-29303,29305-29307,29309-29325,29327-29343,29345-29348,29358-29379,29381-29392,29397,29399,29401,29409,29412,29414-29415,29417-29423,29425-29426,29429,29433-29434,29436-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,29663-29664,29671-29672,29677-29680,29692,29738-29739,29742-29744,29746,29751,29763,29769-29770,29784,29787,29797,29801,29821,29824,29828,29835,29855,29858-29859,29868-29869,29876,29878,29883-29884,29895,29898,29900,29914,29920,29925,29930,2993!
 9-29
> > >
> > 94
> >
> > >
> > >
> > 0,29942,29950,29958,29962,29968,29980,29986,29994-29997,30004,30009,30020,30030,30050,30054,30061-30062,30067,30070,30074,30086,30098,30117,30124,30130,30137,30145,30151,30159,30162,30185
> > > Reverse-merged /branches/svn-mergeinfo-enhancements:r30122
> > > Merged /trunk:r30215,30221,30225-30226,30230,30243,30286
> > > Merged /branches/1.5.x-r30215:r30223-30348
> > > Merged /branches/svn-mergeinfo-enhancements:r30045-30121,30123-30214
> > > $
> > >
> > > Oh boy. That's all so very not good. My guess? The svn:mergeinfo
> > property actually stored on the backport branch first blew away the one
> > stored on in the 1.5.x branch, and then was modified to include the current
> > merge operation.
> > >
> >
> > I haven't even begun to look into this. I should note, though, that my
> > Subversion client was probably of 1.5.x-rc1 pedigree, so not quite the
> > newest code.
>
> I'm looking into this now.
>
> Paul

I found the problem, it was a bug in
merge.c:filter_self_referential_mergeinfo(). When manipulating and
array of svn_prop_t, when the svn_prop_t for svn:mergeinfo was
processed a *separate* svn_prop_t was created for each merge source.
Ultimately this caused libsvn_wc/props.c:svn_wc__merge_props() to call
props:apply_single_prop_change() *multiple* times for svn:mergeinfo
leading to the odd results. Fixed that in r?????

Here is the behavior now:

>svn info 1.5.x
Path: 1.5.x
URL: http://svn.collab.net/repos/svn/branches/1.5.x
Repository Root: http://svn.collab.net/repos/svn
Repository UUID: 612f8ebc-c883-4be0-9ee0-a4e9ef946e3a
Revision: 30348
Node Kind: directory
Schedule: normal
Last Changed Author: hwright
Last Changed Rev: 30348
Last Changed Date: 2008-04-05 14:13:08 -0400 (Sat, 05 Apr 2008)

>svn merge http://svn.collab.net/repos/svn/branches/1.5.x-r30215@30348
-r30222:30348 1.5.x
--- Merging r30223 through r30348 into '1.5.x':
U 1.5.x\subversion\include\svn_client.h
U 1.5.x\subversion\libsvn_client\util.c
U 1.5.x\subversion\libsvn_client\mergeinfo.c
U 1.5.x\subversion\tests\cmdline\mergeinfo_tests.py
U 1.5.x\subversion\tests\cmdline\svntest\actions.py
D 1.5.x\subversion\tests\cmdline\svntest\parsers.py
U 1.5.x\subversion\svn\cl.h
U 1.5.x\subversion\svn\mergeinfo-cmd.c
U 1.5.x\subversion\svn\util.c
U 1.5.x\subversion\svn\main.c
 G 1.5.x

>svn st 1.5.x
 M 1.5.x
M 1.5.x\subversion\include\svn_client.h
M 1.5.x\subversion\libsvn_client\util.c
M 1.5.x\subversion\libsvn_client\mergeinfo.c
M 1.5.x\subversion\tests\cmdline\mergeinfo_tests.py
D 1.5.x\subversion\tests\cmdline\svntest\parsers.py
M 1.5.x\subversion\tests\cmdline\svntest\actions.py
M 1.5.x\subversion\svn\cl.h
M 1.5.x\subversion\svn\mergeinfo-cmd.c
M 1.5.x\subversion\svn\util.c
M 1.5.x\subversion\svn\main.c
 M 1.5.x\CHANGES

>svn diff --depth empty 1.5.x

Property changes on: 1.5.x
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk:r30215,30221,30225-30226,30230,30243,30286
   Merged /branches/1.5.x-r30215:r30223-30348
   Merged /branches/svn-mergeinfo-enhancements:r30045-30121,30123-30214

That looks right, it represents the merge itself and the svn:mergeinfo
coming from the 1.5.x-r30215 branch:

>svn diff -N http://svn.collab.net/repos/svn/branches/1.5.x-r30215@30348
-r30222:30348

Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk:r30215,30221,30225-30226,30230,30243,30286
   Merged /branches/svn-mergeinfo-enhancements:r30045-30121,30123-30214

Note also that CHANGES, which has its own explicit mergeinfo gets updated too:

>svn diff 1.5.x\CHANGES

Property changes on: 1.5.x\CHANGES
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /branches/1.5.x-r30215/CHANGES:r30223-30348

If there are no objections I'll fix the mergeinfo on 1.5.x to reflect the above.

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-04-09 23:32:39 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.