On Wed, 2008-08-20 at 10:58 +0100, Julian Foad wrote:
> Here is a log message for the changes currently sitting on the
> tree-conflicts branch.
>
> If you are interested in this branch, please take a look and perhaps
> pick one part of it to review, comment on and/or help with. I added some
> notes with '###' in the log message about things that look wrong, but
> they are by no means a review.
>
> I'll do the same.
I've started removing some of the distractions:
First, I fixed up some proerty differences that weren't mentioned in the
log message.
[[[
> # PUBLIC API
>
> * subversion/include/svn_client.h
> (svn_info_t): Add a field to hold the tree conflicts info for this
> node.
>
> * subversion/include/svn_wc.h
> (svn_wc_notify_t): Mention a 'tree_state' field.
> ### Wrong: no such field.
Now fixed in the branch.
> (svn_wc_conflict_reason_t): Add a value representing 'added'.
> (svn_wc_conflict_kind_t): Add a value representing 'tree conflict'.
> (svn_wc_operation_t): New enumeration.
> (svn_wc_conflict_description_t): Add fields representing the
> operation
> resulting in a conflict, and the victim of a tree conflict.
> (svn_wc_entry_t): Add a 'tree_conflict_data' field.
> (svn_wc_conflicted_p2): New function to support tree conflicts,
> superseding svn_wc_conflicted_p() which becomes deprecated.
> ### Has '###' comments.
> (svn_wc_status2_t): Add a flag indicating 'tree-conflicted'.
> (svn_wc_resolved_conflict4): New function to support tree conflicts,
> superseding svn_wc_resolved_conflict3() which becomes deprecated.
> (svn_wc_read_tree_conflicts_from_entry): New function.
> (svn_wc_add_tree_conflict_data): New function.
>
>
> # LIBSVN_CLIENT
>
> * subversion/libsvn_client/commit_util.c
> (harvest_committables): When checking if there are any conflicts,
> also
> check for tree conflicts.
>
> * subversion/libsvn_client/diff.c
> (diff_dir_deleted): Don't set the notification state.
> ### Why?
>
> * subversion/libsvn_client/info.c
> (build_info_from_dirent): Initialise the 'tree_conflicts' field to
> NULL.
> (build_info_from_entry): If processing 'THIS_DIR', fill in the tree
> conflicts info.
>
> * subversion/libsvn_client/merge.c
> (merge_cmd_baton_t): Add a 'tree_conflicted_dirs' field to hold a
> list of
> directories containing tree conflicts.
> (dry_run_deleted_p): Improve the doc-string.
> ### Unrelated change.
Now made the change in trunk.
> (add_parent_to_tree_conflicted_dirs, tree_conflict,
> is_tree_conflicted_dir_p): New functions.
> (merge_file_changed): If the file isn't versioned in the WC, or
> isn't a
> file on disk, then in addition to reporting it as missing, raise a
> tree
> conflict.
> (merge_file_added): If the file is obstructed, raise a tree
> conflict.
> (merge_file_deleted): If the file to be deleted doesn't match what
> is
> present, raise a tree conflict.
> (merge_dir_added): If the dir is obstructed, raise a tree conflict.
> ### Includes unrelated bug fixes.
Oh no it doesn't! I was confused about the "if (state) *state = x;"
parts.
> (merge_dir_deleted): If obstructed, raise a tree conflict.
> ### Only does so in some cases.
> (merge_dir_opened): If obstructed, raise a tree conflict.
> (merge_dir_closed): If we encountered any tree conflicts within this
> directory tree, notify that fact.
> (do_merge): Initialise the merge_cmd_baton's new
> 'tree_conflicted_dirs'
> field.
>
> * subversion/libsvn_client/repos_diff.c
> (close_directory): Fill in the 'content_state' field of the
> notification.
> ### Dormant bug fix that should be on trunk anyway?
No, this is starting to make use of a tree-conflict feature.
> * subversion/libsvn_client/resolved.c
> (svn_client_resolve): Use svn_wc_resolved_conflict4() to resolve
> tree
> conflicts as well as other conflicts, by using
> svn_wc_resolved_conflict4()
> instead of svn_wc_resolved_conflict3().
>
>
> # LIBSVN_WC
>
> * subversion/libsvn_wc/adm_ops.c
> (revert_admin_things): Extend to support the 'tree_conflict_data'
> field.
> (resolve_conflict_on_entry, resolve_callback_baton,
> resolve_found_entry_callback): Extend to support tree conflicts as
> well
> as other conflicts.
> (svn_wc_resolved_conflict3): Re-implement as a wrapper around ...
> (svn_wc_resolved_conflict4): New function.
>
> * subversion/libsvn_wc/entries.c
> (read_entry, svn_wc__atts_to_entry, write_entry, fold_entry,
> svn_wc_entry_dup): Extend to support the 'tree_conflict_data'
> field.
>
> * subversion/libsvn_wc/entries.h
> (SVN_WC__ENTRY_ATTR_TREE_CONFLICT_DATA): New constant.
> (SVN_WC__ENTRY_MODIFY_TREE_CONFLICT_DATA): New constant.
>
> * subversion/libsvn_wc/log.c
> (log_do_committed, svn_wc__loggy_entry_modify): Extend to support
> the
> 'tree_conflict_data' field.
>
> * subversion/libsvn_wc/questions.c
> (svn_wc_conflicted_p): Re-implement as a wrapper around...
> (svn_wc_conflicted_p2): New function.
>
> * subversion/libsvn_wc/status.c
> (dir_baton): Add a 'tree_conflicted' flag.
> (assemble_status, is_sendable_status): Support tree conflict
> indications.
> (close_directory): Support tree conflict indications.
>
> * subversion/libsvn_wc/tree_conflicts.c,
> subversion/libsvn_wc/tree_conflicts.h
> New files.
>
> * subversion/libsvn_wc/update_editor.c
> ### Includes unrelated changes such as ading one-line doc-strings to
> editor functions.
> (bump_dir_info): Update a doc-string to allow for a directory to
> have tree
> conflicts.
> (entry_has_local_mods, check_tree_conflict): New functions.
> (do_entry_deletion): Have the parent's admin access baton passed in
> by the
> caller. Check for tree conflicts.
> ### Broken when parent_adm_access is NULL.
> (delete_entry): Pass the parent's admin access baton to
> do_entry_deletion().
> (add_directory): If obstructed, raise a tree conflict.
> ### Lots of uncertainty/unfinished.
> (open_directory): Check for existing tree conflicts as well as
> property
> conflicts. If obstructed, raise a tree conflict.
> (close_directory): Set the notification's 'content_state' field
> according
> to whether there were any tree conflicts in this directory.
> (add_file): If obstructed, raise a tree conflict.
> ### Questions/unfinished.
> (open_file): If scheduled for delete, raise a tree conflict.
> (add_file_with_history): Check for a tree conflict.
> ### Error: discards the log_accum that it creates.
> (close_edit): Adjust for the new interface to do_entry_deletion():
> pass
> NULL for its new 'parent_adm_access' argument.
>
> * subversion/libsvn_wc/util.c
> (svn_wc_create_notify):
> ### A white-space change only.
>
>
> # USER INTERFACE
>
> * subversion/svn/schema/info.rnc
> (entry): Add tree-conflict and non-tree conflict info.
> ### Non-tree-conflict info is an independent bug fix.
> (wc-info): Add non-tree-conflict info.
> ### Error: shouldn't be added both in 'entry' and inside 'wc-info'.
> (tree-conflicts, tree-conflict, attlist.tree-conflict): New
> definitions.
>
> * subversion/svn/schema/status.rnc
> (attlist.wc-status): Add a flag for the whether a directory has tree
> conflicts.
> ### Want to change this to per-victim flags.
>
> * subversion/svn/info-cmd.c
> (print_info_xml, print_info): Add tree-conflict info.
>
> * subversion/svn/notify.c
> (notify): Make the 'C'onflict notification available on directories
> as
> well as files.
>
> * subversion/svn/status.c
> (print_status): Show 'C' for a tree-conflicted directory.
> (svn_cl__print_status_xml): Add 'tree-conflicted=true' to indicate a
> tree
> conflict.
>
> * subversion/svn/tree-conflicts.c,
> subversion/svn/tree-conflicts.h
> New files.
>
>
> # TESTS
>
> * subversion/tests/cmdline/checkout_tests.py
> (forced_checkout_with_versioned_obstruction): Adjust...
> ### Not clear how/why.
>
> * subversion/tests/cmdline/commit_tests.py
> (###):
> (test_list): Add the new tests.
>
> * subversion/tests/cmdline/info_tests.py
> New file of tests.
>
> * subversion/tests/cmdline/log_tests.py
> (merge_history_repos): Add an extra "resolve" to match the current
> code
> that raises a conflict on the parent. Add some comments.
>
> * subversion/tests/cmdline/merge_tests.py
> (###):
> (test_list): Add the new tests.
>
> * subversion/tests/cmdline/revert_tests.py
> (###):
> (test_list): Add the new tests.
>
> * subversion/tests/cmdline/stat_tests.py
> (###):
> (test_list): Add the new tests.
>
> * subversion/tests/cmdline/switch_tests.py
> (###):
> (test_list): Add the new tests.
>
> * subversion/tests/cmdline/tree_conflict_tests.py
> New file of tests.
>
> * subversion/tests/cmdline/tree_conflict_tests.txt
> New file documenting tree_conflict_tests.py.
>
> * subversion/tests/cmdline/update_tests.py
> (###):
> (test_list): Add the new tests.
>
> * subversion/tests/cmdline/svntest/actions.py
> (set_up_tree_conflicts, set_up_tree_conflicts_for_merge,
> make_tc_test_trees,
> tc_leaf_del, tc_tree_del, tc_text_append,
> set_up_deep_tree_conflicts_up,
> set_up_deep_tree_conflicts_sw): New functions.
>
> * subversion/tests/libsvn_wc/tree-conflict-data-test.c
> New file of tests.
>
>
> # BUILD SYSTEM
>
> * build.conf
> (options): Add 'tree_conflicts_tests.py' to 'test-scripts'.
> (tree-conflict-data-test): New section.
> (__ALL_TESTS__): Add 'tree-conflict-data-test' and
> 'tree-conflict-human-readable-test' to 'libs'.
> ### The test 'tree-conflict-human-readable-test' was deleted!
>
]]]
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-08-20 13:37:33 CEST