On Sun, Jul 11, 2010 at 1:04 AM, Greg Stein <[email protected]> wrote: > On Sat, Jul 10, 2010 at 17:55, Erik Huelsmann <[email protected]> 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.

