[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: WC-NG: the trees BASE, WORKING and ACTUAL [was: svn commit: r33021 - branches/explore-wc/subversion/libsvn_wc]

From: C. Michael Pilato <cmpilato_at_collab.net>
Date: Thu, 11 Sep 2008 14:10:05 -0400

Julian Foad wrote:
> On Thu, 2008-09-11 at 13:16 -0400, C. Michael Pilato wrote:
>> Julian Foad wrote:
>>> On Thu, 2008-09-11 at 12:51 -0400, Greg Stein wrote:
>>>> Those are the correct definitions, per wc-by-design.
>>> (I assume you mean, "per 'notes/wc-ng-design'".)
>>>
>>> Both of you:
>>>
>>> Huh? I was trying to refine the definitions to something more precise
>>> than "ACTUAL is how the working copy really looks." :-)
>> I don't know how better to explain it. Uh... ACTUAL is the state of a
>> working copy directory if you imagine its not a Subversion working copy?
>> ACTUAL is what you see with shell tools like 'ls'?
>
> Getting warmer. How about:
>
> * ACTUAL is the tree on the local disk, ignoring Subversion
> administrative directories, and regarding every node as having
> no Subversion properties.
>
> (Note that we might want to consider variations such as
>
> "... having no Subversion properties except for 'svn:executable' set
> to '*' iff the node's executable-by-owner permission is set."
>
> "... except as defined by the user's auto-props configuration."
>
> "... excluding nodes with the operating system's 'hidden' flag set."
> )
>
>
>> A "missing" file is caused by the ACTUAL directory lacking a file for which
>> the BASE tree contains a file of the same name, and for which the WORKING
>> tree does *not* indicate that the physical file should be absent (such as
>> would be expected were the file scheduled for deletion).
>>
>> BASE + Subversion-managed changes = WORKING.
>> WORKING + non-Subversion-managed changes = ACTUAL.
>
> I was also questioning the intent of defining WORKING as a tree that has
> the BASE file contents. That seems silly: what useful concept does that
> represent? It seems to me that it represents an implementation artifact:
> the set of modifications that Subversion records explicitly in its
> meta-data rather than the modifications that Subversion scans for
> dynamically. That's not a distinction of much interest to the higher
> layers of software.
>
> I submit that it is much more sensible to define WORKING as I suggested
> in my earlier mail. (i.e. having the disk file contents)

I agree. I had considered this in the course of composing my mail, but lost
it by the time I finished editing. I should have said

   BASE + Subversion-managed changes + file content modifications = WORKING.
   WORKING + non-textual-and-non-Subversiony-changes = ACTUAL.

Are file contents the only exception of note here? For example, I'm not
sure how to categorize today's handling of merge reject files. They live in
the ACTUAL space, but their absence affects interpretation of the WORKING
tree (conflicted flag staleness and ultimate irrelevance).

-- 
C. Michael Pilato <cmpilato_at_collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand

Received on 2008-09-11 20:10:20 CEST

This is an archived mail posted to the Subversion Dev mailing list.