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