On Sun, Jul 11, 2010 at 1:04 AM, Greg Stein <gstein_at_gmail.com> wrote:
> On Sat, Jul 10, 2010 at 17:55, Erik Huelsmann <ehuels_at_gmail.com> wrote:
>>...
>> Columns to be placed in NODE_DATA:
>>
>> * wc_id
>> * local_relpath
>> * oproot_distance
>> * presence
>> * kind
>> * revnum
>
> revnum is a BASE concept, so it does not belong here. WORKING nodes do
> not have a revision until they are committed. If the node is copied
> from the repository, then the *source* of that copy needs a revision
> and path, but that is conceptually different from "revnum" (which
> identifies the rev of the node itself).
>
>> * checksum
>> * translated_size
>> * last_mod_time
Thinking about it a bit more, I think translated_size and
last_mod_time are a bit odd to have in NODE_DATA - although they are
part of both BASE_NODE and WORKING_NODE: they really do apply only to
BASE and the *current* working node: they are part of the optimization
to determine if a file has changed. Presumably, when a different layer
of WORKING becomes visible, we'll be recalculating both fields.
If that's the case, shouldn't we just hold onto them in their respective tables?
>> * changed_rev
>> * changed_date
>> * changed_author
>> * depth
>> * properties
>> * dav_cache
>
> dav_cache is also a BASE concept, and remains in BASE_NODE.
Agreed.
>> * symlink_target
>> * file_external
>
> I'm not sure that file_external belongs here. We certainly don't have
> it in WORKING_NODE.
I've been informing around on IRC to understand the difference between
why that would apply to file_external, but not to symlink_target. The
difference isn't clear to me yet. Do you have anything which might
help me?
>> This means, these columns stay in WORKING_NODE (next to its key, ofcourse):
>>
>> * copyfrom_repos_id
>> * copyfrom_repos_path
>> * copyfrom_revnum
>> * moved_here
>> * moved_to
>>
>> These columns can stay in WORKING_NODE, because all children inherit
>> their values from the oproot. I.e. a subdirectory of a copied
>> directory inherits the copy/move info, unless it's been copied/moved
>> itself, in which case it has its own copy information.
>
> Right.
>
> Also note that we can opportunistically rename the above columns to
> their wc_db API names: original_*. They would be original_repos_id,
> original_repos_relpath, original_revision.
Done. (In my local patch-in-preparation.)
Bye,
Erik.
Received on 2010-07-12 12:33:15 CEST