Checkout Tools
  • last updated 3 hours ago
Constraints: committers
Constraints: files
Constraints: dates

Changeset 1852967 is being indexed.

On branch swig-py3: A follow up r1851888: Save/restore Python error indicator

For all callback APIs which don't return svn_error_t * cannot notify

Python exception their caller, and as exceptions chain in Python 3,

exception conext should be detached from caller.

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

(svn_swig_py_notify_func, svn_swig_py_notify_func2,

svn_swig_py_status_func, svn_swig_py_client_status_func,

svn_swig_py_status_func2, ra_callbacks_progress_func,

svn_swig_py_config_enumerator2, svn_swig_py_config_section_enumerator2):

Save error indicator before Python function call and then restore it

after call

* subversion/libsvn_client/wc_editor.c

(svn_client__wc_copy_mods): Remove the WC locking, now that the

WC editor does it, following r1852559.

Comment out a failing swig-rb test.

Issue 4805, "delta path editor binding broken for root path".

* subversion/bindings/swig/ruby/test/test_delta.rb

(test_path_driver): Comment out (as no XFail mechanism is available).

Improve backward compatibility for svn_delta_path_driver2().

This ensures the input array is not modified, and changes the behaviour to

be less surprising.

* subversion/include/svn_delta.h,


(svn_delta_path_driver2): Add back slash prefixes if any, rather than the

first, of the inputs had one. Duplicate the array if modifying it.

Teach the WC editor to acquire and release a WC write lock.

* subversion/include/private/svn_client_private.h

(svn_client__wc_editor): Document that it manages the write lock.

(svn_client__wc_editor_internal): Add an option flag to manage the write lock.

* subversion/libsvn_client/copy.c


svn_client__repos_to_wc_copy_by_editor): Ask the WC editor not to manage

the write lock for us here, as the caller does it.

* subversion/libsvn_client/shelf.c

(svn_client__shelf_apply): Don't aquire and release the write lock here:

let the WC editor do it.

* subversion/libsvn_client/wc_editor.c

(edit_baton_t): Add fields to manage the write lock.


pool_cleanup_handler): New.

(edit_open): If requested, acquire the write lock and arrange for it to be

released on pool clean-up.

(edit_close): If acquired, release the write lock.

(svn_client__wc_editor_internal): Add the option flag to manage the write

lock. Initialize the 'abort_edit' method so that it will release the

write lock, the same as 'close_edit'.

(svn_client__wc_editor): Ask for the write lock to be managed.

In the updated delta editor path driver, ensure paths are relpaths.

This also fixes a bug with '/'-prefixed paths in svn_delta_path_driver2(). A

path given as the string "/" was handled as a regular path (first open the

editor root, then call the callback passing it the root parent-dir-baton)

rather than as a root path.

* subversion/include/svn_delta.h



svn_delta_path_driver_step): Declare that paths are relpaths.

(svn_delta_path_driver2): Document that a slash prefix is allowed.

* subversion/libsvn_delta/deprecated.c



svn_delta_path_driver2): Implement backward compatibility for a slash


* subversion/libsvn_delta/path_driver.c

(svn_delta_path_driver3): Rename variables to 'relpath', for clarity.

(svn_delta_path_driver_step): Assert the path is a relpath, remove support

for a slash prefix, and rename variables.

Minor cleanup: extract a helper function.

* subversion/libsvn_delta/path_driver.c

(push_dir_stack_item): New.

(open_dir): Use it here.

(svn_delta_path_driver_step): Use it twice here.

Upgrade uses of the editor path driver callback, following r1852526.

* subversion/libsvn_client/add.c

(path_driver_cb_func): Take the editor and edit-baton as direct parameters.

(mkdir_urls): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_client/commit_util.c

(item_commit_baton): Remove the editor and edit-baton from here.

(do_item_commit): Take the editor and edit-baton as direct parameters.

(svn_client__do_commit): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_client/copy.c

(path_driver_cb_baton): Remove the editor and edit-baton from here.

(path_driver_cb_func): Take the editor and edit-baton as direct parameters.

(repos_to_repos_copy): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_delta/branch_compat.c

(apply_change): Take the editor and edit-baton as direct parameters.

(drive_changes): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_delta/compat.c

(apply_change): Take the editor and edit-baton as direct parameters.

(drive_changes): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_repos/replay.c

(path_driver_cb_baton): Remove the editor and edit-baton from here.

(path_driver_cb_func): Take the editor and edit-baton as direct parameters.

(svn_repos_replay2): Upgrade to svn_delta_path_driver3.

Make the editor path driver callback a little easier to use.

Add 'editor' and 'edit_baton' parameters to the path driver callback. All

but trivial callback implementations need these, and they otherwise had to

be passed through the callback baton, which was straightforward but more

trouble than it need be.

* subversion/include/svn_delta.h


svn_delta_path_driver3): New.

* subversion/libsvn_delta/path_driver.c

(svn_delta_path_driver3): Rename from 'svn_delta_path_driver2'.


svn_delta_path_driver_start): Change the callback function type.

(svn_delta_path_driver_step): Pass the extra parameters.

* subversion/libsvn_delta/deprecated.c



svn_delta_path_driver2): New.

* subversion/libsvn_client/shelf.c

(path_driver_cb_func): Take 'editor' and 'edit_baton' as direct parameters.


svn_client__shelf_replay): Remove them from the path driver baton.

* subversion/include/svn_delta.h (svn_delta_path_driver_cb_func_t): Improve docs.
* STATUS: Nominate r1852436.

* STATUS: Nominate r1852436.

* STATUS: Nominate r1852436.

Make 'svn update' not record a tree conflict when deleting an unmodified

directory which happens to contain unversioned items. Instead, just leave

the unversioned items behind on disk when deleting the unmodified directory,

which matches the behaviour of Subversion 1.8.

Prompted by a question on users@:

* subversion/libsvn_wc/update_editor.c

(check_tree_conflict): Ignore unversioned items during check for local mods.

This prevents a tree conflict from being recorded.

* subversion/tests/cmdline/

(tolerate_local_mods): Don't expect an unversioned item to cause a tree

conflict. Add the item to version control instead to meet this test's


* subversion/tests/cmdline/

(update_keeps_unversioned_items_in_deleted_dir, test_list): New test

which ensures that update will leave unversioned items on disk when

deleting an unmodified directory.

* CHANGES: Retroactively add date of 1.11.1, 1.10.4, and 1.9.10 releases.

Make the new shelf-replay-to-delta-editor API public (experimental).

* subversion/include/svn_client.h,


(svn_client__shelf_apply): Rename from 'shelf_replay' and make public.

* subversion/libsvn_client/shelf.c (shelf_name_from_filename): Use consistent data types.
* subversion/libsvn_client/shelf.c (path_driver_cb_func): Fix the build, following r1852382.
* subversion/libsvn_client/shelf.c

(path_driver_cb_func): Always initialize the 'dir baton' output parameter,

as other implementations of this callback type do, even though driver

may not require it.

Fix a regression in the svn_delta_path_driver2().

Introduced in r1851738.

* subversion/libsvn_delta/path_driver.c

(svn_delta_path_driver_step): Restore predictable behaviour for callbacks

that don't set the 'dir baton' output parameter.

Fix 'unshelve' of property mods.

Found by: stsp

* subversion/libsvn_client/shelf.c

(path_driver_cb_func): Open the correct directory before trying to apply

its property mods. Fix other doc strings too.

In the WC-mods-editor: fix properties handling; simplify.

Handle property changes correctly. Previously, property deletions were


Simplify by applying incoming changes as they arrive. Previously we were

batching up some changes such as property changes and creating new files and

dirs, which could be more efficient but is harder to get right, as evidenced

by the above bug fix.

Simplify by not managing subpools for the directory and file batons. The

edit driver should do that.

* subversion/libsvn_client/wc_editor.c


mkfile): New.







file_open): Don't track the 'created' state and properties here.


file_add): Always create the versioned node here.


file_change_prop): Always apply property changes here.


file_close): Never create nodes and apply property changes here.


ensure_added_file): Delete.

* subversion/include/svn_delta.h (svn_delta_editor_t): Fix param name in docs.
Remove internal pool management from the WC editor.

The path driver, which wraps this editor, already provides a result pool

hierarchy. This can be used by the WC editor instead of having it manage

another such hierarchy internally.

Review by: julianfoad

* subversion/libsvn_client/wc_editor.c

(edit_baton_t, svn_client__wc_editor_internal): Remove local pool.

(dir_baton_t) Remove the local pool users counter.

(dir_open_or_add, edit_open, dir_open, dir_add, dir_change_prop,

file_open_or_add, file_add): Allocate results in result_pool provided

by the caller, i.e. the path driver.

(file_close, maybe_done): Remove maybe_done() helper which is now unused.

* STATUS: Vote +1 on r1850651.
* STATUS: Vote +1 on r1850651.
* STATUS: Vote +1 on r1850651.
Tweaks in the WC mods editor, issue SVN-4786.

* subversion/libsvn_client/wc_editor.c

(dir_open_or_add): Support opening the root dir. Move higher up.

(edit_open): Use dir_open_or_add.

(dir_open, dir_add): Adjust callers.

(dir_change_prop, file_change_prop): Shorten slightly.

(ensure_added_dir): Rename from 'ensure_added', and update callers.

* CHANGES: Catch-up merge from trunk.
* CHANGES: Catch-up merge from trunk.