You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2010/10/14 18:14:53 UTC
svn commit: r1022597 - /subversion/trunk/notes/wc-ng/copying
Author: julianfoad
Date: Thu Oct 14 16:14:53 2010
New Revision: 1022597
URL: http://svn.apache.org/viewvc?rev=1022597&view=rev
Log:
* notes/wc-ng/copying
Add notes about copying a not-present child.
Modified:
subversion/trunk/notes/wc-ng/copying
Modified: subversion/trunk/notes/wc-ng/copying
URL: http://svn.apache.org/viewvc/subversion/trunk/notes/wc-ng/copying?rev=1022597&r1=1022596&r2=1022597&view=diff
==============================================================================
--- subversion/trunk/notes/wc-ng/copying (original)
+++ subversion/trunk/notes/wc-ng/copying Thu Oct 14 16:14:53 2010
@@ -71,13 +71,26 @@ revision source and from a source with a
child. In both cases the commit must either add or replace the child
and if the copy is from a source that is locally added or replaced the
client can make the distinction and send a delete before adding the
-replacement. For a mixed revision the client doesn't distinguish
+replacement. For a mixed revision, as the client doesn't know whether
+the child existed in its parent's revision and so can't distinguish
between add and replace, it always sends an add and the FS layer
converts to a replace as required (for details see 2010-04-19 comments
in issue 3314). We will probably have to continue rely on this in
WC-NG as there is not enough information in the source to determine
whether or not the child also exists in the parent's revision.
+If the mixed-rev source has a "not-present" child (effectively the
+same as "updated to r0"), then the copy schedules this as "delete".
+The client doesn't know whether the child existed in its parent's
+revision, so it can't distinguish between delete and no-op, so it
+always sends a delete.
+
+ ### This current fails, in both 1.6 and trunk.
+
+ ### TODO: The server needs to silently elide a delete, or the client
+ needs to detect the error and recover from it and continue if that
+ is possible.
+
Child nodes not-present in the source become not-present working nodes
in the copy, this ensures that they get deleted by the commit. We
might want to use a new not-copied state instead, since these deletes