Stephen Butler <>

r30016, r29989, r29984, r29868, r29590, r29587, r29058, r28069, r27766

r30016 | stsp | 2008-03-23 17:44:25 -0500 (Sun, 23 Mar 2008)

On the tree-conflicts branch, add support for detection of use cases 4 and 6.

Patch by: Stephen Butler <>
Log message by me.

* subversion/include/svn_wc.h
  (svn_wc_notify_t): Remove the tree_state member, we can use
   the content_state member instead.
  (svn_wc_add_tree_conflict_data): Declare new function.

* subversion/libsvn_wc/tree_conflicts.c
  (svn_wc__add_tree_conflict_data): This needs to be called from
   the client library, hence it has been split into ...
  (svn_wc_add_tree_conflict_data): ... this function, which is public
   and a wrapper around ...
  (svn_wc__loggy_add_tree_conflict_data): ... this one.
   This function expects a log accumulator and is therefore suitable
   for use from within libsvn_wc, but is otherwise equivalent to its
   public wrapper.

* subversion/libsvn_wc/tree_conflicts.h
  (svn_wc__add_tree_conflict_data): Remove declaration, this function
   has been superseded, see above.
  (svn_wc__loggy_add_tree_conflict_data): Declare new function.

* subversion/libsvn_wc/util.c
  (svn_wc_create_notify): Track removal of tree_state member of

* subversion/libsvn_wc/update_editor.c
  (do_entry_deletion, do_entry_deletion, open_file): Track replacement
   of svn_wc__add_tree_conflict_data, see above.
  (close_directory): Track removal of tree_state member of svn_wc_notify_t.

* subversion/libsvn_client/repos_diff.c
  (close_directory): We want notifications about the state of directories
   if they are tree-conflicted, so don't hard-code the notification state
   to "inapplicable".

* subversion/libsvn_client/merge.c
  (merge_cmd_baton_t): Add new member tree_conflicted_dirs.
  (add_parent_to_tree_conflicted_dirs, is_tree_conflicted_dir_p):
   New functions.
  (merge_file_changed): Detect a use case 4 tree conflict.
  (merge_file_deleted): Detect a use case 6 tree conflict.
   Also, add a bit of code for detecting a use case 5 tree conflict.
   This is not yet complete, and commented out for now. We'll extend
   and enable this code later.
  (merge_dir_closed): If a tree conflict happened during a merge
   into a directory, set the notification state appropriately.
  (do_merge): Initialise the merge baton's new tree_conflicted_dirs member.

* subversion/tests/cmdline/svntest/
  (set_up_tree_conflicts_for_merge): New helper function.

* subversion/tests/cmdline/ 
  (merge_catches_nonexistent_target): This test causes a tree conflict.
   Update it so it does not fail because of this.
  (verify_lines): New helper function.
  (tree_conflicts_in_merged_files): New test. Currently, it tests for
   use case 4 and 6 only. Expected output related to use case 5 is
   also present, but commented out for now.

* subversion/svn/notify.c
  (notify): Track removal of tree_state member of svn_wc_notify_t.
   Also, now that directories can be in a conflicted state just as
   well as files, we need less special-casing here and can simplify
   the code for update notification. Hooray!

r29989 | stsp | 2008-03-21 17:30:57 -0500 (Fri, 21 Mar 2008)

On the diff-callbacks3 branch, apply the patch attached to issue #3134

Patch by: Stephen Butler <>

Extend the diff-callbacks struct to handle the opening and closing of
a directory explicitly.  For backward compatibility, name the new
struct svn_wc_diff_callbacks3_t.

In libsvn_wc, create the new struct, adjust all relevant function args
and comments to track the new version, and add code to call the new
callbacks (dir_opened() and dir_closed()).

In libsvn_client, add new callback implementations for diff and merge,
and track the version change.

For merge, the new callbacks don't do anything yet.  The dir_closed()
function will be used to report tree conflicts.  We planned to use
dir_opened() to block merge from entering a conflicted directory.
Currently, we have a different strategy that doesn't use dir_opened(),
but, hey, you never know.

For diff, the new callbacks exist for compatibility only.

* subversion/include/svn_wc.h
  (svn_wc_diff_callbacks3_t): New struct.
  (svn_wc_diff_callbacks2_t): Moved comments to the new struct,
   editing slightly to avoid repetition.  Added deprecation comments.
  (svn_wc_get_diff_editor5): New function.
  (svn_wc_get_diff_editor4): Deprecated (edit to comment only).
  (svn_wc_diff5): New function.
  (svn_wc_diff4): Deprecated (edit to comment only).

* subversion/libsvn_wc/diff.c
  (edit_baton): Track diff-callbacks version in struct field.
   svn_wc_get_diff_editor4): Track diff-callbacks version.
   dir_props_changed): Track diff-callbacks version in comments only.
   svn_wc_diff5): New functions.
  (svn_wc_diff4): Deprecated (edit to comment only).
  (callbacks2_wrapper): New struct.

* subversion/libsvn_client/repos_diff.c
  (edit_baton): Track diff-callbacks version bump in struct.
  (close_directory): Move the call to get_path_access() so that it is
   done unconditionally, because a valid adm_access is always needed
   by the call to the new dir_closed() callback.  
  (svn_client__get_diff_editor): Track diff-callbacks version.

* subversion/libsvn_client/client.h
  (svn_client__get_diff_editor): Track diff-callbacks version.

* subversion/libsvn_client/diff.c
   diff_dir_deleted: Track diff-callbacks version in comment only.
   diff_dir_closed): New functions.
   diff_repos_wc): Track diff-callbacks version in args; track new
   public function names.
  (svn_client_diff4): Track diff-callbacks version internally. 
   Include the new functions in the diff-callback initialization.

* subversion/libsvn_client/diff.c
   merge_dir_deleted: Track diff-callbacks version in comment only.
   merge_dir_closed): New functions.
  (drive_merge_report_editor): Track diff-callbacks version in args.

r29984 | stsp | 2008-03-21 13:39:18 -0500 (Fri, 21 Mar 2008)

* notes/tree-conflicts/detection.txt: Remove the section explaining
   why detecting tree conflicts during merge requires history.
   It has been made obsolete by recent design discussions.
   Further update descriptions of how we plan to detect use cases
   4 and 6. Completely rewrite the section on use case 5, which
   was still outdated wrt latest discussion.

Patch by: Stephen Butler <>

r29868 | kfogel | 2008-03-11 20:11:37 -0500 (Tue, 11 Mar 2008)

* CHANGES (1.5.0): Insert preliminary list of changes.

Patch by: Augie Fackler <>
          Greg Lutz <>
          Gavin 'Beau' Baumanis <>
          Hilco Wijbenga <>
          Tuomas Koski <>
          Daniel Torreblanca <>
          Stephen Butler <>
          Wouter van der Horst <>

See the 'manyhands' mailing list for details.

r29590 | stsp | 2008-02-25 15:10:19 -0600 (Mon, 25 Feb 2008)

On the tree-conflicts branch, apply a few fixes by Stephen Butler
and Neels Janosch Hofmeyr.

* subversion/libsvn_wc/tree_conflicts.c
  (read_victim_path): Correct boolean expression in if statement.
   Chaining checks for inequality with boolean OR does not make much sense.
   Found by Neels.
  (read_reason, svn_wc__write_tree_conflicts_to_entry): Add missing
   case to switch statement. Found by Stephen.

* subversion/libsvn_client/info.c
  (build_info_from_entry): Fix potential reference to uninitialized data.
   Fix comment to explicitly mention that only this-dir entries
   carry tree conflict data. Both found by Neels.

* subversion/libsvn_wc/questions.c: Same comment fix as in info.c

Patch by: Neels Janosch Hofmeyr <>
          Stephen Butler <>

r29587 | stsp | 2008-02-25 13:25:55 -0600 (Mon, 25 Feb 2008)

Add design discussion notes by Stephen Butler.

* notes/tree-conflicts/detection.txt:
  Expand on use cases 4 to 6 by describing the current plan for
  finding in the repository history the information needed to
  detect tree conflicts during merge.
  Move "true rename" discussion to the end of the file.
  Also improve wording of existing text a bit.

Patch by: Stephen Butler <>

r29058 | julianfoad | 2008-01-26 20:23:26 -0600 (Sat, 26 Jan 2008)

Fix syntax errors in RelaxNG schema files for svn output.

* subversion/svn/schema/status.rnc
  The second 'target' declaration should be named 'changelist'.

* subversion/svn/schema/diff.rnc
  The text was doubled, for some reason.
  Add a missing declaration for the <diff> element.

Patch by: Stephen Butler <>

r28069 | stsp | 2007-11-27 11:05:34 -0600 (Tue, 27 Nov 2007)

* subversion/include/svn_wc.h:
  (svn_wc_entry_t): Improve comment about extending svn_wc_entry_t,
   listing additional functions in subversion/libsvn_wc/entries.c
   that may need to be extended.

Patch by: Stephen Butler <>
Approved by: hwright

r27766 | dlr | 2007-11-12 11:21:30 -0600 (Mon, 12 Nov 2007)

Use the SVNUnexpectedOutput, SVNUnexpectedStdout, and
SVNUnexpectedStderr exception classes from the svntest.verify module,
rather than referring to their old location in svntest.action.  (They
were moved to in r26716.)

On test success there's no warning, but on test failure we get an
AttributeError.  This is really just a nit, because the exception
classes are simply names.

* subversion/tests/cmdline/
  (import_ignores): Reference exception from correct module name.
* subversion/tests/cmdline/
  (update_conflict_props): Ditto.
* subversion/tests/cmdline/
  (basic_add_ignores): Ditto.
  (basic_add_no_ignores): Ditto.
* subversion/tests/cmdline/
  (hook_test): Ditto.
  (start_commit_detect_capabilities): Ditto.
* subversion/tests/cmdline/
  (broken_authz_file): Ditto.

Patch by: Stephen Butler <>