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

Re: SVN Property Value Size Limit

From: Christophe Broeckx <broeckx.christophe_at_gmail.com>
Date: Thu, 14 Aug 2014 06:04:40 -0700 (PDT)

Le lundi 1 juillet 2013 15:17:05 UTC+2, 'Daniel Shahaf' a écrit :
>
> Use ra_serf then :-)
>
> Matthias Legeler wrote on Mon, Jul 01, 2013 at 12:04:12 +0000:
> > Checkout with neon: property value truncated
> >
> > Checkout with serf (svn co --config-option
> servers:global:http-library=serf URL): property value complete
> >
> > Matthias
> >
> > -----Original Message-----
> > From: 'Daniel Shahaf' [mailto:dani..._at_elego.de <javascript:>]
> > Sent: Freitag, 28. Juni 2013 02:35
> > To: Matthias Legeler
> > Cc: us..._at_subversion.apache.org <javascript:>
> > Subject: Re: SVN Property Value Size Limit
> >
> > Matthias Legeler wrote on Thu, Jun 27, 2013 at 10:30:32 +0000:
> > > 'svn propget --strict svn:mergeinfo ./ ' gets the first 7895
> > > characters 'svn propget --strict svn:mergeinfo URL' gets all 7959
> > > characters
> > >
> > > yes, 64 characters difference
> > >
> >
> > Interesting, thanks.
> >
> > I guess the next step is to look at the response headers. (You can use
> neon-debug-mask if you use neon, or wireshark/tcpdump if you don't use
> > SSL.) In particular, whether the response includes the whole property,
> and whether metadata (eg: Content-Length response header) matches the
> response.
> >
> > BTW: does it happen under both serf and neon? (check 'svn --version' to
> see which you have; use --config-option to switch the active library)
> >
> > Daniel
> >
> > > Matthias
> > >
> > > -----Original Message-----
> > > From: Daniel Shahaf [mailto:dani..._at_elego.de <javascript:>]
> > > Sent: Donnerstag, 27. Juni 2013 12:18
> > > To: Matthias Legeler
> > > Cc: 'us..._at_subversion.apache.org <javascript:>'
> > > Subject: Re: SVN Property Value Size Limit
> > >
> > > Matthias Legeler wrote on Thu, Jun 27, 2013 at 07:02:50 +0000:
> > > > In our subversion repositories we have merged many many times.
> > > > Now we have very large svn:mergeinfo property values (>8k).
> > > > The problem is now, that if we make a svn checkout, the property
> values will be truncated in the working copy by approximately 8k.
> > > > The svn propget command at the working copy folder returns a
> truncated value.
> > >
> > > Where does the truncation happen? Do you get only the first 8KB of
> > > the property? Do you get everything except the last 8KB? What is the
> > > offset from the point of truncation to the start and to the (true) end
> > > of the property? (Is that offset a power of 2?)
> > >
> > > You can determine all that with 'svn propget --strict svn:mergeinfo
> ./'
> > > and 'svn propget --strict svn:mergeinfo URL'.
> > >
> > > Daniel
> > >
> > > > This occurs only for working copies there are created with the http
> protocol over the svn apache.
> > > > With the file protocol the property values are complete.
> > > >
> > > > My question:
> > > > Is this a known behavior?
> > > > Is this limited by a setting in the Apache/WebDAV/SVN configuration?
> > > >
> > > > regards,
> > > > Matthias
> > > >
>

Hi everybody.

I have similar problem now with ra_serf as well.
Subversion server version 1.5.2* (*r32768)
Client version 1.8.8 (r1568071) using ra_serf 1.3.3
The offset between the local and server mergeinfo was 16 characters.

We have found a way to fix the problem. To do so, we need to reduce the
size of the mergeinfo.
Here is how :
- ssh to svn server
- find the repository location (in this example, /srv/svn/repos/myrepo)
- do a local checkout of the branch with too long mergeinfo (not through
http !)
   svn co file:///srv/svn/repos/myrepo/myproject/branches/2.4
- check the mergeinfo o the problematic file to know where you can simplify
the mergeinfo
   e.g. here we had a lot of merge from branch 2.0 for the file
path/path/path/Foo.java
   /myproject/branches/2.0/path/path/path/Foo.java:
39126-43104,43469,44672,44705,44723,44736,44749,44794,44796,44805,44825,44831,44833,44852,44855,44865,44876,44879,44883,44887,44889,44905,44907,44912-44914,44919,44923,44947,44955,44957,44964,45007-45008,45069,45111,45114,45126,45128-45129,45142,45169,45202,45233,45341,45349,45351,45409,45425,45441,45460,45564,45568,45573,45575,45594-45595,45603,45626,45637,45654,45785,45827-45829,45832,45868,45871,45874,45877,45891,45917,45965,46000,46010,46014,46018,46024,46026,46030-46031,46038,46060,46073,46094,46109,46123,46130,46134,46159,46186,46190,46197,46210,46270,46304,46360,46363,46442-46443,46451,46470,46477-46478,46480-46481,46486-46488,46506,46509,46520,46539,46556,46561,46574,46582,46590,46595,46599,46604,46606,46752-46753,46755,46779-46780,46851-46852,46859,46864,46886,46903-46904,46923,46929,46984-46985,47011,47022,47040,47105,47120,47182,47205,47207-47208,47211,47238,47247,47253,47258,47288,47300,47302,47358,47377,47381,47407,47409-47410,47435,47514,47516,47522,47524,47536,47544,47553,47598,47605,47611,47615,47619,47622,47654,47711,47764,47923,47936,48023,48096,48164,48170-48171,48183,48290,48649,48666-48667,48755,48829,48897,48959,48962-48963,48982,48989,48991,49060,49068,49174,49184-49185,49205,49241,49269,49296,49312,49314,49319,49330,49343,49393,49400,49402,49413,49499,49509,49518-49519,49571,49582,49614,49756,49758,49768,49907-49908,50108,50252,50255,50259,50290,50398,50466,50490-50494,50497-50500,50708,50754,50756,50758-50760,50764-50765,50767-50770,50776,50781,51186,51284,51353,51357,51365,51521,51558,51574,51578,51665,51713,51752,51886,51889-51890,51980,51982-51985,51990,51997,52179,52205,52304,52357,52406,52413,52615,52620-52622,52703,52995,53007,53128,53205,53309-53310,53313,53315,53318-53323,53325,53328-53329,53533,53670,53879,53961,54027-54029,54131,54376,54526-54527,55374,55634,55653,55758,55808,56225,56450,57112,57421,57470,57631,57647,57734,57739,58308,58317,58357,58359,58378,58381,58421,58438-58440
- merge the complete range of the previously identified branch (use file
protocol !)
   svn merge -r39126:58440
file:///srv/svn/repos/myrepo/myproject/branches/2.0
- check the merge (should be no other change than property changes) and
that the mergeinfo is indeed reduced
   svn status
   svn propget svn:mergeinfo Foo.java
- if you don't have local commit write like here, switch to remote http
protocol
   svn switch --relocate
file:///srv/svn/repos/myrepo/myproject/branches/2.4
http://svn.server.url/repos/myrepo/myproject/branches/2.4
- commit
   svn commit -m "[MERGE:39126-58440] Reduced mergeinfo (merge range of
already merged revisions)"

Now you can just update your remote repository, it's not necessary to do a
clean checkout.

Note that even with this method the mergeinfo will one day be too long,
because it contains merge info from all old branches too, so it will grow
each time a new branch appears and gets merged.
Further cleaning could be done, like removing all closed branches and tags.

Hope this helps,
Christophe
Received on 2014-08-14 15:24:01 CEST

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

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