Mark Phippard wrote:
>> "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."
>> (https://svn.apache.org/repos/asf/subversion/branches/pristines-on-demand-on-mwf/BRANCH-README)
>
>That was where I read it! thanks

(The Readme is Evgeny's text AFAIK.)

>So this text confuses me and makes me assume I am not reading it
>correctly. Suppose I use this new feature to checkout a new WC without
>any pristines. I make edits to a large binary file using some tool. At
>this point, SVN does not even know I have done anything so I still
>have no pristines.

Correct.

>If I run svn status it will show me the file is modified. Are you
>saying that when I do this, SVN is going to pull down a pristine from
>the server?

Not for "status". Does the further description from the readme help?:
"""
  - 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. 
"""

> [...] My assumption is that if I have one of these new types of WC's that I
> will NEVER have any "pristines".

Not correct, for this design.

>Please enlighten me as to when pristines will be created and stored
>and why I would want SVN to do that when I asked for no pristines? I
>think I must be overlooking something obvious.

In my own words now: In this design, pristines are kept locally for modified 
files (not never). During the new pristines-sync phase at the beginning of any 
operation that might[1] want the pristine (e.g. diff, but *not* status), if a 
file is detected to be locally modified and has no pristine locally, then the 
pristine is fetched ("hydrated") and then kept locally... until, during a sync 
pass at the end of any such operation, if any file is detected to be 
not-modified and its pristine is present locally: then it is cleaned up 
(dehydrated).

Hope that's getting clearer.

[1] "might want": false positives exist, as noted in this thread a few weeks 
ago.

- Julian

Reply via email to