Alex Rivera | Logout

What determines the speed of an SVN 1.6 merge operation

Asked 2010-11-03T09:52:43.233
10

I am surprised at how long it takes to merge a very small change from any particular branch into trunk; 1-2 minutes to merge in a few lines of text that have changed in a single text file that is only 2k long.

I would like, if possible, to make merging a hell of a lot faster but don't know where to start. I have done a quick google and the possible reasons for slow merges seem to include any and all of the following: -

  • Large repo size (both in terms of size on disk and number of revisions).
  • Large source tree (apparently SVN has to crawl down the tree in order to work out changes)
  • The version of SVN server / client
  • Very large (several MB) files (we don't have very large single files so I doubt this affect us)

I guess I really want to know how to find out which of the above points are making merges so slow.

Right now I am in the dark as to whether it is work on the client or work on the server that is taking the most time (well I suspect it is the client since CPU usage is not massive on the server). I did think that it might be the vast amount of mergeinfo that has accumulated over 100s of merges but I have done a test where I have deleted all the merge info from a couple of branch and then did a merge and found the same slowness.

So what I would like to ask is: - * How would one go about diagnosing/profiling the SVN activity? * Based on the info below, is there something really obvious that will be causing the poor performance?

Thanks

Chris

Here are some facts / figures about our SVN setup

  • Our SVN repository has around 32000 revisions.
  • Repo size on disk: 8.3GB
  • Our development branches each have around 1400 versioned folders (19,000 versioned files)
  • SVN Server: 1.6.6 (r40053) (hosted in Apache running on Ubunto Lucid Lynx)
  • I am using tortoise 1.6.9 on Win7 (although other members of the tea
Edit
Report

1 Answer

0

One thing I've noticed while merging is that merges that use top level directory are very fast. So that merging a feature branch back to trunk or merging a range of revision from trunk to your feature branch is fast. But merging changes from a specific file somewhere in the working copy is extremely slow. For this reason I always branch the entire trunk and then change whatever files I need to, then merge the entire thing. So if your branch was created from one trunk's subdirectory this might be why it's very slow.

answered 2010-11-03T11:40:56.503

Your Answer