Julian Foad wrote:
> I have made a start on this. See attached. If you'd like to work on it
> tonight that would be great.
I've been doing other stuff until now, so I'm not going to get far. I've
created a branch for it: tc_url_rev.
Some comments:
[[[
- /** The node type of the path being operated on */
+ /** The node type of the path being operated on (for a tree conflict,
+ * ### which version?) */
svn_node_kind_t node_kind;
]]]
I was thinking recently that we should actually have all sides.
+ /** The node type of the path being operated on, on the source's
+ * merge-left side of the operation. @see .... */
+ svn_node_kind_t node_kind_source_left;
+
+ /** The node type of the path being operated on, on the source's
+ * merge-right side of the operation. @see .... */
+ svn_node_kind_t node_kind_source_right;
+
+ /** The node type of the path being operated on, on the target side
+ * of the operation, usually the working copy. @see node_kind_... */
+ svn_node_kind_t node_kind_target;
There is be a conflict when the merge-left is not the same kind as the
target, currently.
There also is a conflict when the merge-right side is obstructed, e.g. by a
different node kind. ... can that happen ? ... yes, it can, right?
[[[
/** If not NULL, an open working copy access baton to either the
* path itself (if @c path is a directory), or to the parent
- * directory (if @c path is a file.) */
+ * directory (if @c path is a file.) For a tree conflict,
+ * ### to what? */
svn_wc_adm_access_t *access;
]]]
Currently, definitely always to the parent dir, even for dirs. If we're
going to have TCs on the victims, then this would be as the comment says.
[[[
+ * NODE_KIND must the the node kind of "old" and "theirs" and "mine";
]]]
fixed typo.
[[[
+ * this function cannot cope with node kind clashes.
]]]
Could, if we reported all node kinds. But as below, this might become quite
complex...
[[[
Index: subversion/libsvn_wc/update_editor.c
===================================================================
--- subversion/libsvn_wc/update_editor.c (revision 34272)
+++ subversion/libsvn_wc/update_editor.c (working copy)
@@ -1391,18 +1391,21 @@ check_tree_conflict(svn_wc_conflict_desc
svn_wc_conflict_action_t action,
apr_pool_t *pool)
{
+ svn_node_kind_t their_node_kind = svn_node_unknown;
svn_wc_conflict_reason_t reason = (svn_wc_conflict_reason_t)(-1);
switch (action)
{
case svn_wc_conflict_action_edit:
/* Use case 1: Modifying a locally-deleted item. */
+ /* ### their_node_kind = ?; */
]]]
Hmm! That's a good question.
I'm sorry, my time's up for today. So let's all use the branch and schaukel
this baby.
~Neels
Received on 2008-11-20 06:14:47 CET