On Fri, May 18, 2012 at 1:57 AM, Greg Stein <gst...@gmail.com> wrote: > On Fri, May 18, 2012 at 1:34 AM, Bert Huijben <b...@vmoo.com> wrote: >> >> Editor v1 only requires the revision for base node replacements and I >> don't see why we need to change that for v2. >> >> If we copied a subtree from a revision we know that that revision >> didn't change. How could it be out of date? > > The FS does not remember where changes came from, without some deep > inspection. If we see "/some/path", then we don't know how it got > there. Whether it started there, or whether it was copied there. > > Now... that said, I just realized that passing the parent revision > will not work, because the path will not be found in that target > revision. > > So, yeah: we need to somehow enable passing SVN_INVALID_REVNUM for the > children of copies. That is equivalent to the Ev1 behavior: "I'm > replacing an uncommitted item". It looks like we can use > svn_fs_closest_copy() to determine if a txn node (or an ancestor) has > been copied to that target location.
Some more thinking... But we do need some sort of check in here. We should not allow add_*() to overwrite a copied-child. But a copy() can do so IFF it is part of a mixed-rev copy. But what about a secondary copy operation over a child? At some point, we just assume the client is working properly. Maybe we just omit all OOD checks under copies. But that doesn't really manager improper overwrites... Hrm...