Checkout
Julian Foad
committed
on 21 Jan
Teach 'unshelve' to drive the new WC local mods editor.

Re: SVN-4786 "Create a WC working-mods editor", SVN-3625 "Commit shelving".

Instea… Show more
Teach 'unshelve' to drive the new WC local mods editor.

Re: SVN-4786 "Create a WC working-mods editor", SVN-3625 "Commit shelving".

Instead of applying changes directly to the WC, the changes now go through

the standard svn_delta_editor_t API. When completed, this will allow a much

more exact transfer of the possible changes, and a more resuable

implementation.

The ability to merge file text changes is lost, for the time being. This

will need to be re-implemented in the WC local mods editor. (Note that the

implementation of merging here was incomplete anyway.)

* subversion/libsvn_client/shelf.c

 (wc_file_merge,

  wc_dir_props_merge,

  wc_node_delete,

  wc_node_add): Remove.

 (apply_prop_mods,

  apply_file_mods,

  path_driver_cb_baton_t,

  path_driver_cb_func,

  shelf_replay_path_baton_t,

  shelf_replay_path_visitor,

  shelf_replay): New.

 (test_apply_files_baton_t,

  test_apply_file_visitor): Renamed remnants of a combined function.

 (svn_client__shelf_test_apply_file): Update the caller.

 (wc_mods_editor): New.

 (svn_client__shelf_apply): Use wc_mods_editor() and shelf_replay()

   instead.

* subversion/tests/cmdline/shelf_tests.py

 (unshelve_text_mod_merge,

  unshelve_text_mod_conflict,

  unshelve_undeclared_binary_mod_conflict

  unshelve_binary_mod_conflict,

  unshelve_text_prop_conflict): Mark as XFail, as merge and conflict

   behaviour has changed.

Show less