subversion-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christophe Broeckx <broeckx.christo...@gmail.com>
Subject Re: SVN Property Value Size Limit
Date Thu, 14 Aug 2014 13:04:40 GMT


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...@elego.de <javascript:>] 
> > Sent: Freitag, 28. Juni 2013 02:35 
> > To: Matthias Legeler 
> > Cc: us...@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...@elego.de <javascript:>] 
> > > Sent: Donnerstag, 27. Juni 2013 12:18 
> > > To: Matthias Legeler 
> > > Cc: 'us...@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


Mime
  • Unnamed multipart/mixed (inline, None, 0 bytes)
View raw message