Pristines-on-Demand ------------------- The purpose of this branch is to try to make the text-bases in the working copy optional [1][2]. Description of the approach: ---------------------------- The core idea is that we start to maintain the following invariant: only the modified files have their pristine text-base files available on the disk. - To avoid having to access the text-base, the "is the file modified?" check is performed by calculating the checksum of a file and comparing that to what's recorded in the working copy. - A text-base of the unmodified file is the file itself, appropriately detranslated. - To get into the appropriate state at the beginning of the operation, we walk through the current text-base info in the db and check if the corresponding working files are modified. The missing text-bases are fetched using the svn_ra layer. The operations also include a final step during which the no longer required text-bases are removed from disk. - The operations that don't need to access the text-bases (such as "svn ls" or the updated "svn st") do not perform this walk and do not synchronize the text-base state. For the production-ready state, it would probably make sense to also: --------------------------------------------------------------------- 1. Complete the work on ^/subversion/branches/multi-wc-format so that the client would work with both the new and old working copy formats, for a seamless user experience and better compatibility. (Done in r1897946) 2. For the new working copy format, incorporate a switch to a different checksum type without known collisions instead of SHA-1. References: ----------- [1] https://issues.apache.org/jira/browse/SVN-525 [2] https://lists.apache.org/thread.html/r40aa795b9e0c1aabb392c43b64e540432a31e22d8b0d9de7202b4950%40%3Cdev.subversion.apache.org%3E