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/03/31 22:40:01 UTC
svn commit: r929709 - /subversion/trunk/notes/wc-ng/conflict-storage
Author: julianfoad
Date: Wed Mar 31 20:40:01 2010
New Revision: 929709
URL: http://svn.apache.org/viewvc?rev=929709&view=rev
Log:
* notes/wc-ng/conflict-storage: Add meanings & ideas & suggestions.
Modified:
subversion/trunk/notes/wc-ng/conflict-storage
Modified: subversion/trunk/notes/wc-ng/conflict-storage
URL: http://svn.apache.org/viewvc/subversion/trunk/notes/wc-ng/conflict-storage?rev=929709&r1=929708&r2=929709&view=diff
==============================================================================
--- subversion/trunk/notes/wc-ng/conflict-storage (original)
+++ subversion/trunk/notes/wc-ng/conflict-storage Wed Mar 31 20:40:01 2010
@@ -5,18 +5,36 @@ Conflict meta data storage in wc-ng
Conflict meta data is stored in the ACTUAL_NODE table, within the
'conflict_data' column. The data in this column is a skel containing
-conflict information, or NULL (meaning no conflict is present).
+conflict information (meaning the node is in conflict, and the details
+are inside), or NULL (meaning no conflict is present).
-There are five types of conflicts (text conflicts, property conflicts,
-tree conflicts, reject conflicts, and obstructions). The conflict skel
-has the form:
+The conflict skel has the form:
((KIND OPERATION KIND-SPECIFIC) (KIND OPERATION KIND-SPECIFIC) ...)
-where KIND is one of "text", "prop", "tree", "reject", or "obstructed".
+KIND indicates the kind of conflict description that follows and is one
+of:
+
+ "text" - meaning a "normal" text conflict of the whole node (which must be a
+ file), with left/right/mine full texts saved, and (unless it's
+ "binary") conflict markers in the working text;
+ "prop" - meaning a "normal" property conflict, with left/right/mine full
+ values saved;
+ "tree" - meaning a tree conflict;
+ "reject" - meaning a text conflict for a single hunk of text, with the source
+ being a patch file (rather than left/right full texts), and with a
+ "reject" file being saved (?);
+ "obstructed" - meaning ### TODO
+
OPERATION indicates the operation which caused the conflict and is
-detailed below. KIND-SPECIFIC is specific to each KIND, and is detailed
-below.
+detailed below.
+
+KIND-SPECIFIC is specific to each KIND, and is detailed below.
+
+There are restrictions on what mixture of conflicts can meaningfully be
+recorded - e.g. there must not be two "text" nor one "text" and one
+"reject". These restrictions are implied but not spelled out here.
+
### stsp: need conflict data format version info inside skel, too?
### or do we bump the entire wc.db format number if we need to tweak
@@ -42,11 +60,21 @@ but this information can be deduced from
Operation skel
--------------
+Meaning: The Operation skel indicates what kind of operation was being
+performed that resulted in a conflict, including the format and content
+(or reference to content) of the diff that was being applied to this
+node.
+
The OPERATION skel has the following form:
(NAME OPERATION-SPECIFIC)
-NAME is "update", "switch", "merge", or "patch".
+NAME is one of:
+
+ "update" - meaning a 3-way merge as in "svn update";
+ "switch" - meaning a 3-way merge as in "svn switch";
+ "merge" - meaning a 3(4?)-way merge as in "svn merge";
+ "patch" - meaning application of a context-diff, as in "svn patch".
OPERATION-SPECIFIC is as follows:
@@ -161,6 +189,9 @@ Tree conflicts
--------------
Tree conflicts exist on files or directories.
+
+### JAF: And symlinks, I presume - or, if not, why not?
+
The following information is stored if there is a tree conflict on the node:
("tree" OPERATION