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

Changeset 843313 is being indexed.

Abstract the interface for parsing options and arguments, in

preparation for fixing svnadmin's and svnlook's command-line parsing.

Define the new interface:

* subversion/include/svn_opt.h, subversion/libsvn_subr/opt.c: New files.

Move the old parsing code out of the command-line client:

* subversion/clients/cmdline/main.c: Include svn_opt.h.

(svn_cl__options): Redocument. Also, add the missing 0 placeholder

in the terminating element.

(svn_cl__cmd_table): This is of type svn_opt_subcommand_desc_t now.

(SVN_CL__MAX_ALIASES, SVN_CL__MAX_OPTS, svn_cl__cmd_desc_t):

Removed, became SVN_OPT_MAX_ALIASES, SVN_OPT_MAX_OPTIONS, and

svn_opt_subcommand_desc_t respectively, in svn_opt.h.

(svn_cl__get_canonical_command): Removed, this is now

svn_opt_get_canonical_subcommand in opt.c. All callers changed.

(svn_cl__get_option_from_enum): Removed, this is now

svn_opt_get_option_from_code in opt.c. All callers changed.

(subcommand_takes_option): Removed, this is now

svn_opt_subcommand_takes_option in opt.c. All callers changed.

(svn_cl__print_generic_help): Removed, this is now

svn_opt_print_generic_help in opt.c. All callers changed.

(svn_cl__subcommand_help): Removed, this is now

svn_opt_subcommand_help in opt.c. All callers changed.

(format_option): Removed, this is now svn_opt_format_option in

opt.c. All callers changed.

(print_command_info, revision_from_word, valid_revision_number):

Moved these static helper functions to opt.c.

(parse_date): Removed, this is now svn_opt_parse_date in svn_opt.c.

All callers changed.

(svn_cl__parse_revision): Removed, this is now

svn_opt_parse_revision in opt.c. All callers changed.

(main): Adjust to the new interface.

* subversion/clients/cmdline/cl.h: Include svn_opt.h.

(svn_cl__get_option_from_code): Removed, this is now

svn_opt_get_option_from_code in svn_opt.h. All callers changed.

(svn_cl__help_header, svn_cl__help_footer): New variables.

(svn_cl__print_generic_help): Removed, this is now

svn_opt_print_generic_help in svn_opt.h. All callers changed.

(svn_cl__subcommand_help): Removed, this is now

svn_opt_subcommand_help in svn_opt.h. All callers changed.

(svn_cl__parse_revision): Removed, this is now

svn_opt_parse_revision in svn_opt.h. All callers changed.

(svn_cl__options, svn_cl__cmd_table): Declare extern.

(svn_cl__longopt_t): Use SVN_OPT_FIRST_LONGOPT_ID instead of 256.

(svn_cl__add, svn_cl__checkout, svn_cl__cleanup, svn_cl__commit,

svn_cl__copy, svn_cl__delete, svn_cl__diff, svn_cl__export,

svn_cl__help, svn_cl__import, svn_cl__info, svn_cl__log,

svn_cl__ls, svn_cl__merge, svn_cl__mkdir, svn_cl__move,

svn_cl__propdel, svn_cl__propedit, svn_cl__propget,

svn_cl__proplist, svn_cl__propset, svn_cl__revert, svn_cl__resolve,

svn_cl__status, svn_cl__switch, svn_cl__update): Declare as type

svn_opt_subcommand_t instead of svn_cl__cmd_proc_t.

Trivial adjustments across the client code:

* subversion/clients/cmdline/cleanup-cmd.c (svn_cl__cleanup):

* subversion/clients/cmdline/checkout-cmd.c (svn_cl__checkout):

* subversion/clients/cmdline/add-cmd.c (svn_cl__add):

* subversion/clients/cmdline/commit-cmd.c (svn_cl__commit):

* subversion/clients/cmdline/copy-cmd.c (svn_cl__copy):

* subversion/clients/cmdline/delete-cmd.c (svn_cl__delete):

* subversion/clients/cmdline/diff-cmd.c (svn_cl__diff):

* subversion/clients/cmdline/export-cmd.c (svn_cl__export):

* subversion/clients/cmdline/import-cmd.c (svn_cl__import):

* subversion/clients/cmdline/help-cmd.c (svn_cl__help):

* subversion/clients/cmdline/info-cmd.c (svn_cl__info):

* subversion/clients/cmdline/log-cmd.c (svn_cl__log):

* subversion/clients/cmdline/ls-cmd.c (svn_cl__ls):

* subversion/clients/cmdline/merge-cmd.c (svn_cl__merge):

* subversion/clients/cmdline/mkdir-cmd.c (svn_cl__mkdir):

* subversion/clients/cmdline/move-cmd.c (svn_cl__move):

* subversion/clients/cmdline/propdel-cmd.c (svn_cl__propdel):

* subversion/clients/cmdline/propedit-cmd.c (svn_cl__propedit):

* subversion/clients/cmdline/propget-cmd.c (svn_cl__propget):

* subversion/clients/cmdline/proplist-cmd.c (svn_cl__proplist):

* subversion/clients/cmdline/propset-cmd.c (svn_cl__propset):

* subversion/clients/cmdline/resolve-cmd.c (svn_cl__resolve):

* subversion/clients/cmdline/revert-cmd.c (svn_cl__revert):

* subversion/clients/cmdline/status-cmd.c (svn_cl__status):

* subversion/clients/cmdline/switch-cmd.c (svn_cl__switch):

* subversion/clients/cmdline/update-cmd.c (svn_cl__update): Match the

new svn_opt_subcommand_t prototype by taking a void baton and casting

it to svn_cl__opt_state_t; also, fix up a few calls, and document

that these implement svn_opt_subcommand_t now.

* subversion/include/svn_client.h: Include svn_opt.h.

(svn_client_revision_kind,

svn_client_revision_unspecified,

svn_client_revision_number,

svn_client_revision_date,

svn_client_revision_committed,

svn_client_revision_previous,

svn_client_revision_base,

svn_client_revision_working,

svn_client_revision_head): Moved to svn_opt.h and renamed to

svn_opt_revision_kind, svn_opt_revision_unspecified,

svn_opt_revision_number, svn_opt_revision_date,

svn_opt_revision_committed, svn_opt_revision_previous,

svn_opt_revision_base, svn_opt_revision_working,

svn_opt_revision_head respectively. All callers changed.

  1. … 43 more files in changeset.
Rework the path library to accept and return "" as the only canonical

empty path. Make sure the client canonicalizes all paths passed to

the libraries. The path library now assumes that its inputs are

canonical. Remove the use of explicit "." except for a few special

cases.

* subversion/include/svn_path.h (svn_path_join, svn_path_split,

svn_path_is_empty, svn_path_is_single_path_component,

svn_path_split_if_file, svn_path_url_add_component): Tweak documentation.

* subversion/libsvn_subr/path.c

(SVN_EMPTY_PATH, SVN_PATH_IS_EMPTY, SVN_PATH_IS_PLATFORM_EMPTY): New macros.

(SVN_PATH_SEPARATOR): Delete macro as we cannot change the separator. Change

all uses in the file to an explicit '/'.

(discount_trailing_dot_slash, is_canonical_nts): New functions.

(svn_path_canonicalize, svn_path_canonicalize_nts): Strip trailing

dots as well as slashes, convert "." to "".

(svn_path_join_many): Rework without considering ".".

(add_component_internal): No need to canonicalize.

(svn_path_remove_component, svn_path_remove_component_nts): No need

to canonicalize input. After removing component, strip trailing dots

and slashes, and convert "." to "".

(svn_path_basename): Convert "." to "".

(svn_path_split): No need to canonicalize input.

(svn_path_get_longest_ancestor): No need to canonicalize inputs.

(svn_path_decompose): Convert "." to "".

(svn_path_split_if_file): Return "" as empty path if input is a

directory.

(svn_path_url_add_component): Canonicalize input URL.

(svn_path_internal_style, svn_path_local_style, svn_path_join,

svn_path_is_empty, svn_path_is_empty_nts, svn_path_compare_paths,

svn_path_compare_paths_nts, svn_path_is_child,

svn_path_is_single_path_component): Change to use new macros, or to

use explicit '/', or to assert canonical input.

* subversion/clients/cmdline/util.c

(svn_cl__args_to_target_array): Add canonicalization of paths. Move

svn_path_basename call after UTF-8 and canonicalization.

(svn_cl__edit_externally): Convert "" to "." to satisfy APR.

* subversion/tests/libsvn_subr/path-test.c

(SVN_EMPTY_PATH): New macro.

(test_path_split): Remove non-canonical inputs. Add new tests. Test

svn_path_split_nts as well.

(test_join, test_basename): Remove non-canonical inputs. Add new tests.

(test_canonicalize): New test.

* subversion/libsvn_subr/io.c (svn_io_remove_dir, svn_io_stat, svn_io_dir_open,

apr_dir_is_empty): Convert "" to "." to satisfy APR.

* subversion/libsvn_client/update.c (svn_client_update): Accept "" path.

* subversion/mod_dav_svn/update.c (get_from_path_map): Break on "/". How did

this ever work before?

* subversion/clients/cmdline/revert-cmd.c (svn_cl__revert): Delete

svn_path_canonicalize_nts call.

* subversion/clients/cmdline/update-cmd.c (svn_cl__update): Delete

svn_path_canonicalize_nts call.

Replace explicit "." with "" and remove the construct

if (svn_path_is_empty_nts(path))

path = "."

from the following files

* subversion/libsvn_wc/entries.c

* subversion/libsvn_wc/adm_ops.c

* subversion/libsvn_wc/adm_files.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_client/switch.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/delete.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/repos_diff.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/add.c

* subversion/libsvn_client/commit.c

* subversion/clients/cmdline/merge-cmd.c

* subversion/clients/cmdline/checkout-cmd.c

* subversion/clients/cmdline/switch-cmd.c

* subversion/clients/cmdline/import-cmd.c

* subversion/libsvn_ra_dav/fetch.c

* subversion/libsvn_ra_dav/commit.c

  1. … 27 more files in changeset.
Continuing issue #749. Pass the access baton to svn_wc__entry_modify.

This is quite a large change as far as the number of functions affected

is concerned, but it's all just to support svn_wc__entry_modify.

* subversion/libsvn_wc/entries.h (svn_wc__entry_modify): Change char*

path parameter to access baton.

* subversion/libsvn_wc/entries.c (svn_wc__entry_modify): Change char*

path parameter to access baton.

* subversion/include/svn_wc.h

(svn_wc_adm_access_pool): New function.

(svn_wc_diff_callbacks_t): Add an access baton parameter to the

members file_changed, file_added, file_deleted, dir_added, dir_deleted,

props_changed.

(svn_wc_copy): Change dst_parent parameter from char* to access baton.

(svn_wc_get_update_editor, svn_wc_get_switch_editor): Change anchor

parameter from a char* path to an access baton.

(svn_wc_add, svn_wc_install_file, svn_wc_merge, svn_wc_merge_prop_diffs,

svn_wc_revert): Add access baton parameter.

* subversion/include/svn_client.h (svn_client_copy): Add access baton

parameter and note it is temporary until 838 is fixed.

* subversion/libsvn_client/copy.c

(svn_client_copy, setup_copy): Add access baton parameter.

(repos_to_wc_copy, wc_to_wc_copy): Add access baton parameter. Open

and close access baton if required.

* subversion/clients/cmdline/copy-cmd.c (svn_cl__copy): Pass NULL access

baton to svn_client_copy.

* subversion/libsvn_client/client.h (svn_client__get_diff_editor): Add

access baton parameter.

* subversion/libsvn_client/diff.c

(diff_file_changed, diff_file_added, diff_file_deleted, diff_dir_added,

diff_dir_deleted, diff_props_changed, merge_file_changed,

merge_file_deleted, merge_dir_deleted): Add access baton parameter.

(merge_file_added, merge_dir_added): Add access baton parameter. Pass

access baton to svn_client_copy.

(merge_props_changed): Add access baton parameter. Pass access baton

to svn_wc_merge_prop_diffs.

(do_merge): Open and close an access baton. Pass access baton to

svn_client__get_diff_editor.

(do_single_file_merge): Open and close an access baton. Pass access

baton to svn_wc_merge.

(do_diff): Pass NULL access baton to svn_client__get_diff_editor.

* subversion/libsvn_client/commit.c (svn_client_commit): Remove node

kind check, add root check and open parent where possible.

* subversion/libsvn_client/add.c

(add_dir_recursive): Add access baton parameter.

(svn_client_add): Open/close access baton.

(svn_client_mkdir): Use svn_client_add to handle access batons.

* subversion/libsvn_client/repos_diff.c

(struct edit_baton): Add access baton member.

(delete_entry, add_directory, close_file, close_directory): Pass access

baton to svn_wc_diff_callbacks_t functions.

* subversion/libsvn_client/revert.c (svn_client_revert): Pass NULL access

baton to svn_wc_revert.

* subversion/libsvn_client/switch.c (svn_client_switch): Open and close

access batons. Pass access baton to svn_wc_get_switch_editor and

svn_wc_install_file.

* subversion/libsvn_client/update.c (svn_client_update): Open an access

baton and pass to svn_wc_get_update_editor.

* subversion/libsvn_wc/adm_ops.c

(svn_wc_process_committed): Pass access baton to svn_wc__entry_modify.

(mark_tree): Change char* path parameter to access baton. Pass

access baton to svn_wc__entry_modify.

(svn_wc_delete): Move access baton open/close to hold access baton for

longer. Pass access baton to mark_tree and svn_wc__entry_modify.

(svn_wc_add): Add an access baton parameter. Pass access baton to

mark_tree and svn_wc__entry_modify.

(svn_wc_revert): Add access baton parameter. Open/close access baton

if required. Pass access baton to svn_wc__entry_modify.

(resolve_conflict_on_entry): Open/close access baton. Pass access baton

to svn_wc__entry_modify.

* subversion/libsvn_wc/update_editor.c

(struct edit_baton): Add access baton member.

(maybe_bump_dir_revision): Retrieve access baton and pass to

svn_wc__entry_modify.

(prep_directory): Change char* path parameter to dir baton. Remove unused

force parameter and code. Open access baton for directory.

(open_root): Pass dir baton to prep_directory.

(delete_entry): Retrieve access baton instead of opening/closing it. Pass

dir baton to prep_directory.

(change_dir_prop): Retrieve access baton and pass to svn_wc__entry_modify.

(close_directory): Retrieve access baton instead of opening/closing it.

(svn_wc_install_file): Add access baton parameter. Don't open/close

access baton.

(close_file): Retrieve access baton and pass to svn_wc_install_file.

(close_edit): Close access baton.

(make_editor): Change char* anchor parameter to access baton. Store

access baton in edit baton.

(svn_wc_get_update_editor, svn_wc_get_switch_editor): Change char*

anchor parameter to access baton.

(svn_wc_get_checkout_editor): Pass NULL access baton to make_editor.

* subversion/libsvn_wc/diff.c (file_diff, directory_elements_diff,

delete_entry, close_directory, close_file): Pass NULL access baton to

svn_wc_diff_callbacks_t functions.

* subversion/libsvn_wc/log.c

(log_do_merge): Pass access baton to svn_wc_merge.

(log_do_modify_entry, log_do_delete_entry, log_do_committed,

svn_wc__run_log): Pass access baton to svn_wc__entry_modify.

* subversion/libsvn_wc/merge.c (svn_wc_merge): Add an access baton

parameter and pass to svn_wc__entry_modify.

* subversion/libsvn_wc/copy.c

(copy_file_administratively, copy_dir_administratively, svn_wc_copy): Add

an access baton parameter.

* subversion/libsvn_wc/props.c

(svn_wc_merge_prop_diffs): Add an acesss baton parameter. Remove

open/close of access baton.

(svn_wc_prop_set): Open and close an access baton.

* subversion/clients/cmdline/revert-cmd.c (svn_cl__revert): Canonicalize path.

* subversion/clients/cmdline/update-cmd.c (svn_cl__update): Remove

svn_wc_get_actual_target call. Canonicalize target.

* subversion/libsvn_wc/lock.c

(create_lock): Don't sleep for one second if the requested wait is zero.

(svn_wc_adm_access_pool): New function.

* subversion/tests/clients/cmdline/copy_tests.py

(no_wc_copy_overwrites): Run cleanup after failed copy.

* subversion/tests/clients/cmdline/basic_tests.py

(basic_corruption): Add 'svn cleanup' after failed 'svn update'.

  1. … 25 more files in changeset.
Continuing work on issue #494. This patch changes the behavior of

some of the client helper functions to try to cut out unnecessary

native-to-utf8 (or vice-versa) conversions. Also, we no longer

convert to and from UTF-8 when storing or retrieving non-svn:

properties.

* subversion/include/svn_types.h

(svn_prop_kind): Typedef this badboy.

(svn_property_kind): Now return the typedef'd value. Also allow

NULL for prefix_len to indicate caller apathy.

(svn_prop_is_svn_prop): New.

* subversion/include/svn_utf.h

(svn_utf_string_to_utf8): New.

* subversion/libsvn_subr/utf.c

(svn_utf_string_to_utf8): New.

* subversion/libsvn_subr/sorts.c

(svn_prop_is_svn_prop): New.

(svn_property_kind): Return typedef'd value. Also, only populate

prefix_len if it is non-NULL.

(svn_categorize_props): Pass NULL for prefix_len args to svn_property_kind.

* subversion/libsvn_client/copy.c

(repos_to_wc_copy): Pass NULL for prefix_len args to svn_property_kind.

* subversion/libsvn_wc/update_editor.c

(svn_wc_install_file): Pass NULL for prefix_len args to svn_property_kind.

* subversion/clients/cmdline/main.c

(main): Some comments and formatting touchups.

* subversion/clients/cmdline/cl.h

Minor formatting changes and comments.

(svn_cl__opt_state_t): Remove `args'.

(svn_cl__parse_num_args, svn_cl__parse_all_args): Add `args_p' and comments.

(svn_cl__print_prop_hash, svn_cl__print_prop_names): Update docstrings.

* subversion/clients/cmdline/util.c

(array_push_str_utf8): Remove.

(svn_cl__parse_all_args): Add 'args_p' parameter, and if there are

no args to parse, just return an empty array.

(svn_cl__parse_num_args): Add 'args_p' parameter.

(svn_cl__args_to_target_array): Add 'targets_p' argument, and now

return an svn_error_t *.

* subversion/clients/cmdline/checkout-cmd.c

(svn_cl__checkout): Use svn_cl__args_to_target_array instead of

svn_cl__parse_all_args.

* subversion/clients/cmdline/export-cmd.c

(svn_cl__export): Use svn_cl__args_to_target_array instead of

svn_cl__parse_all_args, and don't make the auth_baton twice.

Also, simplify the logic a little bit.

* subversion/clients/cmdline/help-cmd.c

(svn_cl__help): Use svn_cl__parse_all_args instead of

svn_cl__args_to_target_array, so we no longer need to convert back

from UTF-8.

* subversion/clients/cmdline/propdel-cmd.c

(svn_cl__propdel): Fix spacing in printed message. Update calls to

svn_cl__parse_num_args and svn_cl__args_to_target_array. Fix up

the UTF-8 stuffs as a result.

* subversion/clients/cmdline/propedit-cmd.c

(svn_cl__propedit): Update calls to svn_cl__parse_num_args and

svn_cl__args_to_target_array. Fix up the UTF-8 stuffs as a

result.

* subversion/clients/cmdline/propget-cmd.c

(svn_cl__propget): Update calls to svn_cl__parse_num_args and

svn_cl__args_to_target_array. Distiguish between svn: and

non-svn: props in our UTF-8 handling.

* subversion/clients/cmdline/props.c

(svn_cl__print_prop_hash): Remove unnecessary cast. Distiguish

between svn: and non-svn: props in our UTF-8 handling.

(svn_cl__print_prop_names): Remove unnecessary cast.

* subversion/clients/cmdline/propset-cmd.c

(svn_cl__propset): Update calls to svn_cl__parse_num_args and

svn_cl__args_to_target_array. Distinguish between svn: and

non-svn: properties, storing the svn: ones in UTF-8 and the rest

binarily.

The following just had their calls to svn_cl__args_to_target_array

updated, plus perhaps some minor formatting changes:

* subversion/clients/cmdline/add-cmd.c (svn_cl__add)

* subversion/clients/cmdline/cleanup-cmd.c (svn_cl__cleanup)

* subversion/clients/cmdline/commit-cmd.c (svn_cl__commit)

* subversion/clients/cmdline/copy-cmd.c (svn_cl__copy)

* subversion/clients/cmdline/delete-cmd.c (svn_cl__delete)

* subversion/clients/cmdline/diff-cmd.c (svn_cl__diff)

* subversion/clients/cmdline/import-cmd.c (svn_cl__import)

* subversion/clients/cmdline/info-cmd.c (svn_cl__info)

* subversion/clients/cmdline/log-cmd.c (svn_cl__log)

* subversion/clients/cmdline/merge-cmd.c (svn_cl__merge)

* subversion/clients/cmdline/mkdir-cmd.c (svn_cl__mkdir)

* subversion/clients/cmdline/move-cmd.c (svn_cl__move)

* subversion/clients/cmdline/proplist-cmd.c (svn_cl__proplist)

* subversion/clients/cmdline/resolve-cmd.c (svn_cl__resolve)

* subversion/clients/cmdline/revert-cmd.c (svn_cl__revert)

* subversion/clients/cmdline/status-cmd.c (svn_cl__status)

* subversion/clients/cmdline/switch-cmd.c (svn_cl__switch)

* subversion/clients/cmdline/update-cmd.c (svn_cl__update)

  1. … 34 more files in changeset.
Several of the subcommands were printing the usage message twice.

Since the main() function prints the usage message any time the

SVN_ERR_CL_ARG_PARSING_ERROR is returned, these subcommands no longer

need to explicitly print the usage message themselves.

* subversion/clients/cmdline/revert-cmd.c

(svn_cl__revert): Don't print usage message, just return the usage

error. Also, re-organize these blocks to reduce indentation, and

use a subpool for iterations.

* subversion/clients/cmdline/switch-cmd.c

(svn_cl__switch): Don't print usage message, just return the usage error.

* subversion/clients/cmdline/resolve-cmd.c

(svn_cl__resolve): Don't print usage message, just return the usage

error. Also, re-organize these blocks to reduce indentation.

* subversion/clients/cmdline/move-cmd.c

(svn_cl__move): Don't print usage message, just return the usage error.

* subversion/clients/cmdline/mkdir-cmd.c

(svn_cl__mkdir): Don't print usage message, just return the usage

error. Also, re-organize these blocks to reduce indentation.

* subversion/clients/cmdline/delete-cmd.c

(svn_cl__delete): Don't print usage message, just return the usage

error. Also, re-organize these blocks to reduce indentation.

* subversion/clients/cmdline/copy-cmd.c

(svn_cl__copy): Don't print usage message, just return the usage error.

* subversion/clients/cmdline/cleanup-cmd.c

(svn_cl__cleanup): Don't print usage message, just return the usage

error. Also, re-organize these blocks to reduce indentation, and

use a subpool for iterations.

* subversion/clients/cmdline/add-cmd.c

(svn_cl__add): Don't print usage message, just return the usage

error. Also, re-organize these blocks to reduce indentation.

  1. … 8 more files in changeset.
Merge notification system changes from the issue-662-dev branch:

svn merge -r2198:2212 http://svn.collab.net/repos/svn/branches/issue-662-dev

Plus the following post-merge changes:

* subversion/tests/clients/cmdline/update_tests.py

(update_delete_modified_files): Pass 'log msg' as the commit message,

not 'foo'. Otherwise, if you happen to have a file `foo' lying

around, svn ci complains that the log message is a pathname :-).

* subversion/tests/clients/cmdline/switch_tests.py: Set the

svn:executable property on this file.

(commit_routine_switching): Same 'log msg' change as above.

This resolves enough of issue #662 to allow us to finish issue #517

(module system).

To help understand what's left to do for issue #662, here's a

chronology of the issue-662-dev branch:

2198 -- Created branches/issue-662-dev/, based on trunk/

2199 -- Commited an almost-complete rewrite of the notification

system, making most things use a notify callback instead of

trace editor. The only thing left using a trace editor

after this is `svn merge'. However, the branch no longer

passes "make check" after this, due to various differences

between the old trace output and the new notification

output.

2202 -- Reverted the changes to the commit/copy/import/ system, as

that portion of 2199 was causing most of the test suite

failures. After this, only a few tests still fail.

2212 -- Made the remaining tests pass, but by fixing bugs this

time, not by more reversions.

So the recipe to finish issue #662 is pretty simple, now that we've

merged the above changes into trunk. First, undo the reversions of

2202 (but undo them in trunk, not the branch!), see what still fails,

and fix it. Then rewrite the merge/diff editors to use notification

instead of trace, and get rid of the old trace editor code.

  1. … 25 more files in changeset.
Sorry, but just couldn't take it anymore :-).

Use plain C strings for paths and for attributes throughout the code.

At root this was a change to the svn_path and svn_wc functions, but

the effects naturally propagate to svn_client, etc.

Things to do after this commit:

- There were a few "###" todo comments introduced, review them

- Of these, the one in adm_crawler.c:report_revisions is most urgent

- Do a search for all remaining svn_stringbuf_t, review them

- Have not adjusted the language bindings; am assuming the binding

maintainers will do that (sorry, hope it's not too bad).

* subversion/include/svn_wc.h: Remove obsolete comment about

parameters that look like "apr_array_header_t *paths".

(svn_wc_resolve_conflict, svn_wc_entries_read, svn_wc_entry,

svn_wc_conflicted_p, svn_wc_process_committed svn_wc_add,

svn_wc_copy, svn_wc_delete, svn_wc_status, svn_wc_statuses,

svn_wc_check_wc, svn_wc_cleanup, svn_wc_revert,

svn_wc_remove_from_revision_control, svn_wc_crawl_revisions,

svn_wc_get_checkout_editor, svn_wc_get_update_editor,

svn_wc_has_binary_prop, svn_wc_get_ancestry, svn_wc_get_status,

svn_wc_get_status_editor, svn_wc_get_switch_editor,

svn_wc_get_diff_editor, svn_wc_diff, svn_wc_get_actual_target,

svn_wc_is_wc_root, svn_wc_translated_file, svn_wc_props_modified_p,

svn_wc_text_modified_p, svn_wc_transmit_prop_deltas,

svn_wc_transmit_text_deltas, svn_wc_get_auth_file,

svn_wc_set_auth_file, svn_wc_create_tmp_file,

svn_wc_get_pristine_copy_path, svn_wc_unlock, svn_wc_unlock,

svn_wc_locked): Update interfaces to use plain strings. See code

changes for details.

(struct svn_wc_entry_t): Change name, url, repos, copyfrom_url,

conflict_old, conflict_new, conflict_wrk, prejfile, cmt_author, and

even checksum to const char *.

* subversion/libsvn_wc/entries.c

(svn_wc_entries_read, svn_wc_entry, read_entries): Take path as

plain string.

(write_entry): Store all attributes as plain strings in the hash.

(check_entries): Same for path, even though #if'd out.

(svn_wc__atts_to_entry): Use plain strings internally.

(svn_wc__entries_write): Take path as plain string.

(fold_entry, svn_wc__entry_remove): Take name as plain string.

(svn_wc__entry_modify): Take path and name as plain strings.

(svn_wc_entry_dup): Use plain strings internally.

(fold_scheduling): Take name as plain string.

(svn_wc__tweak_entry): Take name and new_url as plain strings.

(svn_wc__compose_paths): Add a note to anyone contemplating

reactivating this function.

(svn_wc__entries_init): Take path as plain string.

* subversion/libsvn_wc/adm_files.h: Update prototypes for for the

semi-public functions in the list below.

* subversion/libsvn_wc/adm_files.c

(open_adm_file, close_adm_file, svn_wc__adm_path,

extend_with_adm_name, svn_wc__adm_path_exists,

svn_wc__make_adm_thing, sync_adm_file, svn_wc__text_base_path,

svn_wc__remove_adm_file, svn_wc__empty_file_path,

svn_wc__open_empty_file, svn_wc__close_empty_file,

svn_wc__open_text_base, svn_wc__close_text_base,

svn_wc__open_auth_file, svn_wc__close_auth_file,

svn_wc__open_props, svn_wc__close_props, svn_wc__sync_props,

check_adm_exists, make_empty_adm, init_adm_tmp_area,

svn_wc__ensure_adm, svn_wc__sync_text_base, svn_wc__prop_path,

svn_wc__prop_base_path, maybe_copy_file): Take plain strings, recode

internals accordingly.

(svn_wc__adm_subdir): Removed, as no one outside this file was

calling this function.

(adm_subdir): Add motivational commentary.

(init_adm_file): Same prototype change. Also, take contents as a

plain C string & change all callers, and don't bother to find out

how many bytes written, as we never used that information.

(svn_wc__adm_destroy, svn_wc__adm_cleanup_tmp_area): Same prototype

change. Also, don't overwrap errors.

(svn_wc_create_tmp_file): Take path as plain string, rewrite to use

svn_wc__adm_path.

(svn_wc__open_adm_file, svn_wc__close_adm_file): Same prototype

change, plus get rid of some obsolete apr-pacification cruft.

(chop_admin_name): Removed.

(v_extend_with_adm_name): Return a new path, instead of extending

the received path.

* subversion/libsvn_wc/adm_files.h

(svn_wc__adm_subdir): Removed, see above.

* subversion/include/svn_path.h, subversion/libsvn_subr/path.c

(svn_path_split_nts, svn_path_is_empty_nts,

svn_path_remove_component_nts, svn_path_compare_paths_nts): New

functions.

(svn_path_split_if_file): Same as code change, and redocument. Add

note about how this should be moved to path.c.

(svn_path_split): Doc cleanups.

(svn_path_is_url, svn_path_is_uri_safe): Take const char *, not

svn_string_t *.

(svn_path_condense_targets, svn_path_get_absolute): Use plain

strings instead of stringbufs.

(svn_path_get_longest_ancestor): Use non-const char * instead of

stringbufs.

(svn_path_canonicalize): Doc fix.

(svn_path_canonicalize_nts): New function.

(svn_path_is_child): Use const char * instead of stringbufs, remove

duplicate doc string, and document allocation behavior and

canonicalization requirement.

(svn_path_decompose): Take path as plain string, return array of

plain strings. Store decompositions inline, instead of using

store_component.

(store_component): Removed this now-unnecessary function.

(svn_path_uri_encode, svn_path_uri_decode): Take path as plain

string, return plain string.

* subversion/libsvn_subr/target.c

(svn_path_get_absolute, svn_path_split_if_file): Use plain strings

instead of stringbufs, and add note about how these should be moved

to path.c later.

(svn_path_remove_redundancies): Adjust.

* subversion/libsvn_wc/questions.h

(svn_wc__versioned_file_modcheck): Take versioned_file and

base_file as plain strings.

(svn_wc__files_contents_same_p, svn_wc__timestamps_equal_p): See

code change.

* subversion/libsvn_wc/questions.c

(svn_wc_check_wc, svn_wc__timestamps_equal_p): Take path as plain

string.

(svn_wc_conflicted_p): Take dir_path as plain string, rewrite to

use plain strings internally too.

(svn_wc_text_modified_p): Take filename as plain string, rewrite

internals too.

(svn_wc__versioned_file_modcheck): Take versioned_file and

base_file as plain strings.

(svn_wc__files_contents_same_p): Take path1 and path2 as plain

strings.

(svn_wc_has_binary_prop): Take path as plain string.

* subversion/libsvn_wc/lock.c

(svn_wc_lock, svn_wc_unlock, svn_wc_locked): Take path as plain

string.

* subversion/libsvn_client/checkout.c: Include svn_pools.h.

* subversion/libsvn_client/client.h

(svn_client__open_ra_session): Same for base_url and base_dir.

(svn_client__condense_commit_items): Take base_url as a non-const

char **, and document new allocation behavior.

(svn_client__checkout_internal, svn_client__update_internal): Same

for path, xml_src, and, for the former, ancestor_path.

(svn_client_checkout): Same for path, URL, and xml_src.

(svn_client__do_commit): Take base_url as plain string.

(struct svn_client__callback_baton_t): Store base_dir as plain

string.

(svn_client__get_diff_editor, svn_client__harvest_committables,

svn_client__get_copy_committables, svn_client__can_delete): See code

change.

* subversion/libsvn_client/commit.c

(svn_client_commit): Same for param xml_dst, and internal vars

base_dir, base_url, and display_dir.

(get_ra_editor): Same for base_url, base_dir, log_msg.

(svn_client_import): Take path, url, new_entry, and xml_dst as

plain strings. Adjust internal var log_msg accordingly, and adjust

assignment of `path' in the commit item too. Get rid of redundant

use_xml flag variable.

(import): Take path and new_entry as plain strings.

(import_file): Take path as a plain string, adjust filepath

allocation.

(import_dir): Take path and edit_path as plain strings. Move

this_path and this_edit_path into the loop, as plain strings.

(send_file_contents): Take path as a plain string.

(unlock_dirs): Adjust.

* subversion/libsvn_wc/update_editor.c: Lots of internal code changed

to deal with the conversion. Not all symbols listed, I mean, it's

just too big, and unlikely to be the target of a future search.

(make_editor, struct edit_baton): Make anchor, target,

ancestor_url, and switch_url be const char * instead of

svn_stringbuf_t *. Don't take or store a separate is_switch flag,

just go by whether or not switch_url is null.

(struct dir_baton, struct file_baton): Store path, name, and URL as

plain strings.

(svn_wc_get_actual_target, svn_wc_is_wc_root): Same, blah.

(svn_wc_get_update_editor): Take anchor and target as plain strings.

Adjust call to make_editor.

(svn_wc_get_checkout_editor): Take dest and ancestor_url as plain

strings. Adjust call to make_editor.

(svn_wc_get_switch_editor): Take anchor, target, and switch_url as

plain strings. Check that switch_url is not null. Adjust call to

make_editor.

(maybe_bump_dir_revision): Use plain strings internally.

(prep_directory): Take path and ancestor_url as plain strings.

(svn_wc_install_file): Use plain strings internally.

(add_or_open_file): Use plain strings internally.

Note that this fixes a bug which had been causing basic_tests 1 to

pass when it should have failed. Namely, this line

if (adding && apr_hash_get (dirents, fb->name, APR_HASH_KEY_STRING))

which looks the same in both the old and the new code, but means

different things. In the old code, fb->name was a stringbuf, so the

hash lookup returned NULL when sometimes it should have returned a

dirent and thereby caused an error to be returned. The failure to

error meant that existing files (dirents) got silently overwritten

by the incoming checkout/update!

* subversion/libsvn_client/apply_edits.c

(apply_delta): Take const char * for dest and ancestor_path, instead

of svn_stringbuf_t *. Adjust anchor and target in the same way,

internally.

(do_edits, svn_client__checkout_internal,

svn_client__update_internal): Same for path, xml_src, and URL.

* subversion/libsvn_client/commit_util.c

(harvest_committables, add_committable): Take path, url,

copyfrom_url as const char *, not svn_stringbuf_t *.

(svn_client__condense_commit_items): Take base_url as a non-const

char **, and convert internal url var to plain string. Rewrite the

way urls are relativized, hopefully without introducing any lifetime

issues, see documentation change in client.h. Fix comment typo.

(svn_client__get_copy_committables): Take new_url and target as

plain strings.

(svn_client__sort_commit_item_urls): Use svn_path_compare_paths_nts.

(svn_client__do_commit): Take base_url as const char *, although

apparently it's only used in debug code anyway. Rewrite.

(lock_dir): Take dir as a plain string.

(svn_client__harvest_committables): Take parent_dir as plain

string. Rewrite internal code to use plain strings.

* subversion/include/svn_client.h

(svn_client_auth_baton_t): Constify username and password

(svn_client_commit_item_t): Store path, url, copyfrom_url as

const char *, not svn_stringbuf_t *.

(svn_client_get_commit_log_t): Take log message pointer as const

char *. Redocument.

(svn_client_checkout, svn_client_add, svn_client_import

svn_client_commit, svn_client_status, svn_client_copy,

svn_client_move, svn_client_delete, svn_client_resolve,

svn_client_diff, svn_client_merge, svn_client_switch,

svn_client_update, svn_client_revert, svn_client_cleanup): See code

change.

* subversion/libsvn_client/add.c

(svn_client_mkdir): Same, and same for log message.

(add_dir_recursive): Construct fullpath as a plain string, not

svn_stringbuf_t.

(svn_client_add): Take const char *, not svn_stringbug_t * for

path.

* subversion/libsvn_client/ra.c

(svn_client__open_ra_session): Same for base_url and base_dir.

(open_tmp_file): Use plain strings internally.

(get_wc_prop, set_wc_prop): Adjust.

* subversion/include/svn_ra.h

(svn_ra_plugin_t.get_commit_editor): Take log_msg as plain strings.

(svn_ra_plugin_t.do_switch): Take update_target and switch_url as

plain strings.

(svn_ra_plugin_t.open): Take repos_URL as plain string.

(svn_ra_plugin_t.do_update): Take update_target as plain string.

(svn_ra_plugin_t.do_status): Take status_target as plain string.

(svn_ra_plugin_t.get_file): Document the return types in props.

(svn_ra_plugin_t.get_log): Document that paths is now an array of

plain strings.

* subversion/libsvn_ra_dav/commit.c, subversion/libsvn_ra_dav/ra_dav.h

(svn_ra_dav__get_commit_editor): Take log_msg as const char *.

(struct commit_ctx_t): Store log_msg as const char *.

(svn_ra_dav__do_update, svn_ra_dav__do_status,

svn_ra_dav__do_switch): See code change.

(escape_url): Remove this now-unnecessary function.

(simple_request, do_checkout, do_proppatch, commit_stream_close):

Adjust for above change to escape_url.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__get_commit_editor): Take log_msg as plain string.

(svn_ra_local__open): Take repos_URL as a plain string.

(svn_ra_local__do_update): Take update_target as a plain string.

(svn_ra_local__do_switch): Take update_target and switch_url as

plain strings.

(svn_ra_local__do_status): Take status_target as plain string.

(svn_ra_local__get_log): Handle paths array as plain strings.

(svn_ra_local__do_check_path): Use plain strings internally.

(svn_ra_local__get_file): Use plain strings internally. Create the

values as svn_string_t *, not svn_stringbuf_t *. Yes, that's

right, this function and svn_ra_dav__get_file were doing it

differently, heh heh heh. We were saved by the fact that both

svn_string_t and svn_stringbuf_t have `data' and `len' as the first

two fields, in that order! If those were all one accessed, then the

two types were interchangeable, given a sane C compiler.

* subversion/libsvn_ra_local/ra_local.h

(svn_ra_local__get_editor): Take log_msg as plain string.

(svn_ra_local__session_baton_t): Store repository_URL, repos_path,

and fs_path as plain strings.

(svn_ra_local__split_URL, svn_ra_local__checkout): See code change.

* subversion/libsvn_ra_local/commit_editor.c

(struct edit_baton): Store log_msg and base_path as plain strings.

(svn_ra_local__get_editor): Take log_msg as plain string.

(open_root): Pass log_message to svn_repos_fs_begin_txn_for_commit

without any extra level of indirection.

(add_directory): Adjust access of session string data.

* subversion/include/svn_repos.h

(svn_repos_fs_begin_txn_for_commit, svn_repos_get_committed_info):

See code change.

* subversion/libsvn_repos/hooks.c

(svn_repos_fs_begin_txn_for_commit): Take log_msg as plain string.

* status.c

(svn_client_status): Same for path.

* subversion/libsvn_wc/status.c

(svn_wc_statuses, add_status_structure, assemble_status,

add_unversioned_items, svn_wc_status): Same for path.

* subversion/libsvn_wc/log.c

(struct log_runner): Store path as a plain string.

(svn_wc__run_log, file_xfer_under_path, install_committed_file):

Take path as plain string.

(log_do_file_xfer): Take name as a plain string. Remove unused

full_path variable.

(log_do_run_cmd, log_do_file_readonly, log_do_rm,

log_do_modify_entry, log_do_committed): Use plain strings

internally.

(svn_wc_cleanup): Take path as a plain string.

* subversion/libsvn_wc/adm_ops.c

(svn_wc_process_committed): Take path as plain string. Rewrite

internals to use plain strings too.

(svn_wc_get_auth_file, svn_wc_set_auth_file): Take path as plain

string.

(svn_wc_delete): Same for path.

(attempt_deletion): Take parent_dir and base_name as plain strings.

(svn_wc_resolve_conflict): Take path as plain string.

(svn_wc_add): Take path and copyfrom_url as plain strings.

(svn_wc_remove_from_revision_control): Take path and name as plain

strings.

(recursively_tweak_entries): Take dirpath and base_url as plain

strings.

(svn_wc__do_update_cleanup): Take path and base_url as plain

strings.

(remove_file_if_present): Take file as a plain string.

(revert_admin_things): Take parent_dir and name as plain strings.

Rewrite to use plain strings internally.

(revert_error): Take path as a plain string.

(svn_wc_revert): Convert path.

(mark_tree): Take dir as a plain string.

(erase_from_wc): Take path as a plain string.

(svn_wc_get_ancestry): Take path as plain string, return url as one.

(svn_wc_get_pristine_copy_path): Take path, and return pristine

path, as plain strings.

* subversion/libsvn_wc/props.c

(svn_wc_props_modified_p): Take path as plain string, rewrite

internals to use plain strings too.

(empty_props_p): Take path_to_prop_file as plain string.

(svn_wc__strip_entry_prefix): Removed; see header entry for why.

(svn_wc__get_existing_prop_reject_file): Return reject file as a

plain string.

(svn_wc_merge_prop_diffs): Use plain strings internally.

(svn_wc__merge_prop_diffs): Use plain strings internally.

(wcprop_list): Use plain strings internally.

(svn_wc__wcprop_set): Use plain strings internally.

(svn_wc_prop_list): Use plain strings internally.

(svn_wc_prop_set): Use plain strings internally.

(svn_wc__has_props): Take path as a plain string.

(svn_wc_get_prop_diffs): Use plain strings internally.

* subversion/include/svn_io.h, subversion/libsvn_subr/io.c

(svn_io_open_unique_file): Return unique_name as plain string

pointer.

(svn_io_get_dirents): Take path as plain string.

(svn_io_copy_dir_recursively): Take src, dst_parent, and

dst_basename as plain strings.

(svn_io_append_file): Take src and dst as plain strings.

(svn_io_file_affected_time): Take path as a plain string.

* subversion/libsvn_wc/translate.c

(svn_wc_translated_file): Take xlated_p and vfile as plain string

pointer and plain string, respectively.

* subversion/libsvn_wc/adm_crawler.c

(svn_wc_transmit_prop_deltas): Take path and tempfile as plain

string and plain string pointer, respectively.

(svn_wc_transmit_text_deltas, svn_wc_crawl_revisions): Take path as

a plain string.

(report_revisions): Take wc_path and dir_path as plain strings.

Add note about kluge that needs to get fixed.

* subversion/libsvn_client/auth.c

(store_auth_info): Take wc_path as a plain string.

* subversion/libsvn_client/copy.c

(repos_to_repos_copy): Take src_url, dst_url, and message as plain

strings.

(wc_to_repos_copy): Take src_path, dst_url, and message as plain

strings.

(repos_to_wc_copy): Same for src_url and dst_path.

(setup_copy): Same for src_path and dst_path.

(wc_to_wc_copy): Same for src_path and dst_path.

(svn_client_copy, svn_client_move): Same for src_path and dst_path.

* subversion/libsvn_client/delete.c

(svn_client__can_delete, svn_client_delete): Same for path.

* subversion/libsvn_wc/copy.c

(svn_wc_copy, copy_dir_administratively,

copy_file_administratively): Take src_path, dst_parent, and

dst_basename as plain strings.

(svn_wc__remove_wcprops): Take path as plain string.

* subversion/libsvn_client/diff.c

(convert_to_url): Same for path and returned url.

(merge_file_added, merge_file_deleted, merge_dir_added,

merge_dir_deleted): Use plain strings internally.

(do_merge, do_single_file_merge): Same for path1, path2, and

target_wcpath.

(do_diff): Same for path1 and path2.

(svn_client_diff): Take path1, path2 as plain strings.

(svn_client_merge): Take path1, path2, and target_wcpath as plain

strings.

(diff_file_changed): Treat options array as plain strings.

* subversion/libsvn_client/repos_diff.c

(svn_client__get_diff_editor): Same for target.

(struct edit_baton): Store target and empty_file as plain strings.

(struct file_baton): Store path_start_revision and path_end_revision

as plain strings.

(get_file_from_ra): Adjust for above change to file_baton.

(struct temp_file_cleanup_s): Store path as plain string.

(temp_file_cleanup_register): Adjust for above, document lifetime

issues.

(temp_file_plain_cleanup_handler): Adjust for above.

(create_empty_file): Take empty_file as pointer to plain string.

(window_handler, open_root, delete_entry, add_file,

apply_textdelta): Adjust for string conversions. Also, add some

parentheses for clearer precedence.

(get_empty_file): Take and set empty_file as plain string.

* subversion/libsvn_ra_dav/session.c

(svn_ra_dav__open): Same for repos_URL.

* subversion/libsvn_ra_dav/fetch.c

(svn_ra_dav__do_update): Same for update_target.

(make_reporter): Take target as plain string.

(svn_ra_dav__do_status): Take status_target as plain string.

(svn_ra_dav__do_switch): Take update_target and switch_url as plain

strings.

(simple_fetch_file): Encode url as a plain string.

* subversion/libsvn_ra_dav/log.c

(svn_ra_dav__get_log): The paths parameter is now an array of

plain strings, adjust code accordingly.

* subversion/libsvn_client/resolve.c

(svn_client_resolve): Take path as plain string.

* subversion/libsvn_client/revisions.c

(svn_client__get_revision_number): Remove path conversion kluge, no

longer necessary, aaahhh.

* subversion/libsvn_client/status.c

(add_update_info_to_status_hash): Take path as plain string.

* subversion/libsvn_wc/diff.c: In various places, rename

diff_callbacks to callbacks, and diff_cmd_baton to callback_baton,

to avoid 80-column overwrap in the header file.

(svn_wc_diff): Take anchor and target as plain strings.

(svn_wc_get_diff_editor): Take anchor and target as plain strings.

(file_diff): Take path as plain string.

(struct edit_baton): Store anchor and target as plain strings.

(struct dir_baton): Store path as a plain string.

(struct file_baton): Store path and wc_path as plain strings.

(make_editor_baton): Fix baton assignments.

(make_dir_baton): Take name as a plain string. Carefully rewrite

path allocation in consequence, wipe hand over brow at how near came

to missing that this was necessary.

(make_file_baton): Take name as a plain string. Rewrite some

internals, and add note about suspected bug.

(directory_elements_diff): Adjust.

(delete_entry, add_directory, add_file, open_directory, open_file):

Put in temporary shim to convert stringbuf arguments to plain

strings. This is the old editor interface, it would be a waste of

time to convert it, since the editor itself will get converted

eventually.

(close_directory): Adjust internals.

(temp_file_cleanup_handler): Adjust.

* subversion/libsvn_client/prop_commands.c

(recursive_propget): Take propname and target as plain strings.

(svn_client_proplist, recursive_proplist): Take target as a plain

string.

* subversion/libsvn_ra_dav/props.c

(create_private): Decode url as a plain string.

(svn_ra_dav__get_props): Encode url as a plain string.

* subversion/libsvn_client/switch.c

(svn_client_switch): Take path and switch_url as plain strings.

* subversion/libsvn_client/update.c (svn_client_update): Take path

and xml_src as plain strings.

* subversion/libsvn_ra_local/split_url.c

(svn_ra_local__split_URL): Take URL as plain string, return

repos_path and fs_path as plain strings. Use strncmp for safe

comparisons. Improve error messages.

* subversion/libsvn_ra_local/checkout.c

(svn_ra_local__checkout): Take URL and fs_path as plain strings.

(walk_tree): Take dir_path, edit_path, and URL as plain strings.

(set_any_props): Take path as a plain string. Set prop values as

svn_string_t *, not svn_stringbuf_t *, see note above for

svn_ra_local__get_file about why it was working before (gulp!).

(send_file_contents): Take path as a plain string.

* subversion/libsvn_repos/rev_hunt.c

(svn_repos_get_committed_info): Take path as a plain string, return

committed_date and last_author as plain strings.

* subversion/libsvn_repos/log.c (svn_repos_get_logs): Handle incoming

paths array as plain strings.

(detect_changed): Take path as plain string.

* subversion/libsvn_wc/entries.h

(svn_wc__entries_init, svn_wc__entries_write, svn_wc__entry_modify,

svn_wc__entry_remove, svn_wc__tweak_entry): See code change.

(svn_wc__atts_to_entry): Document behavior change.

* subversion/libsvn_wc/adm_ops.h

(svn_wc__do_update_cleanup): See code change.

* subversion/libsvn_wc/log.h

(svn_wc__log_commit, svn_wc__run_log): See code changes.

* subversion/libsvn_wc/props.h

(svn_wc__remove_wcprops, svn_wc__has_props): Take path as a plain

string.

(svn_wc__strip_entry_prefix): Removed. This was born in revision

652 and still has no callers. Time to say bye-bye.

* subversion/libsvn_client/revert.c

(svn_client_revert): Take path as a plain string.

* subversion/libsvn_client/cleanup.c

(svn_client_cleanup): Take dir as a plain string.

* subversion/libsvn_wc/merge.c

(svn_wc_merge): Use plain strings internally.

* subversion/libsvn_wc/status_editor.c: Lots of internal code changed

to deal with the conversion. Not listing it all.

(struct edit_baton): Store path as a plain string.

(struct dir_baton, struct file_baton): Store name and path as plain

strings.

* subversion/libsvn_wc/wc.h

(svn_wc__ensure_directory): See code change.

* subversion/libsvn_wc/util.c

(svn_wc__ensure_directory): Take path as plain string.

* subversion/clients/cmdline/add-cmd.c

(svn_cl__add): Assume targets are plain strings.

* subversion/clients/cmdline/info-cmd.c

(svn_cl__info): Same; plain strings internally.

* subversion/clients/cmdline/main.c

(main): Use plain strings internally.

* subversion/clients/cmdline/merge-cmd.c

(svn_cl__merge): Same.

* subversion/clients/cmdline/cl.h

(svn_cl__opt_state_t): Store message, xml_file, target,

ancestor_path, auth_username, auth_password, and extensions as plain

strings.

(svn_cl__make_log_msg_baton, svn_cl__get_trace_update_editor,

svn_cl__edit_externally, svn_cl__get_trace_commit_editor

svn_cl__get_log_message): See code change.

(svn_cl__stringlist_to_array, svn_cl__newlinelist_to_array):

Removed, we have svn_cstring_split for this now.

* subversion/clients/cmdline/trace-update.c

(svn_cl__get_trace_update_editor): Take initial_path as a plain

string.

(struct edit_baton, struct dir_baton, struct file_baton): Store

path as a plain string.

(make_dir_baton, make_file_baton, delete_entry, add_directory,

close_directory, close_file): Adjust accordingly.

* subversion/clients/cmdline/trace-commit.c

(struct edit_baton, struct dir_baton, struct file_baton): Store

path as plain string.

(svn_cl__get_trace_commit_editor, make_dir_baton, make_file_baton,

delete_entry, add_directory, close_directory, add_file, open_file,

change_file_prop): Adjust accordingly.

* subversion/clients/cmdline/update-cmd.c

(svn_cl__update): Use plain strings internally.

* subversion/clients/cmdline/checkout-cmd.c

(svn_cl__checkout): Use plain strings internally.

* subversion/clients/cmdline/prompt.c

(svn_cl__make_auth_baton): Use plain strings internally.

* subversion/clients/cmdline/commit-cmd.c

(svn_cl__commit): Use plain strings internally.

* subversion/clients/cmdline/util.c: If people really need to return

binary data in their log message contents, then some of these

changes will have to be reverted. Seems unlikely, though.

(struct log_msg_baton): Hold message and base_dir as plain strings.

(svn_cl__edit_externally): Take base_dir and contents as plain

string, return edited_contents as a plain string.

(svn_cl__make_log_msg_baton): Take base_dir as a plain string.

(svn_cl__stringlist_to_array, svn_cl__newlinelist_to_array):

Removed, we have svn_cstring_split for this now.

(svn_cl__args_to_target_array): Construct an array of plain

strings, not stringbufs.

(parse_path): Take path, and return truepath, as plain strings.

(svn_cl__get_log_message): Use plain strings internally.

(array_push_str): Replaces array_push_svn_stringbuf, just copies

the string, does not convert the string's type.

* subversion/clients/cmdline/copy-cmd.c

(svn_cl__copy): Use plain strings internally.

* subversion/clients/cmdline/delete-cmd.c

(svn_cl__delete): Same.

* subversion/clients/cmdline/diff-cmd.c

(svn_cl__diff): Use plain strings internally. Just use

svn_cstring_split now.

* subversion/clients/cmdline/feedback.c

(notify_added): Use plain strings internally.

* subversion/clients/cmdline/mkdir-cmd.c

(svn_cl__mkdir): Same.

* subversion/clients/cmdline/import-cmd.c

(svn_cl__import): Same

* subversion/clients/cmdline/move-cmd.c

(svn_cl__move): Same.

* subversion/clients/cmdline/propedit-cmd.c

(svn_cl__propedit): Same.

* subversion/clients/cmdline/resolve-cmd.c

(svn_cl__resolve): Same.

* subversion/clients/cmdline/revert-cmd.c

(svn_cl__revert): Same.

* subversion/clients/cmdline/status-cmd.c

(svn_cl__status): Same.

* subversion/clients/cmdline/status.c

(print_long_format): Same.

* subversion/clients/cmdline/switch-cmd.c

(svn_cl__switch): Same.

* subversion/clients/cmdline/proplist-cmd.c

(svn_cl__proplist): Same.

* subversion/clients/cmdline/help-cmd.c

(svn_cl__help): Same.

* subversion/clients/cmdline/propdel-cmd.c

(svn_cl__propdel): Same.

* subversion/clients/cmdline/propget-cmd.c

(svn_cl__propget): Same.

* subversion/clients/cmdline/props.c

(svn_cl__print_prop_hash, svn_cl__print_prop_names): Same.

* subversion/clients/cmdline/propset-cmd.c

(svn_cl__propset): Same.

* subversion/svnlook/main.c

(open_writable_binary_file): Take path as a plain string.

Fix casting of output from svn_path_decompose; the only reason it

was working before is that the data happens to be the first element

of svn_stringbuf_t (!!!).

(print_diff_tree): Take path and base_path as plain strings. Use a

subpool for recursive calls.

(dump_contents): Take path as plain string.

(do_diff): Adjust calls to print_diff_tree.

* subversion/tests/libsvn_wc/checkout-test.c

(apply_delta): Take dest and repos as plain strings.

(main): Adjust.

* subversion/tests/libsvn_subr/path-test.c

(test_path_is_child, test_is_url, test_uri_encode): Adjust.

* subversion/tests/libsvn_subr/target-test.c

(main): Adjust.

* subversion/libsvn_ra_pipe/ra_pipe.c

(svn_ra_pipe__get_commit_editor): Take log_msg as a plain string.

* subversion/tests/libsvn_delta/delta-combine-test.c

(generate_file_diffs, do_delta_combination): Use plain strings

internally.

* subversion/tests/clients/cmdline/basic_tests.py

(basic_checkout): Expect repeated checkout to fail, not succeed.

See note above in update_editor.c:add_or_open_file, and also

revision 2011.

* subversion/include/svn_string.h

(svn_cstring_split): Document that null input is allowed. This

redocuments svn_cstring_split_append too, by reference.

* subversion/libsvn_subr/svn_string.c

(svn_cstring_split_append): Allow null input. This affects

svn_cstring_split as well.

XML changes:

* subversion/include/svn_xml.h

(svn_xml_ap_to_hash, svn_xml_make_att_hash,

svn_xml_hash_atts_preserving, svn_xml_hash_atts_overlaying,

svn_xml_make_open_tag, svn_xml_make_open_tag_v,

svn_xml_make_open_tag_hash): Document that attribute values are

plain strings now.

* subversion/libsvn_subr/xml.c

(svn_xml_ap_to_hash, amalgamate, svn_xml_hash_atts_preserving,

svn_xml_hash_atts_overlaying, svn_xml_make_open_tag_hash,

svn_xml_make_open_tag_v, svn_xml_make_open_tag): Use plain strings

for attributes.

* subversion/libsvn_delta/xml_output.c

(STR_REV): Replaces STR_BUF_REV, creates a plain string instead of

a stringbuf.

  1. … 112 more files in changeset.

Make the path@rev syntax available to any subcommand that wants it.

Right now, the only subcommands that use it are diff and merge.

[ Folks who are discussing the correctness of this "@" syntax: feel

free to toy with alteratives, I'm pretty indifferent. The function

doing the parsing is cmdilne/util.c:parse_path ]

* merge-cmd.c (svn_cl__merge): simplify logic.

(parse_path): remove static func from here....

* util.c (parse_path): re-add here, as a helper args_to_target_array.

(svn_cl__args_to_target_array): new boolean flag. this routine,

which is called by every svn_cl__foo_subcommand, now has the

optional ability to strip @rev syntax from paths and write the

values into the opt_state structure.

* cl.h (svn_cl__args_to_target_array): take a new boolean flag.

* svn_error_codes.h (SVN_ERR_CL_INSUFFICIENT_ARGS): new error code.

* diff-cmd.c (svn_cl__diff): pass TRUE to args_to_target_array's

new 'extract_revisions' flag.

* delete-cmd.c (svn_cl__delete): pass FALSE to args_to_target_array's

new 'extract_revisions' flag.

* switch-cmd.c (svn_cl__switch): same.

* add-cmd.c (svn_cl__add): same.

* propset-cmd.c (svn_cl__propset): same.

* help-cmd.c (svn_cl__help): same.

* commit-cmd.c (svn_cl__commit): same.

* cleanup-cmd.c (svn_cl__cleanup): same.

* update-cmd.c (svn_cl__update): same.

* log-cmd.c (svn_cl__log): same.

* propget-cmd.c (svn_cl__propget): same.

* copy-cmd.c (svn_cl__copy): same.

* revert-cmd.c (svn_cl__revert): same.

* move-cmd.c (svn_cl__move): same.

* mkdir-cmd.c (svn_cl__mkdir): same.

* propdel-cmd.c (svn_cl__propdel): same.

* propedit-cmd.c (svn_cl__propedit): same.

* status-cmd.c (svn_cl__status): same.

* resolve-cmd.c (svn_cl__resolve): same.

* proplist-cmd.c (svn_cl__proplist): same.

* import-cmd.c (svn_cl__import): same.

  1. … 24 more files in changeset.
* libsvn_subr/io.c

(svn_string_from_file): Detect when a filename is "-", which would

signify reading from stdin. Right now we return an error for

not-supported. Read the comments for why.

(svn_string_from_aprfile): Use apr_file_read() instead of

apr_file_read_full(). This is needed in order to read from stdin, since

apr_file_read_full requires that we stat the file, which you can't do on

stdin.

* cmdline/main.c

Add --targets option, for reading file/url arguments from a file.

Allow this option for the add, commit, delete, log, propset and

revert. Maybe others could use it aswell, but for now, this is it.

* cmdline/util.c

(svn_cl__args_to_target_array): Require opt_state to be passed as an

argument. Use this to add on further arguments in addition to the ones

on the command line, using the targets array.

(svn_cl__newlinelist_to_array): New function. Used to turn a newline

seperated string into an array of stringbuf's.

(svn_cl__stringlist_to_array): Use apr_isspace instead of isspace.

* cmdline/cl.h

Update svn_cl__opt_state_t to include targets array for --targets

option. Update decleration of svn_cl__args_to_target_array. Add

decleration for svn_cl__newlinelist_to_array. Add svn_cl__targets_opt

to svn_cl_longopt_t.

* cmdline/man/svn.1: Add --targets option to list.

* merge-cmd.c: Update use of svn_cl__args_to_target_array().

* add-cmd.c: Likewise.

* cleanup-cmd.c: Likewise.

* copy-cmd.c: Likewise.

* delete-cmd.c: Likewise.

* diff-cmd.c: Likewise.

* help-cmd.c: Likewise.

* import-cmd.c: Likewise.

* log-cmd.c: Likewise.

* mkdir-cmd.c: Likewise.

* move-cmd.c: Likewise.

* propdel-cmd.c: Likewise.

* propedit-cmd.c: Likewise.

* propget-cmd.c: Likewise.

* proplist-cmd.c: Likewise.

* propset-cmd.c: Likewise.

* revert-cmd.c: Likewise.

* status-cmd.c: Likewise.

* switch-cmd.c: Likewise.

* update-cmd.c: Likewise.

* commit-cmd.c: Likewise. Also fix mispelling.

  1. … 25 more files in changeset.
Fixed a bunch of spurious whitespace in copyright notices.

Revert change to check-license.py that attempted to compensate for the

slightly different style in the Ruby bindings licenses.

Change all the Ruby binding file licences to be the same as the rest

of Subversion.

  1. … 333 more files in changeset.
Sigh. Hadn't updated the new license in check-license.py for the

previous commit. Here we go again...

  1. … 334 more files in changeset.
Move svn-dev.el to tools/dev/, then update copyright notice and

svn-dev.el loader for all files.

[Note: see next commit. I'd forgotten to update the license in

check-license.py, so not all copyright notices were updated in

the way they should have been.]

  1. … 339 more files in changeset.
Reworking gstein's feedback notification functions into a single

function with an action command. He seemed to be in compliance with

this change on IRC ... hope that's still the case.

* subversion/include/svn_wc.h

(svn_wc_notify_action_t): New enum for notification actions.

(svn_wc_notify_func_t): Added 'action' parameter.

(svn_wc_copy): Renamed notify_copied to notify_func.

(svn_wc_delete): Renamed notify_delete to notify_func.

(svn_wc_add): Renamed notify_added to notify_func.

(svn_wc_crawl_revisions): Renamed notify_restore to notify_func.

(svn_wc_revert): Renamed notify_revert to notify_func.

* subversion/libsvn_wc/adm_crawler.c

(report_revisions, svn_wc_crawl_revisions): Renamed notify_restore

to notify_func.

* subversion/libsvn_wc/adm_ops.c

(mark_tree, svn_wc_delete): Renamed notify_delete to notify_func.

(svn_wc_add): Renamed notify_added to notify_func.

(svn_wc_revert): Renamed notify_revert to notify_func.

* subversion/libsvn_wc/copy.c

(svn_wc_copy): Renamed notify_copied to notify_func.

* subversion/include/svn_client.h

(svn_client_update, svn_client_switch): Renamed notify_restore to

notify_func.

(svn_client_add, svn_client_mkdir, svn_client_copy): Renamed

notify_added to notify_func.

(svn_client_delete): Renamed notify_deleted to notify_func.

(svn_client_revert): Renamed notify_revert to notify_func.

(svn_client_move): Removed add and delete notify funcs/batons, and now

just use the one notify_func parameter.

* subversion/libsvn_client/add.c

(svn_client_add, svn_client_mkdir): Renamed notify_added to notify_func.

* subversion/libsvn_client/copy.c

(repos_to_wc_copy, svn_client_copy): Renamed notify_added to

notify_func.

(wc_to_wc_copy, setup_copy, svn_client_move): Removed add and delete

notify funcs/batons, and now just use the one notify_func parameter.

* subversion/libsvn_client/revert.c

(svn_client_revert): Renamed notify_revert to notify_func.

* subversion/libsvn_client/delete.c

(svn_client_delete): Renamed notify_deleted to notify_func.

* subversion/libsvn_client/update.c

(svn_client_update): Renamed notify_restore to notify_func.

* subversion/libsvn_client/switch.c

(svn_client_switch): Renamed notify_restore to notify_func.

* subversion/clients/cmdline/cl.h

(svn_cl__notify_unversioned, svn_cl__notify_added,

svn_cl__notify_deleted, svn_cl__notify_restored,

svn_cl__notify_reverted): Removed obsolete prototypes.

(svn_cl__notify_func, svn_cl__make_notify_baton): New functions.

(SVN_CL_NOTIFY): Updated macro.

* subversion/clients/cmdline/feedback.c

(svn_cl__notify_unversioned): Removed. We don't print unversioned

items during updates like CVS. The community has spoken (and

silence is assent).

(notify_added, notify_deleted, notify_restored, notify_reverted):

Was svn_cl__notify_added, svn_cl__notify_deleted,

svn_cl__notify_restored, and svn_cl__notify_reverted, respectively.

(svn_cl__notify_func): New single notification entry point that forks off

of the action type to various helpers.

(svn_cl__make_notify_baton): New function for generating a notify

baton (currently unexciting).

* subversion/clients/cmdline/add-cmd.c

(svn_cl__add): Actually use the SVN_CL_NOTIFY macro. And use new

svn_cl__make_notify_baton function, too.

* subversion/clients/cmdline/delete-cmd.c

(svn_cl__delete): Same as above here.

* subversion/clients/cmdline/copy-cmd.c

(svn_cl__copy): And here.

* subversion/clients/cmdline/revert-cmd.c

(svn_cl__revert): Here, too.

* subversion/clients/cmdline/update-cmd.c

(svn_cl__update): And here.

* subversion/clients/cmdline/mkdir-cmd.c

(svn_cl__mkdir): Yep, more of the same.

* subversion/clients/cmdline/switch-cmd.c

(svn_cl__switch): Uh huh...you guessed it.

* subversion/clients/cmdline/move-cmd.c

(svn_cl__move): Same here, but also remove the second set of

notify_func/baton parameters to svn_client_move.

  1. … 20 more files in changeset.
A few followup changes to revision 1114:

* svn/subversion/libsvn_wc/adm_ops.c (svn_wc_revert): Add parens to

clarify precedence in a conditional.

* svn/subversion/clients/cmdline/feedback.c

(svn_cl__notify_added_item): Print a warning if a problem arises,

instead of returning silently.

* svn/subversion/clients/cmdline/cl.h (SVN_CL_NOTIFY): Removed. This

macro saved some space, but it obscured references to the

opt_state->quiet flag and to the notification functions. For example,

suppose you're updating a baton, and need to do a search for all

occurrences of the given function/baton pair? Badness. But, since

this change makes saving space even more important, remove "_item"

suffix from notification functions:

(svn_cl__notify_unversioned): Replaces svn_cl__notify_unversioned_item.

(svn_cl__notify_added): Replaces svn_cl__notify_added_item.

(svn_cl__notify_deleted): Replaces svn_cl__notify_deleted_item.

(svn_cl__notify_restored): Replaces svn_cl__notify_restored_item.

(svn_cl__notify_reverted): Replaces svn_cl__notify_reverted_item.

* svn/subversion/clients/cmdline/feedback.c: Adjust accordingly.

* svn/subversion/clients/cmdline/add-cmd.c (svn_cl__add): Adjust for

above changes to cl.h and feedback.c

* svn/subversion/clients/cmdline/mkdir-cmd.c (svn_cl__mkdir): Same.

* svn/subversion/clients/cmdline/copy-cmd.c (svn_cl__copy): Same.

* svn/subversion/clients/cmdline/delete-cmd.c (svn_cl__delete): Same.

* svn/subversion/clients/cmdline/move-cmd.c (svn_cl__move): Same.

* svn/subversion/clients/cmdline/revert-cmd.c (svn_cl__revert): Same.

* svn/subversion/clients/cmdline/switch-cmd.c (svn_cl__switch): Same.

* svn/subversion/clients/cmdline/update-cmd.c (svn_cl__update): Same.

  1. … 10 more files in changeset.
Kill that damned feedback table. It was just a fancy global variable,

implemented (in Ben's words) as a "fancy hack."

[ when considering layering: this meant that SVN semantics were very

much hard-coded into libsvn_subr. ooky... ]

Added a standard notification function type (svn_wc_notify_func_t) and

pattern for calling it. From the point where we used and called

feedback functions, I replaced them with notifications (for each

specific purpose) and then bubbled the function/baton up through the

interface layers.

At the cmdline client, I renamed the feedback functions in feedback.c

to module-local functions to enable their use within the client. With

a handy macro to test for the "-q" flag (opt_state.quiet), we pass the

appropriate notification function into the libsvn_client APIs.

* include/svn_wc.h (svn_wc_notify_func_t): new function type for

notification callbacks. It takes a baton and the path of the

affected item.

(svn_wc_copy, svn_wc_delete, svn_wc_add, svn_wc_crawl_revisions,

svn_wc_revert): add parameters for a notify_FOO callback

function and its associated notify_baton baton. added appropriate

documentation for each function.

* include/svn_client.h: shift the #ifdef __cplusplus stuff to the

right place.

(svn_client_update, svn_client_switch, svn_client_add,

svn_client_mkdir, svn_client_delete, svn_client_revert,

svn_client_copy, svn_client_move): add parameters for a

notify_FOO callback function and its associated baton. added

appropriate documentation for each function. svn_client_move

actually takes two pairs of functions/batons.

* include/svn_pools.h: update documentation to remove discussion of

the feedback vtable.

(struct svn_pool_feedback_t): removed

(svn_pool_get_feedback_vtable): removed

* libsvn_wc/copy.c (copy_file_administratively,

copy_dir_administratively, svn_wc_copy): pass notify functions

and batons as appropriate.

* libsvn_wc/adm_crawler.c (report_revisions): remove usage of feedback

table, invoking NOTIFY_RESTORE instead. take notify func/baton and

pass it to self in the recursion.

(svn_wc_crawl_revisions): take notify func/baton. pass to

report_revisions. use func/baton rather than the feedback table to

notify about restorations.

* libsvn_wc/adm_ops.c (mark_tree): take a delete notify

func/baton. pass it during recursion. use it to notify about

deletes, rather than the feedback table.

(svn_wc_delete): take notify func/baton. pass to mark_tree(). use

instead of feedback table.

(svn_wc_add): take notify func/baton. pass NULLs to mark_tree since

we aren't deleting. use func/baton to notify about the add.

(svn_wc_revert): pass func/baton. use it rather than the feedback

table. pass to self when recursion occurs.

* libsvn_subr/svn_error.c (SVN_ERROR_FEEDBACK_VTABLE): removed.

(report_unversioned_item, report_added_item, report_deleted_item,

report_warning, report_progress, report_reversion,

report_restoration, svn_pool_get_feedback_vtable): removed.

(svn_error_init_pool): don't worry about the vtable any more.

(svn_pool_create): don't propagate the vtable.

(svn_pool_clear): no need to worry about the vtable. update comments

appropriately.

* libsvn_client/switch.c (svn_client_switch): take notification func

and baton. pass to svn_wc_crawl_revisions().

* libsvn_client/delete.c (svn_client_delete): take notification func

and baton. pass to svn_wc_delete().

* libsvn_client/revert.c (svn_client_revert): take notification func

and baton. pass to svn_wc_revert().

* libsvn_client/diff.c (svn_client_diff): update call to

svn_wc_crawl_revisions() to pass NULL for the notification stuff.

* libsvn_client/copy.c (wc_to_wc_copy): take add/delete notification

funcs and batons. pass, as appropriate, to svn_wc_copy() and

svn_wc_delete().

(repos_to_wc_copy): take a notification func/baton and pass to

svn_wc_add().

(setup_copy): take two sets of notification func/batons and pass

along as appropriate.

(svn_client_copy): take notification func/baton, and pass along

(svn_client_move): take notification funcs/batons, and pass along

* libsvn_client/update.c (svn_client_update): take restoration

notification func/baton, pass to svn_wc_crawl_revisions()

* libsvn_client/status.c (add_update_info_to_status_hash): pass NULL

pointers for the func/baton to svn_wc_crawl_revisions().

* libsvn_client/add.c (add_dir_recursive): take notification func and

baton for recursion and passing to svn_wc_add().

(svn_client_add): take notification func/baton and pass to

svn_wc_add or add_dir_recursive, as appropriate.

(svn_client_mkdir): take notification func/baton for svn_wc_add()

* bindings/ruby/wc.c (wc_revert): pass NULLs to svn_wc_revert()

* bindings/ruby/client.c (cl_update): pass NULLs to

svn_client_update().

(cl_add): pass NULLs to svn_client_add().

(cl_mkdir): pass NULLs to svn_client_mkdir().

(cl_delete): pass NULLs to svn_client_delete().

(cl_revert): pass NULLs to svn_client_revert().

(cl_copy): pass NULLs to svn_client_copy().

* clients/cmdline/cl.h (svn_cl__init_feedback_vtable): removed.

(svn_cl__notify_unversioned_item, svn_cl__notify_added_item,

svn_cl__notify_deleted_item, svn_cl__notify_restored_item,

svn_cl__notify_reverted_item): new declarations.

(SVN_CL_NOTIFY): new macro for selecting proper notify func value.

* clients/cmdline/move-cmd.c (svn_cl__move): use SVN_CL_NOTIFY() to

pass notify funcs, and pass batons to svn_client_move().

* clients/cmdline/mkdir-cmd.c (svn_cl__mkdir): pass notify func and

baton to svn_client_mkdir().

* clients/cmdline/revert-cmd.c (svn_cl__revert): pass notify func and

baton to svn_client_revert().

* clients/cmdline/copy-cmd.c (svn_cl__copy): pass notify func and

baton to svn_client_copy().

* clients/cmdline/update-cmd.c (svn_cl__update): pass notify func and

baton to svn_client_update().

* clients/cmdline/add-cmd.c (svn_cl__add): pass notify func and

baton to svn_client_add().

* clients/cmdline/switch-cmd.c (svn_cl__switch): pass notify func and

baton to svn_client_switch().

* clients/cmdline/delete-cmd.c (svn_cl__delete): pass notify func and

baton to svn_client_delete().

* clients/cmdline/main.c (main): remove call to

svn_cl__init_feedback_vtable().

* clients/cmdline/feedback.c (svn_cl__notify_unversioned_item):

renamed from report_unversioned_item, and new signature used.

(svn_cl__notify_added_item): renamed from report_added_item, and new

signature used.

(svn_cl__notify_deleted_item): renamed from report_deleted_item, and

new signature used.

(svn_cl__notify_restored_item): renamed from report_restoration, and

new signature used.

(svn_cl__notify_reverted_item): renamed from report_reversion, and

new signature used.

(report_warning): removed. never used.

(report_progress): removed. never used.

(svn_cl__init_feedback_vtable): removed.

  1. … 27 more files in changeset.
* subversion/clients/cmdline/revert-cmd.c

(svn_cl__revert): No longer call svn_cl__push_implicit_dot_target.

* subversion/clients/cmdline/main.c

(svn_cl__cmd_table): Update help message for revert to show a

requirement of at least one target.

  1. … 1 more file in changeset.
Remove `unadd' and `undelete' subcommands.

Also, delegate the tasks once done by `unadd' and `undelete' to

`revert.' Note: `revert' is far from finished, far from refined (far

from crash-proof...ugh)

Patch by: Mo DeJong <supermo@bayarea.net>

me

* subversion/include/svn_wc.h

(svn_wc_schedule_t): Removed unadd and undelete actions.

(svn_wc_unadd, svn_wc_undelete): Removed functions.

(svn_wc_revert): Added RECURSIVE argument.

* subversion/include/svn_client.h

(svn_client_unadd, svn_client_undelete): Removed functions.

(svn_client_revert): Added RECURSIVE field.

* subversion/include/svn_pools.h

(svn_pool_feedback_t): Removed report_unadded_item() and

report_undeleted_item() vtable entries.

* subversion/libsvn_wc/adm_ops.c

(mark_tree): This function no longer concerns itself with unadds and

undeletes (since they don't exist).

(add_to_revision_control): New function combining old contents of

svn_wc_add_directory() and svn_wc_add_file(). Replacements where

the node type changes are currently disallowed.

(svn_wc_add_directory, svn_wc_add_file): Now use

add_to_revision_control helper function.

(svn_wc_unadd, svn_wc_undelete): Removed functions.

(revert_admin_things): New helper function.

(svn_wc_revert): More work on this function to support directories,

and to start taking on the jobs of the now-absent unadd and undelete

commands.

* subversion/libsvn_subr/svn_error.c

(report_unadded_item, report_undeleted_item): Removed these default

callback functions.

(report_reversion, report_restoration): New functions.

(svn_error_init_pool): Don't initialize unadd and undelete

callbacks, since they no longer exist. Do initialize reversion, and

restoration callbacks.

* subversion/libsvn_client/delete.c

(svn_client_undelete): Removed function.

* subversion/libsvn_client/add.c

(svn_client_unadd): Removed function.

* subversion/clients/cmdline/cl.h

(svn_cl__unadd, svn_cl__undelete): Removed functions.

* subversion/clients/cmdline/add-cmd.c

(svn_cl__unadd): Removed function.

* subversion/clients/cmdline/delete-cmd.c

(svn_cl__undelete): Removed function.

* subversion/clients/cmdline/feedback.c

(report_unadded_item, report_undeleted_item): Removed functions.

(svn_cl__init_feedback_vtable): No longer using unadd and undelete

feedback functions.

* subversion/clients/cmdline/main.c:

(svn_cl__cmd_table): Removed unadd and undelete command table entries.

* subversion/bindings/java/jni/org/tigris/subversion/lib/WorkingCopy.java:

(unadd, undelete): Removed functions.

* subversion/bindings/java/jni/org/tigris/subversion/lib/Client.java:

(unadd, undelete): Removed functions.

* doc/user/svn_for_cvs_users.txt:

* doc/user/manual/adds.texi:

* subversion/tests/clients/cmdline/schedule_tests.py

Documentation and docstring cleanups. No more unadd and undelete commands.

* subversion/libsvn_wc/entries.c

(check_entries, fold_state_changes): Updated to reflect now-absent

unadd and undelete schedules.

* subversion/clients/cmdline/revert-cmd.c

(svn_cl__revert): Now supports recursion!

* subversion/libsvn_client/revert.c

(svn_client_revert): Now supports recursion!

* subversion/libsvn_wc/wc.h

Remove some cruft from days gone by...

  1. … 20 more files in changeset.
* tools/check-license.py: Change to reflect new license.

* everything with a license: Updated with text acknowledging

contributors and advising how to track contribution history.

Suggested by C. Scott Ananian <cananian@lesser-magoo.lcs.mit.edu>.

  1. … 221 more files in changeset.
Initial code for 'svn revert' subcommand.

* clients/cmdline/main.c

(svn_cl__cmd_table): Added 'revert' subcommand.

* clients/cmdline/cl.h

(svn_cl__revert): New function prototype.

* include/svn_client.h

(svn_client_revert): New function prototype.

* clients/cmdline/revert-cmd.c

* libsvn_client/revert.c

New file(s).

* libsvn_wc/adm_ops.c

(svn_wc_revert): New function.

* include/svn_wc.h

(svn_wc_revert): New function prototype.

* clients/cmdline/cleanup-cmd.c

Drop the unnecessary #includes.

* tests/clients/cmdline/basic-tests.py

(basic_revert): New test function.

(test_list): Add reference to new test basic_revert().

  1. … 8 more files in changeset.