/[Apache-SVN]
ViewVC logotype

Revision 1618024


Jump to revision: Previous Next
Author: stsp
Date: Thu Aug 14 19:22:30 2014 UTC (10 years, 3 months ago)
Changed paths: 2
Log Message:
For tree conflicts flagged during merges, record the proper node kinds
of the versions of nodes involved in the conflict (the local working
copy node kind, the merge-left node kind, and the merge-right node kind).

Before this change misleading node kind information was recorded.
For example, nodes which are deleted at the merge-right side of the incoming
change would produce the following conflict information:

Tree conflict: local file edit, incoming file delete or move upon merge
  Source  left: (file) ^/trunk/beta@1
  Source right: (file) ^/branch/beta@3

This is misleading since ^/branch/beta does not exist in r3 since it
was deleted in r2. With this change, the recorded node kind is 'none':

Tree conflict: local file edit, incoming file delete or move upon merge
  Source  left: (file) ^/trunk/beta@1
  Source right: (none) ^/branch/beta@3

* subversion/libsvn_client/merge.c
  (make_conflict_versions): Expect two node kinds, for the left and right
   side of the merge source, instead of just one.
  (merge_dir_baton_t, merge_file_baton_t): Add fields to store node kind
   information for tree conflict victims: tree_conflict_local_node_kind,
   tree_conflict_merge_left_node_kind, and tree_conflict_merge_right_node_kind.
  (record_tree_conflict): Add two node kind parameters for a total of three and
   rename the existing 'node_kind' parameter to 'local_node_kind'.
   Create conflict versions with merge-left/merge-right node kinds. The local
   node kind is used as the victim's node kind in the conflict description.
  (mark_dir_edited, mark_file_edited): Propagate node kind information stored
   in the dir/file baton to record_tree_conflict().
  (merge_file_opened, merge_dir_opened): Fill in all three node kinds involved
   in the conflict.
  (merge_file_changed): Pass merge-left/merge-right node kinds to the
   make_conflict_versions() function. For file edits both are svn_node_file.
  (merge_file_deleted, merge_dir_deleted): Pass all three node kinds involved
   in the conflict to record_tree_conflict().

* subversion/libsvn_wc/tree_conflicts.c
  (svn_wc__serialize_conflict): 'none' is a legal node kind for tree conflicts.
   Adjust an assertion accordingly.


Changed paths

Path Details
Directorysubversion/trunk/subversion/libsvn_client/merge.c modified , text changed
Directorysubversion/trunk/subversion/libsvn_wc/tree_conflicts.c modified , text changed

infrastructure at apache.org
ViewVC Help
Powered by ViewVC 1.1.26