On Mon, Mar 22, 2010 at 17:59, Philip Martin <philip.mar...@wandisco.com> wrote: > Greg Stein <gst...@gmail.com> writes: > >> The tree at copied-here should only have WORKING nodes. No BASE nodes. >> >> If it has BASE nodes, then that is a bug. >> >> The tree is distinguished as a copy because of the copyfrom_* >> information at the operation root. All the children have empty >> copyfrom_* data. If you make a second copy into that tree, then that >> new subtree will have copyfrom_* at its root. > > My question was about an add rather than a second copy. Consider > > $ svn cp $url/A wc > $ svn add wc/A/Y > > Suppose $url/A contains $url/A/X. How do I distinguish between a > copied child, like wc/A/X, and an added node like wc/A/Y? Neither has > copyfrom set. How do I know that A/X inherits from it's parent A > while A/Y does not?
Yes, you brought up this hole in the design a while back, and we've had some discussion on ways to solve it. As Bert points out, you can use changed_* to detect the local-add, rather than local-copies. We may introduce a special copyfrom_* value to indicate "local-add" rather than "copy-from". Or maybe rely on changed_*. It is unclear on what is the best approach right now. Cheers, -g