On Thu, Dec 24, 2009 at 03:42:38PM +0100, Christian Schoenebeck wrote: > On Thursday 24 December 2009 14:23:25 Bert Huijben wrote: > > Currently on a 'svn update' the client receives a list of files from the > > repository that are updated with the information on how they are updated. > > > > E.g. if you call 'svn update' on a working copy with 10000 files, you > > receive changes for just two files. > > > > Then these files are updated and their keywords (if there are any) > > rewritten based on the new information. > > > > With the new keyword you would need an additional step to walk all the > > other files, to check if they have your new keyword in the svn:keywords > > property, which is 10000-2 file opens in the current code and 10000-2 > > database reads in WC-NG. > > > > And if the property for a file contains this setting the file must be > > rewritten with the new expansions. > > > > Looking at the performance measurements for 1.6.x I performed some time > > ago, this would be a major slowdown on Windows. (Probably makes the update > > time 3 to 5 times longer by just opening the property files, if you have a > > lot of files with any keyword set). > > In pratice there are usually only very few files in a repository which would > use such a global repository revision keyword. So to avoid such slowdowns on > various operations, I would store a list of files with that keyword as global > property (e.g.: "svn:globalkeywords"), not by properties on a per file basis. > E.g.: > > svn propset svn:globalkeywords "GlobalRevision: trunk/version.h, > GlobalRevision: branches/whatever/foo.cpp" > > Where "GlobalRevision" might be the new keyword to be substituted by the new > global repository revision in the listed files. > > So the update command would then just retrieve that global property and if it > exists and contains a valid list of global keywords and files, it will then > retrieve the latest repository revision and perform the substitution on the > WC. Should be a cheap operation, no?
What if I do an update which should not update the working copy root, such as "svn update somefile"? Stefan