Greg Stein <gstein@lyra.org> writes:
> When doing a checkout/update, when would ancestor path ever get set? It
> would seem that the client doesn't care about the ancestory -- that is only
> important for the client to track when a "svn move" or "svn copy" is
> performed (and then forgotten during the commit).
Greg, I haven't yet read/processed your long technical responses yet
(getting ready to!), but a simple answer occurs to me at first:
As Karl said before, the concept of revision and ancestor-path are
inseparable. They are a single concept that designates a location in
the repository's filesystem. If I say: "glub/foo.c is at revision 7",
this is a meaningless statement. Why? Because I have no idea where
this file exists in the repository. The "ancestor" is the *absolute*
location. My "glub/foo.c" might actually be
"/products/glorb/mainline/glub/fooc" in repository, for all I know.
So it's critical that the working copy know the absolute locations of
every resource it manages. During a commit, it needs to say *exacly*
which resource is being changes. And during a pre-update "report", it
needs to say exactly which resources it has. Any time the working
copy ever speaks to the repository, it must speak in absolute paths
and revision numbers.
Thus when receiving a first-time checkout, this info needs to be given
to the working copy. The working copy can't function without it. Any
other system implies that the repository needs to keep track of every
working copy in existence, which is *not* our model. :)
Received on Sat Oct 21 14:36:17 2006