Daniel Shahaf <d...@daniel.shahaf.name> writes: > Sérgio Basto wrote on Wed, Mar 21, 2012 at 07:25:05 +0000: >> Hi, Dev list , I want to fix random sort of svn status and svn diff, on >> recent code of svn, it just put a sort somewhere, could someone point me >> the directory in the source code, where is the code of svn frontend >> commands like diff and status ? > > The frontend code lives in the directory subversion/svn/. > > As I said elsethread, you want to patch the library code too, not just > the frontend code. > > Looking forward to hear what approach you're planning to take,
One option would be to replace all the calls to apr_hash_make with a new function svn_hash_make that calls apr_hash_make_custom with the our own copy of APR's default hash function. This would bypass APR's random seed and the hash order would be stable. In passing I note that the way APR "randomises" the hash is not all that random. It just adds a fixed prefix to the keys passed to the default hash function. I thought the point of the APR change was to make it harder for the user to predict hash collisions and I do wonder whether this has been achieved. If two strings S1 and S2 collide then does adding a constant prefix stop the collision? svnadmin create repo svn mkdir -mm file://`pwd`/repo/A{0,1,2,3,4,5,6,7,8,9} svn co file://`pwd`/repo wc svn ps p v wc/* Now status shows an unstable order: svn st wc M wc/A5 M wc/A6 M wc/A7 M wc/A8 M wc/A9 M wc/A0 M wc/A1 M wc/A2 M wc/A3 M wc/A4 svn st wc M wc/A7 M wc/A8 M wc/A9 M wc/A0 M wc/A1 M wc/A2 M wc/A3 M wc/A4 M wc/A5 M wc/A6 but the "cycle" is always the same N->9,0->N-1. -- uberSVN: Apache Subversion Made Easy http://www.uberSVN.com