Return-Path: X-Original-To: apmail-subversion-commits-archive@minotaur.apache.org Delivered-To: apmail-subversion-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 4B598CA35 for ; Thu, 25 Jul 2013 15:30:29 +0000 (UTC) Received: (qmail 89155 invoked by uid 500); 25 Jul 2013 15:30:27 -0000 Delivered-To: apmail-subversion-commits-archive@subversion.apache.org Received: (qmail 88985 invoked by uid 500); 25 Jul 2013 15:30:27 -0000 Mailing-List: contact commits-help@subversion.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@subversion.apache.org Delivered-To: mailing list commits@subversion.apache.org Received: (qmail 88882 invoked by uid 99); 25 Jul 2013 15:30:26 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 25 Jul 2013 15:30:26 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 25 Jul 2013 15:30:22 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 534532388AA9; Thu, 25 Jul 2013 15:30:02 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1507012 [5/11] - in /subversion/branches/fsfs-format7: ./ build/ build/ac-macros/ build/generator/ build/generator/swig/ build/generator/templates/ contrib/client-side/emacs/ doc/programmer/ notes/http-and-webdav/ subversion/ subversion/bi... Date: Thu, 25 Jul 2013 15:29:53 -0000 To: commits@subversion.apache.org From: stefan2@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20130725153002.534532388AA9@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Modified: subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h (original) +++ subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h Thu Jul 25 15:29:49 2013 @@ -22,8 +22,14 @@ #ifndef SVN_SWIG_SWIGUTIL_RB_H #define SVN_SWIG_SWIGUTIL_RB_H +/* Windows hack: Allow overriding some defaults */ +#include "swigutil_rb__pre_ruby.h" #include +#ifdef HAVE_RUBY_REGEX_H +#include +#else #include +#endif #if SIZEOF_VOIDP == SIZEOF_LONG # define PTR2NUM(x) (ULONG2NUM((unsigned long)(x))) @@ -45,17 +51,6 @@ #include "svn_client.h" #include "svn_repos.h" -/* Define DLL export magic on Windows. */ -#ifdef WIN32 -# ifdef SVN_SWIG_SWIGUTIL_RB_C -# define SVN_RB_SWIG_SWIGUTIL_EXPORT __declspec(dllexport) -# else -# define SVN_RB_SWIG_SWIGUTIL_EXPORT __declspec(dllimport) -# endif -#else -# define SVN_RB_SWIG_SWIGUTIL_EXPORT -#endif - /* Ruby <=1.8.5 compatibility */ #ifndef RARRAY_LEN #define RARRAY_LEN(x) RARRAY(x)->len @@ -89,152 +84,98 @@ typedef struct apr_pool_wrapper_t apr_array_header_t *children; } apr_pool_wrapper_t; -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_initialize(void); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_pool_t *svn_swig_rb_pool(void); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_allocator_t *svn_swig_rb_allocator(void); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_svn_delta_editor(void); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_svn_delta_text_delta_window_handler(void); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_raise_svn_fs_already_close(void); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_raise_svn_repos_already_close(void); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_svn_error_new(VALUE code, VALUE message, VALUE file, VALUE line, VALUE child); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_svn_error_to_rb_error(svn_error_t *error); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_handle_svn_error(svn_error_t *error); -SVN_RB_SWIG_SWIGUTIL_EXPORT void *svn_swig_rb_to_swig_type(VALUE value, const void *ctx, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_from_swig_type(void *value, void *ctx); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_depth_t svn_swig_rb_to_depth(VALUE value); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_mergeinfo_inheritance_t svn_swig_rb_to_mergeinfo_inheritance(VALUE value); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_svn_date_string_to_time(const char *date); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_apr_hash_to_hash_string(apr_hash_t *hash); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_apr_hash_to_hash_svn_string(apr_hash_t *hash); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_apr_hash_to_hash_swig_type(apr_hash_t *hash, const char *type_name); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_apr_hash_to_hash_merge_range(apr_hash_t *hash); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_apr_hash_to_hash_merge_range_hash(apr_hash_t *hash); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_prop_hash_to_hash(apr_hash_t *prop_hash); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_apr_revnum_key_hash_to_hash_string(apr_hash_t *hash); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_apr_array_to_array_string(const apr_array_header_t *ary); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_apr_array_to_array_svn_string(const apr_array_header_t *ary); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_apr_array_to_array_svn_rev(const apr_array_header_t *ary); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_apr_array_to_array_proplist_item(const apr_array_header_t *ary); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_apr_array_to_array_external_item2(const apr_array_header_t *ary); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_apr_array_to_array_merge_range(const apr_array_header_t *ary); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_apr_array_to_array_auth_provider_object(const apr_array_header_t *ary); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_prop_apr_array_to_hash_prop(const apr_array_header_t *ary); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_hash_t *svn_swig_rb_hash_to_apr_hash_string(VALUE hash, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_hash_t *svn_swig_rb_hash_to_apr_hash_svn_string(VALUE hash, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_hash_t *svn_swig_rb_hash_to_apr_hash_swig_type(VALUE hash, const char *typename, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_hash_t *svn_swig_rb_hash_to_apr_hash_revnum(VALUE hash, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_hash_t *svn_swig_rb_hash_to_apr_hash_merge_range(VALUE hash, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_array_header_t *svn_swig_rb_strings_to_apr_array(VALUE strings, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_array_header_t * svn_swig_rb_array_to_auth_provider_object_apr_array(VALUE array, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_array_header_t *svn_swig_rb_array_to_apr_array_revnum(VALUE array, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_array_header_t *svn_swig_rb_array_to_apr_array_merge_range(VALUE array, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_array_header_t *svn_swig_rb_array_to_apr_array_copy_source(VALUE array, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_array_header_t *svn_swig_rb_array_to_apr_array_revision_range(VALUE array, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_array_header_t *svn_swig_rb_to_apr_array_prop(VALUE array_or_hash, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_array_header_t *svn_swig_rb_to_apr_array_row_prop(VALUE array_or_hash, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_get_pool(int argc, VALUE *argv, VALUE self, VALUE *rb_pool, apr_pool_t **pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_boolean_t svn_swig_rb_set_pool(VALUE target, VALUE pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_set_pool_for_no_swig_type(VALUE target, VALUE pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_push_pool(VALUE pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_pop_pool(VALUE pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_destroy_pool(VALUE pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_destroy_internal_pool(VALUE pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_make_delta_editor(svn_delta_editor_t **editor, void **edit_baton, VALUE rb_editor, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_make_baton(VALUE proc, VALUE pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_set_baton(VALUE target, VALUE baton); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_log_receiver(void *baton, apr_hash_t *changed_paths, svn_revnum_t revision, @@ -243,19 +184,16 @@ svn_error_t *svn_swig_rb_log_receiver(vo const char *message, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_log_entry_receiver(void *baton, svn_log_entry_t *entry, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_repos_authz_func(svn_boolean_t *allowed, svn_fs_root_t *root, const char *path, void *baton, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_repos_authz_callback(svn_repos_authz_access_t required, svn_boolean_t *allowed, svn_fs_root_t *root, @@ -264,7 +202,6 @@ svn_error_t *svn_swig_rb_repos_authz_cal apr_pool_t *pool); /* Implements the svn_client_get_commit_log3_t API. */ -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_get_commit_log_func(const char **log_msg, const char **tmp_file, const apr_array_header_t * @@ -272,76 +209,60 @@ svn_error_t *svn_swig_rb_get_commit_log_ void *baton, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_notify_func2(void *baton, const svn_wc_notify_t *notify, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_conflict_resolver_func (svn_wc_conflict_result_t **result, const svn_wc_conflict_description_t *description, void *baton, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_commit_callback(svn_revnum_t new_revision, const char *date, const char *author, void *baton); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_commit_callback2(const svn_commit_info_t *commit_info, void *baton, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_cancel_func(void *cancel_baton); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_info_receiver(void *baton, const char *path, const svn_info_t *info, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_boolean_t svn_swig_rb_config_enumerator(const char *name, const char *value, void *baton, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_boolean_t svn_swig_rb_config_section_enumerator(const char *name, void *baton, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_delta_path_driver_cb_func(void **dir_baton, void *parent_baton, void *callback_baton, const char *path, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_txdelta_window_handler(svn_txdelta_window_t *window, void *baton); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_fs_warning_callback(void *baton, svn_error_t *err); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_fs_warning_callback_baton_register(VALUE baton, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_fs_get_locks_callback(void *baton, svn_lock_t *lock, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_just_call(void *baton); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_setup_ra_callbacks(svn_ra_callbacks2_t **callbacks, void **baton, VALUE rb_callbacks, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_ra_lock_callback(void *baton, const char *path, svn_boolean_t do_lock, @@ -349,7 +270,6 @@ svn_error_t *svn_swig_rb_ra_lock_callbac svn_error_t *ra_err, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_ra_file_rev_handler(void *baton, const char *path, svn_revnum_t rev, @@ -359,13 +279,11 @@ svn_error_t *svn_swig_rb_ra_file_rev_han apr_array_header_t *prop_diffs, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_repos_history_func(void *baton, const char *path, svn_revnum_t revision, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_repos_file_rev_handler(void *baton, const char *path, svn_revnum_t rev, @@ -375,7 +293,6 @@ svn_error_t *svn_swig_rb_repos_file_rev_ apr_array_header_t *prop_diffs, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_wc_relocation_validator3(void *baton, const char *uuid, const char *url, @@ -384,14 +301,12 @@ svn_error_t *svn_swig_rb_wc_relocation_v /* auth provider callbacks */ -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t * svn_swig_rb_auth_gnome_keyring_unlock_prompt_func( char **keyring_passwd, const char *keyring_name, void *baton, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_auth_simple_prompt_func( svn_auth_cred_simple_t **cred, void *baton, @@ -400,7 +315,6 @@ svn_error_t *svn_swig_rb_auth_simple_pro svn_boolean_t may_save, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_auth_username_prompt_func( svn_auth_cred_username_t **cred, void *baton, @@ -408,7 +322,6 @@ svn_error_t *svn_swig_rb_auth_username_p svn_boolean_t may_save, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_auth_ssl_server_trust_prompt_func( svn_auth_cred_ssl_server_trust_t **cred, void *baton, @@ -418,7 +331,6 @@ svn_error_t *svn_swig_rb_auth_ssl_server svn_boolean_t may_save, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_auth_ssl_client_cert_prompt_func( svn_auth_cred_ssl_client_cert_t **cred, void *baton, @@ -426,7 +338,6 @@ svn_error_t *svn_swig_rb_auth_ssl_client svn_boolean_t may_save, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_auth_ssl_client_cert_pw_prompt_func( svn_auth_cred_ssl_client_cert_pw_t **cred, void *baton, @@ -434,27 +345,20 @@ svn_error_t *svn_swig_rb_auth_ssl_client svn_boolean_t may_save, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT apr_file_t *svn_swig_rb_make_file(VALUE file, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_stream_t *svn_swig_rb_make_stream(VALUE io); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_filename_to_temp_file(const char *file_name); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_set_revision(svn_opt_revision_t *rev, VALUE value); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_adjust_arg_for_client_ctx_and_pool(int *argc, VALUE **argv); -SVN_RB_SWIG_SWIGUTIL_EXPORT void svn_swig_rb_wc_status_func(void *baton, const char *path, svn_wc_status2_t *status); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_client_blame_receiver_func(void *baton, apr_int64_t line_no, svn_revnum_t revision, @@ -464,39 +368,27 @@ svn_error_t *svn_swig_rb_client_blame_re apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_wc_entry_callbacks2_t *svn_swig_rb_wc_entry_callbacks2(void); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_wc_diff_callbacks2_t *svn_swig_rb_wc_diff_callbacks2(void); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_make_txdelta_window_handler_wrapper(VALUE *rb_handler_pool, apr_pool_t **handler_pool, svn_txdelta_window_handler_t **handler, void ***handler_baton); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_setup_txdelta_window_handler_wrapper(VALUE obj, svn_txdelta_window_handler_t handler, void *handler_baton); -SVN_RB_SWIG_SWIGUTIL_EXPORT -svn_error_t *svn_swig_rb_invoke_txdelta_window_handler(VALUE window_handler, - svn_txdelta_window_t *window, - apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_invoke_txdelta_window_handler_wrapper(VALUE obj, svn_txdelta_window_t *window, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT VALUE svn_swig_rb_txdelta_window_t_ops_get(svn_txdelta_window_t *window); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_client_diff_summarize_func(const svn_client_diff_summarize_t *diff, void *baton, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_client_list_func(void *baton, const char *path, const svn_dirent_t *dirent, @@ -504,20 +396,17 @@ svn_error_t *svn_swig_rb_client_list_fun const char *abs_path, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_proplist_receiver(void *baton, const char *path, apr_hash_t *prop_hash, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT svn_error_t *svn_swig_rb_changelist_receiver(void *baton, const char *path, const char *changelist, apr_pool_t *pool); -SVN_RB_SWIG_SWIGUTIL_EXPORT -extern svn_ra_reporter3_t *svn_swig_rb_ra_reporter3; +svn_ra_reporter3_t *svn_swig_rb_get_ra_reporter3(); #ifdef __cplusplus } Modified: subversion/branches/fsfs-format7/subversion/bindings/swig/svn_delta.i URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/svn_delta.i?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/bindings/swig/svn_delta.i (original) +++ subversion/branches/fsfs-format7/subversion/bindings/swig/svn_delta.i Thu Jul 25 15:29:49 2013 @@ -63,6 +63,9 @@ */ #ifdef SWIGPYTHON +/* Make swig wrap this function for us, to allow making an editor in python + ### There must be a cleaner way to implement this? + ### Maybe follow Ruby by wrapping it where passing an editor? */ void svn_swig_py_make_editor(const svn_delta_editor_t **editor, void **edit_baton, PyObject *py_editor, @@ -71,14 +74,8 @@ void svn_swig_py_make_editor(const svn_d #ifdef SWIGPERL %typemap(in) (const svn_delta_editor_t *EDITOR, void *BATON) { - svn_delta_make_editor(&$1, &$2, $input, _global_pool); + svn_swig_pl_make_editor(&$1, &$2, $input, _global_pool); } - -void svn_delta_wrap_window_handler(svn_txdelta_window_handler_t *handler, - void **handler_baton, - SV *callback, - apr_pool_t *pool); - #endif #ifdef SWIGRUBY Modified: subversion/branches/fsfs-format7/subversion/bindings/swig/svn_ra.i URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/svn_ra.i?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/bindings/swig/svn_ra.i (original) +++ subversion/branches/fsfs-format7/subversion/bindings/swig/svn_ra.i Thu Jul 25 15:29:49 2013 @@ -65,7 +65,7 @@ #ifdef SWIGPERL /* FIXME: svn_ra_callbacks2_t ? */ %typemap(in) (const svn_ra_callbacks_t *callbacks, void *callback_baton) { - svn_ra_make_callbacks(&$1, &$2, $input, _global_pool); + svn_swig_pl_make_callbacks(&$1, &$2, $input, _global_pool); } #endif #ifdef SWIGRUBY @@ -77,7 +77,7 @@ #ifdef SWIGPYTHON %callback_typemap(const svn_ra_reporter2_t *reporter, void *report_baton, - (svn_ra_reporter2_t *)&swig_py_ra_reporter2, + svn_swig_py_get_ra_reporter2(), , ) %callback_typemap(svn_location_segment_receiver_t receiver, void *receiver_baton, @@ -90,7 +90,7 @@ %callback_typemap(const svn_ra_reporter3_t *reporter, void *report_baton, , , - svn_swig_rb_ra_reporter3) + svn_swig_rb_get_ra_reporter3()) #endif #ifndef SWIGPERL Modified: subversion/branches/fsfs-format7/subversion/include/private/svn_client_private.h URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/private/svn_client_private.h?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/include/private/svn_client_private.h (original) +++ subversion/branches/fsfs-format7/subversion/include/private/svn_client_private.h Thu Jul 25 15:29:49 2013 @@ -283,6 +283,11 @@ svn_client__copy_foreign(const char *url * The keys for the subtree mergeinfo are the repository root-relative * paths of TARGET_PATH_OR_URL and/or its subtrees, regardless of whether * TARGET_PATH_OR_URL is a URL or WC path. + * + * If RA_SESSION is not NULL, use it to obtain merge information instead of + * opening a new session. The session might be reparented after usage, so + * callers should reparent the session back to their original location if + * needed. */ svn_error_t * svn_client__mergeinfo_log(svn_boolean_t finding_merged, @@ -299,6 +304,7 @@ svn_client__mergeinfo_log(svn_boolean_t svn_depth_t depth, const apr_array_header_t *revprops, svn_client_ctx_t *ctx, + svn_ra_session_t *ra_session, apr_pool_t *result_pool, apr_pool_t *scratch_pool); Modified: subversion/branches/fsfs-format7/subversion/include/private/svn_ra_svn_private.h URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/private/svn_ra_svn_private.h?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/include/private/svn_ra_svn_private.h (original) +++ subversion/branches/fsfs-format7/subversion/include/private/svn_ra_svn_private.h Thu Jul 25 15:29:49 2013 @@ -875,7 +875,7 @@ svn_ra_svn__write_data_log_entry(svn_ra_ const svn_string_t *message, svn_boolean_t has_children, svn_boolean_t invalid_revnum, - int revprop_count); + unsigned revprop_count); /** * @} Modified: subversion/branches/fsfs-format7/subversion/include/svn_config.h URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/svn_config.h?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/include/svn_config.h (original) +++ subversion/branches/fsfs-format7/subversion/include/svn_config.h Thu Jul 25 15:29:49 2013 @@ -96,7 +96,7 @@ typedef struct svn_config_t svn_config_t /** @since New in 1.8. */ #define SVN_CONFIG_OPTION_HTTP_MAX_CONNECTIONS "http-max-connections" /** @since New in 1.9. */ -#define SVN_CONFIG_OPTION_BUSTED_PROXY "busted-proxy" +#define SVN_CONFIG_OPTION_HTTP_CHUNKED_REQUESTS "http-chunked-requests" #define SVN_CONFIG_CATEGORY_CONFIG "config" #define SVN_CONFIG_SECTION_AUTH "auth" @@ -725,7 +725,7 @@ svn_config_write_auth_data(apr_hash_t *h */ typedef svn_error_t * (*svn_config_auth_walk_func_t)(svn_boolean_t *delete_cred, - void *cleanup_baton, + void *walk_baton, const char *cred_kind, const char *realmstring, apr_hash_t *hash, Modified: subversion/branches/fsfs-format7/subversion/include/svn_fs.h URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/svn_fs.h?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/include/svn_fs.h (original) +++ subversion/branches/fsfs-format7/subversion/include/svn_fs.h Thu Jul 25 15:29:49 2013 @@ -1035,6 +1035,19 @@ svn_fs_begin_txn(svn_fs_txn_t **txn_p, * ### conflict string * ### *new_rev will always be initialized to SVN_INVALID_REVNUM, or * ### to a valid, committed revision number + * + * @since New in 1.9. + */ +svn_error_t * +svn_fs_commit_txn2(const char **conflict_p, + svn_revnum_t *new_rev, + svn_fs_txn_t *txn, + svn_boolean_t set_timestamp, + apr_pool_t *pool); + +/* + * Same as svn_fs_commit_txn2(), but with @a set_timestamp + * always set to @c TRUE. */ svn_error_t * svn_fs_commit_txn(const char **conflict_p, Modified: subversion/branches/fsfs-format7/subversion/include/svn_io.h URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/svn_io.h?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/include/svn_io.h (original) +++ subversion/branches/fsfs-format7/subversion/include/svn_io.h Thu Jul 25 15:29:49 2013 @@ -2086,11 +2086,11 @@ svn_io_file_seek(apr_file_t *file, apr_off_t *offset, apr_pool_t *pool); -/** Set the file pointer of @a file to @a offset. In contrast to - * #svn_io_file_seek, this function will attempt to resize the internal - * data buffer to @a block_size bytes and to read data aligned to multiples - * of that value. The beginning of the block will be returned in - * @a buffer_start, if that is not NULL. +/** Set the file pointer of the #APR_BUFFERED @a file to @a offset. In + * contrast to #svn_io_file_seek, this function will attempt to resize the + * internal data buffer to @a block_size bytes and to read data aligned to + * multiples of that value. The beginning of the block will be returned + * in @a buffer_start, if that is not NULL. * Uses @a pool for temporary allocations. * * @note Due to limitations of the APR API, in particular pre-1.3 APR, @@ -2098,6 +2098,8 @@ svn_io_file_seek(apr_file_t *file, * function on @a file, you are, however, virtually guaranteed to get at * least 4kByte alignments for all reads. * + * @note Calling this for non-buffered files is legal but inefficient. + * * @since New in 1.9 */ svn_error_t * Modified: subversion/branches/fsfs-format7/subversion/include/svn_version.h URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/svn_version.h?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/include/svn_version.h (original) +++ subversion/branches/fsfs-format7/subversion/include/svn_version.h Thu Jul 25 15:29:49 2013 @@ -192,6 +192,8 @@ struct svn_version_t * unreleased library. A development client is always compatible with * a previous released library. * + * @note Implements the #svn_ver_check_list2.@a comparator interface. + * * @since New in 1.1. */ svn_boolean_t @@ -201,6 +203,8 @@ svn_ver_compatible(const svn_version_t * /** * Check if @a my_version and @a lib_version encode the same version number. * + * @note Implements the #svn_ver_check_list2.@a comparator interface. + * * @since New in 1.2. */ svn_boolean_t @@ -228,10 +232,31 @@ typedef struct svn_version_checklist_t * my_version is compatible with each entry in @a checklist. @a * checklist must end with an entry whose label is @c NULL. * - * @see svn_ver_compatible() + * @a my_version is considered to be compatible with a version in @a checklist + * if @a comparator returns #TRUE when called with @a my_version as the first + * parammeter and the @a checklist version as the second parameter. + * + * @see svn_ver_compatible(), svn_ver_equal() + * + * @note Subversion's own code invariably uses svn_ver_equal() as @a comparator, + * since the cmdline tools sometimes use non-public APIs (such as utility + * functions that haven't been promoted to svn_cmdline.h). Third-party code + * SHOULD use svn_ver_compatible() as @a comparator. * - * @since New in 1.1. + * @since New in 1.9. + */ +svn_error_t * +svn_ver_check_list2(const svn_version_t *my_version, + const svn_version_checklist_t *checklist, + svn_boolean_t (*comparator)(const svn_version_t *, + const svn_version_t *)); + +/** Similar to svn_ver_check_list2(), with @a comparator set to + * #svn_ver_compatible. + * + * @deprecated Provided for backward compatibility with 1.8 API. */ +SVN_DEPRECATED svn_error_t * svn_ver_check_list(const svn_version_t *my_version, const svn_version_checklist_t *checklist); Modified: subversion/branches/fsfs-format7/subversion/include/svn_wc.h URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/svn_wc.h?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/include/svn_wc.h (original) +++ subversion/branches/fsfs-format7/subversion/include/svn_wc.h Thu Jul 25 15:29:49 2013 @@ -1261,6 +1261,11 @@ typedef enum svn_wc_notify_action_t * @since New in 1.9. */ svn_wc_notify_cleanup_external, + /** The operation failed because the operation (E.g. commit) is only valid + * if the operation includes this path. + * @since New in 1.9. */ + svn_wc_notify_failed_requires_target + } svn_wc_notify_action_t; Modified: subversion/branches/fsfs-format7/subversion/libsvn_client/checkout.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_client/checkout.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_client/checkout.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_client/checkout.c Thu Jul 25 15:29:49 2013 @@ -79,8 +79,6 @@ svn_client__checkout_internal(svn_revnum apr_pool_t *pool) { svn_node_kind_t kind; - apr_pool_t *session_pool = svn_pool_create(pool); - svn_ra_session_t *ra_session; svn_client__pathrev_t *pathrev; /* Sanity check. Without these, the checkout is meaningless. */ @@ -94,15 +92,21 @@ svn_client__checkout_internal(svn_revnum && (revision->kind != svn_opt_revision_head)) return svn_error_create(SVN_ERR_CLIENT_BAD_REVISION, NULL, NULL); - /* Get the RA connection. */ - SVN_ERR(svn_client__ra_session_from_path2(&ra_session, &pathrev, - url, NULL, peg_revision, revision, - ctx, session_pool)); + { + apr_pool_t *session_pool = svn_pool_create(pool); + svn_ra_session_t *ra_session; + + /* Get the RA connection. */ + SVN_ERR(svn_client__ra_session_from_path2(&ra_session, &pathrev, + url, NULL, peg_revision, + revision, ctx, session_pool)); + + pathrev = svn_client__pathrev_dup(pathrev, pool); + SVN_ERR(svn_ra_check_path(ra_session, "", pathrev->rev, &kind, + session_pool)); - pathrev = svn_client__pathrev_dup(pathrev, pool); - SVN_ERR(svn_ra_check_path(ra_session, "", pathrev->rev, &kind, pool)); - - svn_pool_destroy(session_pool); + svn_pool_destroy(session_pool); + } if (kind == svn_node_none) return svn_error_createf(SVN_ERR_RA_ILLEGAL_URL, NULL, Modified: subversion/branches/fsfs-format7/subversion/libsvn_client/commit.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_client/commit.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_client/commit.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_client/commit.c Thu Jul 25 15:29:49 2013 @@ -854,6 +854,19 @@ svn_client_commit6(const apr_array_heade svn_dirent_local_style(item->path, iterpool), svn_dirent_local_style(delete_op_root_abspath, iterpool)); + + if (ctx->notify_func2) + { + svn_wc_notify_t *notify; + notify = svn_wc_create_notify( + delete_op_root_abspath, + svn_wc_notify_failed_requires_target, + iterpool); + notify->err = cmt_err; + + ctx->notify_func2(ctx->notify_baton2, notify, iterpool); + } + goto cleanup; } } @@ -885,6 +898,19 @@ svn_client_commit6(const apr_array_heade svn_dirent_local_style(item->path, iterpool), svn_dirent_local_style(copy_op_root_abspath, iterpool)); + + if (ctx->notify_func2) + { + svn_wc_notify_t *notify; + notify = svn_wc_create_notify( + copy_op_root_abspath, + svn_wc_notify_failed_requires_target, + iterpool); + notify->err = cmt_err; + + ctx->notify_func2(ctx->notify_baton2, notify, iterpool); + } + goto cleanup; } } Modified: subversion/branches/fsfs-format7/subversion/libsvn_client/diff_local.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_client/diff_local.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_client/diff_local.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_client/diff_local.c Thu Jul 25 15:29:49 2013 @@ -607,7 +607,10 @@ svn_client__arbitrary_nodes_diff(const c if (kind1 != kind2) return svn_error_createf(SVN_ERR_NODE_UNEXPECTED_KIND, NULL, _("'%s' is not the same node kind as '%s'"), - local_abspath1, local_abspath2); + svn_dirent_local_style(local_abspath1, + scratch_pool), + svn_dirent_local_style(local_abspath2, + scratch_pool)); if (depth == svn_depth_unknown) depth = svn_depth_infinity; @@ -627,7 +630,10 @@ svn_client__arbitrary_nodes_diff(const c else return svn_error_createf(SVN_ERR_NODE_UNEXPECTED_KIND, NULL, _("'%s' is not a file or directory"), - kind1 == svn_node_none ? - local_abspath1 : local_abspath2); + kind1 == svn_node_none + ? svn_dirent_local_style(local_abspath1, + scratch_pool) + : svn_dirent_local_style(local_abspath2, + scratch_pool)); return SVN_NO_ERROR; } Modified: subversion/branches/fsfs-format7/subversion/libsvn_client/merge.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_client/merge.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_client/merge.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_client/merge.c Thu Jul 25 15:29:49 2013 @@ -4740,7 +4740,7 @@ find_gaps_in_merge_source_history(svn_re *gap_start = *gap_end = SVN_INVALID_REVNUM; /* Easy out: There can't be a gap between adjacent revisions. */ - if (abs(source->loc1->rev - source->loc2->rev) == 1) + if (labs(source->loc1->rev - source->loc2->rev) == 1) return SVN_NO_ERROR; /* Get SOURCE as mergeinfo. */ @@ -12050,11 +12050,15 @@ short_circuit_mergeinfo_log(svn_mergeinf svn_log_entry_receiver_t receiver, svn_revnum_t *revision, svn_client_ctx_t *ctx, + svn_ra_session_t *ra_session, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { apr_array_header_t *revprops; svn_error_t *err; + const char *session_url; + + SVN_ERR(svn_ra_get_session_url(ra_session, &session_url, scratch_pool)); revprops = apr_array_make(scratch_pool, 0, sizeof(const char *)); err = svn_client__mergeinfo_log(finding_merged, @@ -12067,8 +12071,12 @@ short_circuit_mergeinfo_log(svn_mergeinf source_end_revision, receiver, revision, TRUE, svn_depth_infinity, - revprops, ctx, result_pool, - scratch_pool); + revprops, ctx, ra_session, + result_pool, scratch_pool); + + err = svn_error_compose_create( + err, + svn_ra_reparent(ra_session, session_url, scratch_pool)); if (err) { @@ -12132,6 +12140,7 @@ find_last_merged_location(svn_client__pa const branch_history_t *source_branch, svn_client__pathrev_t *target, svn_client_ctx_t *ctx, + svn_ra_session_t *ra_session, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { @@ -12159,7 +12168,8 @@ find_last_merged_location(svn_client__pa &source_end_rev, &source_start_rev, operative_rev_receiver, &youngest_merged_rev, - ctx, result_pool, scratch_pool)); + ctx, ra_session, + result_pool, scratch_pool)); if (!SVN_IS_VALID_REVNUM(youngest_merged_rev)) { @@ -12194,7 +12204,8 @@ find_last_merged_location(svn_client__pa &source_start_rev, &source_end_rev, operative_rev_receiver, &oldest_eligible_rev, - ctx, scratch_pool, scratch_pool)); + ctx, ra_session, + scratch_pool, scratch_pool)); /* If there are revisions eligible for merging, use the oldest one to calculate the base. Otherwise there are no operative revisions @@ -12248,7 +12259,9 @@ find_base_on_source(svn_client__pathrev_ s_t->yca, &s_t->source_branch, s_t->target_branch.tip, - ctx, result_pool, scratch_pool)); + ctx, + s_t->source_ra_session, + result_pool, scratch_pool)); return SVN_NO_ERROR; } @@ -12281,7 +12294,9 @@ find_base_on_target(svn_client__pathrev_ s_t->yca, &s_t->target_branch, s_t->source, - ctx, result_pool, scratch_pool)); + ctx, + s_t->target_ra_session, + result_pool, scratch_pool)); return SVN_NO_ERROR; } Modified: subversion/branches/fsfs-format7/subversion/libsvn_client/mergeinfo.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_client/mergeinfo.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_client/mergeinfo.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_client/mergeinfo.c Thu Jul 25 15:29:49 2013 @@ -1021,6 +1021,11 @@ svn_client__elide_mergeinfo(const char * Set *REPOS_ROOT to the root URL of the repository associated with PATH_OR_URL. + If RA_SESSION is NOT NULL and PATH_OR_URL refers to a URL, RA_SESSION + (which must be of the repository containing PATH_OR_URL) will be used + instead of a temporary RA session. Caller is responsible for reparenting + the session if it wants to use it after the call. + Allocate *MERGEINFO_CATALOG and all its contents in RESULT_POOL. Use SCRATCH_POOL for all temporary allocations. @@ -1034,17 +1039,30 @@ get_mergeinfo(svn_mergeinfo_catalog_t *m svn_boolean_t include_descendants, svn_boolean_t ignore_invalid_mergeinfo, svn_client_ctx_t *ctx, + svn_ra_session_t *ra_session, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { - svn_ra_session_t *ra_session; const char *local_abspath; svn_boolean_t use_url = svn_path_is_url(path_or_url); svn_client__pathrev_t *peg_loc; - SVN_ERR(svn_client__ra_session_from_path2(&ra_session, &peg_loc, - path_or_url, NULL, peg_revision, - peg_revision, ctx, scratch_pool)); + if (ra_session && svn_path_is_url(path_or_url)) + { + SVN_ERR(svn_ra_reparent(ra_session, path_or_url, scratch_pool)); + SVN_ERR(svn_client__resolve_rev_and_url(&peg_loc, ra_session, + path_or_url, + peg_revision, + peg_revision, + ctx, scratch_pool)); + } + else + { + SVN_ERR(svn_client__ra_session_from_path2(&ra_session, &peg_loc, + path_or_url, NULL, + peg_revision, + peg_revision, ctx, scratch_pool)); + } /* If PATH_OR_URL is as working copy path determine if we will need to contact the repository for the requested PEG_REVISION. */ @@ -1064,10 +1082,6 @@ get_mergeinfo(svn_mergeinfo_catalog_t *m } } - /* Check server Merge Tracking capability. */ - SVN_ERR(svn_ra__assert_mergeinfo_capable_server(ra_session, path_or_url, - scratch_pool)); - SVN_ERR(svn_ra_get_repos_root2(ra_session, repos_root, result_pool)); if (use_url) @@ -1496,29 +1510,22 @@ logs_for_mergeinfo_rangelist(const char svn_log_entry_receiver_t log_receiver, void *log_receiver_baton, svn_client_ctx_t *ctx, + svn_ra_session_t *ra_session, apr_pool_t *scratch_pool) { - apr_array_header_t *target; svn_merge_range_t *oldest_range, *youngest_range; - apr_array_header_t *revision_ranges; - svn_opt_revision_t oldest_rev, youngest_rev; + svn_revnum_t oldest_rev, youngest_rev; struct filter_log_entry_baton_t fleb; if (! rangelist->nelts) return SVN_NO_ERROR; - /* Build a single-member log target list using SOURCE_URL. */ - target = apr_array_make(scratch_pool, 1, sizeof(const char *)); - APR_ARRAY_PUSH(target, const char *) = source_url; - /* Calculate and construct the bounds of our log request. */ youngest_range = APR_ARRAY_IDX(rangelist, rangelist->nelts - 1, svn_merge_range_t *); - youngest_rev.kind = svn_opt_revision_number; - youngest_rev.value.number = youngest_range->end; + youngest_rev = youngest_range->end; oldest_range = APR_ARRAY_IDX(rangelist, 0, svn_merge_range_t *); - oldest_rev.kind = svn_opt_revision_number; - oldest_rev.value.number = oldest_range->start; + oldest_rev = oldest_range->start; if (! target_mergeinfo_catalog) target_mergeinfo_catalog = apr_hash_make(scratch_pool); @@ -1543,19 +1550,29 @@ logs_for_mergeinfo_rangelist(const char fleb.log_receiver_baton = log_receiver_baton; fleb.ctx = ctx; - /* Drive the log. */ - revision_ranges = apr_array_make(scratch_pool, 1, - sizeof(svn_opt_revision_range_t *)); - if (oldest_revs_first) - APR_ARRAY_PUSH(revision_ranges, svn_opt_revision_range_t *) - = svn_opt__revision_range_create(&oldest_rev, &youngest_rev, scratch_pool); + if (!ra_session) + SVN_ERR(svn_client__open_ra_session_internal(&ra_session, NULL, source_url, + NULL, NULL, FALSE, FALSE, ctx, + scratch_pool, scratch_pool)); else - APR_ARRAY_PUSH(revision_ranges, svn_opt_revision_range_t *) - = svn_opt__revision_range_create(&youngest_rev, &oldest_rev, scratch_pool); - SVN_ERR(svn_client_log5(target, &youngest_rev, revision_ranges, - 0, discover_changed_paths, FALSE, FALSE, revprops, - filter_log_entry_with_rangelist, &fleb, ctx, - scratch_pool)); + SVN_ERR(svn_ra_reparent(ra_session, source_url, scratch_pool)); + + { + apr_array_header_t *target; + target = apr_array_make(scratch_pool, 1, sizeof(const char *)); + APR_ARRAY_PUSH(target, const char *) = ""; + + SVN_ERR(svn_ra_get_log2(ra_session, target, + oldest_revs_first ? oldest_rev : youngest_rev, + oldest_revs_first ? youngest_rev : oldest_rev, + 0 /* limit */, + discover_changed_paths, + FALSE /* strict_node_history */, + FALSE /* include_merged_revisions */, + revprops, + filter_log_entry_with_rangelist, &fleb, + scratch_pool)); + } /* Check for cancellation. */ if (ctx->cancel_func) @@ -1616,7 +1633,7 @@ svn_client_mergeinfo_get_merged(apr_hash svn_mergeinfo_t mergeinfo; SVN_ERR(get_mergeinfo(&mergeinfo_cat, &repos_root, path_or_url, - peg_revision, FALSE, FALSE, ctx, pool, pool)); + peg_revision, FALSE, FALSE, ctx, NULL, pool, pool)); if (mergeinfo_cat) { const char *repos_relpath; @@ -1662,6 +1679,7 @@ svn_client__mergeinfo_log(svn_boolean_t svn_depth_t depth, const apr_array_header_t *revprops, svn_client_ctx_t *ctx, + svn_ra_session_t *ra_session, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { @@ -1715,6 +1733,9 @@ svn_client__mergeinfo_log(svn_boolean_t subpool = svn_pool_create(scratch_pool); + if (ra_session) + target_session = ra_session; + /* We need the union of TARGET_PATH_OR_URL@TARGET_PEG_REVISION's mergeinfo and MERGE_SOURCE_URL's history. It's not enough to do path matching, because renames in the history of MERGE_SOURCE_URL @@ -1731,11 +1752,27 @@ svn_client__mergeinfo_log(svn_boolean_t it ourselves. We do need to get the repos_root though, because get_mergeinfo() won't do it for us. */ target_mergeinfo_cat = *target_mergeinfo_catalog; - SVN_ERR(svn_client__ra_session_from_path2(&target_session, &pathrev, - target_path_or_url, NULL, - target_peg_revision, - target_peg_revision, - ctx, subpool)); + + if (ra_session && svn_path_is_url(target_path_or_url)) + { + SVN_ERR(svn_ra_reparent(ra_session, target_path_or_url, subpool)); + SVN_ERR(svn_client__resolve_rev_and_url(&pathrev, ra_session, + target_path_or_url, + target_peg_revision, + target_peg_revision, + ctx, subpool)); + target_session = ra_session; + } + else + { + SVN_ERR(svn_client__ra_session_from_path2(&target_session, + &pathrev, + target_path_or_url, + NULL, + target_peg_revision, + target_peg_revision, + ctx, subpool)); + } SVN_ERR(svn_ra_get_repos_root2(target_session, &repos_root, scratch_pool)); } @@ -1747,7 +1784,7 @@ svn_client__mergeinfo_log(svn_boolean_t SVN_ERR(get_mergeinfo(target_mergeinfo_catalog, &repos_root, target_path_or_url, target_peg_revision, depth == svn_depth_infinity, TRUE, - ctx, result_pool, scratch_pool)); + ctx, ra_session, result_pool, scratch_pool)); target_mergeinfo_cat = *target_mergeinfo_catalog; } } @@ -1759,7 +1796,7 @@ svn_client__mergeinfo_log(svn_boolean_t SVN_ERR(get_mergeinfo(&target_mergeinfo_cat, &repos_root, target_path_or_url, target_peg_revision, depth == svn_depth_infinity, TRUE, - ctx, scratch_pool, scratch_pool)); + ctx, ra_session, scratch_pool, scratch_pool)); } if (!svn_path_is_url(target_path_or_url)) @@ -1829,11 +1866,28 @@ svn_client__mergeinfo_log(svn_boolean_t scratch_pool)); } - SVN_ERR(svn_client__ra_session_from_path2(&source_session, &pathrev, - source_path_or_url, NULL, - source_peg_revision, - source_peg_revision, - ctx, subpool)); + if (target_session + && svn_path_is_url(source_path_or_url) + && repos_root + && svn_uri_skip_ancestor(repos_root, source_path_or_url, subpool)) + { + /* We can re-use the existing session */ + source_session = target_session; + SVN_ERR(svn_ra_reparent(source_session, source_path_or_url, subpool)); + SVN_ERR(svn_client__resolve_rev_and_url(&pathrev, source_session, + source_path_or_url, + source_peg_revision, + source_peg_revision, + ctx, subpool)); + } + else + { + SVN_ERR(svn_client__ra_session_from_path2(&source_session, &pathrev, + source_path_or_url, NULL, + source_peg_revision, + source_peg_revision, + ctx, subpool)); + } SVN_ERR(svn_client__get_revision_number(&start_rev, &youngest_rev, ctx->wc_ctx, source_path_or_url, source_session, @@ -1852,9 +1906,6 @@ svn_client__mergeinfo_log(svn_boolean_t scratch_pool)); if (start_rev > end_rev) oldest_revs_first = FALSE; - - /* Close the source and target sessions. */ - svn_pool_destroy(subpool); } /* Separate the explicit or inherited mergeinfo on TARGET_PATH_OR_URL, @@ -2111,7 +2162,10 @@ svn_client__mergeinfo_log(svn_boolean_t log_target = svn_path_url_add_component2(repos_root, log_target + 1, scratch_pool); - SVN_ERR(logs_for_mergeinfo_rangelist(log_target, merge_source_fspaths, + { + svn_error_t *err; + + err = logs_for_mergeinfo_rangelist(log_target, merge_source_fspaths, finding_merged, master_inheritable_rangelist, oldest_revs_first, @@ -2122,8 +2176,13 @@ svn_client__mergeinfo_log(svn_boolean_t discover_changed_paths, revprops, log_receiver, log_receiver_baton, - ctx, scratch_pool)); - return SVN_NO_ERROR; + ctx, target_session, scratch_pool); + + /* Close the source and target sessions. */ + svn_pool_destroy(subpool); /* For SVN_ERR_CEASE_INVOCATION */ + + return svn_error_trace(err); + } } svn_error_t * @@ -2142,13 +2201,15 @@ svn_client_mergeinfo_log2(svn_boolean_t svn_client_ctx_t *ctx, apr_pool_t *scratch_pool) { - return svn_client__mergeinfo_log(finding_merged, target_path_or_url, + return svn_error_trace( + svn_client__mergeinfo_log(finding_merged, target_path_or_url, target_peg_revision, NULL, source_path_or_url, source_peg_revision, source_start_revision, source_end_revision, log_receiver, log_receiver_baton, discover_changed_paths, depth, revprops, - ctx, scratch_pool, scratch_pool); + ctx, NULL, + scratch_pool, scratch_pool)); } svn_error_t * @@ -2186,7 +2247,7 @@ svn_client_suggest_merge_sources(apr_arr /* ### TODO: Share ra_session batons to improve efficiency? */ SVN_ERR(get_mergeinfo(&mergeinfo_cat, &repos_root, path_or_url, - peg_revision, FALSE, FALSE, ctx, pool, pool)); + peg_revision, FALSE, FALSE, ctx, NULL, pool, pool)); if (mergeinfo_cat && apr_hash_count(mergeinfo_cat)) { Modified: subversion/branches/fsfs-format7/subversion/libsvn_client/switch.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_client/switch.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_client/switch.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_client/switch.c Thu Jul 25 15:29:49 2013 @@ -239,7 +239,7 @@ switch_internal(svn_revnum_t *result_rev return svn_error_createf(SVN_ERR_CLIENT_UNRELATED_RESOURCES, NULL, _("'%s' shares no common ancestry with '%s'"), switch_url, - svn_dirent_dirname(local_abspath, pool)); + svn_dirent_local_style(local_abspath, pool)); } wcroot_iprops = apr_hash_make(pool); Modified: subversion/branches/fsfs-format7/subversion/libsvn_delta/compat.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_delta/compat.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_delta/compat.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_delta/compat.c Thu Jul 25 15:29:49 2013 @@ -1634,11 +1634,14 @@ apply_change(void **dir_baton, change->copyfrom_path, scratch_pool); else - copyfrom_url = change->copyfrom_path; + { + copyfrom_url = change->copyfrom_path; - /* Make this an FS path by prepending "/" */ - if (copyfrom_url[0] != '/') - copyfrom_url = apr_pstrcat(scratch_pool, "/", copyfrom_url, NULL); + /* Make this an FS path by prepending "/" */ + if (copyfrom_url[0] != '/') + copyfrom_url = apr_pstrcat(scratch_pool, "/", + copyfrom_url, NULL); + } copyfrom_rev = change->copyfrom_rev; } Modified: subversion/branches/fsfs-format7/subversion/libsvn_delta/svndiff.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_delta/svndiff.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_delta/svndiff.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_delta/svndiff.c Thu Jul 25 15:29:49 2013 @@ -34,6 +34,7 @@ #include "private/svn_delta_private.h" #include "private/svn_subr_private.h" #include "private/svn_string_private.h" +#include "private/svn_dep_compat.h" /* ----- Text delta to svndiff ----- */ Modified: subversion/branches/fsfs-format7/subversion/libsvn_fs/fs-loader.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_fs/fs-loader.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_fs/fs-loader.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_fs/fs-loader.c Thu Jul 25 15:29:49 2013 @@ -796,8 +796,9 @@ svn_fs_begin_txn(svn_fs_txn_t **txn_p, s svn_error_t * -svn_fs_commit_txn(const char **conflict_p, svn_revnum_t *new_rev, - svn_fs_txn_t *txn, apr_pool_t *pool) +svn_fs_commit_txn2(const char **conflict_p, svn_revnum_t *new_rev, + svn_fs_txn_t *txn, svn_boolean_t set_timestamp, + apr_pool_t *pool) { svn_error_t *err; @@ -805,7 +806,7 @@ svn_fs_commit_txn(const char **conflict_ if (conflict_p) *conflict_p = NULL; - err = txn->vtable->commit(conflict_p, new_rev, txn, pool); + err = txn->vtable->commit(conflict_p, new_rev, txn, set_timestamp, pool); #ifdef SVN_DEBUG /* Check postconditions. */ @@ -838,6 +839,12 @@ svn_fs_commit_txn(const char **conflict_ return SVN_NO_ERROR; } +svn_error_t * +svn_fs_commit_txn(const char **conflict_p, svn_revnum_t *new_rev, + svn_fs_txn_t *txn, apr_pool_t *pool) +{ + return svn_fs_commit_txn2(conflict_p, new_rev, txn, TRUE, pool); +} svn_error_t * svn_fs_abort_txn(svn_fs_txn_t *txn, apr_pool_t *pool) Modified: subversion/branches/fsfs-format7/subversion/libsvn_fs/fs-loader.h URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_fs/fs-loader.h?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_fs/fs-loader.h (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_fs/fs-loader.h Thu Jul 25 15:29:49 2013 @@ -251,7 +251,8 @@ typedef struct fs_vtable_t typedef struct txn_vtable_t { svn_error_t *(*commit)(const char **conflict_p, svn_revnum_t *new_rev, - svn_fs_txn_t *txn, apr_pool_t *pool); + svn_fs_txn_t *txn, svn_boolean_t set_timestamp, + apr_pool_t *pool); svn_error_t *(*abort)(svn_fs_txn_t *txn, apr_pool_t *pool); svn_error_t *(*get_prop)(svn_string_t **value_p, svn_fs_txn_t *txn, const char *propname, apr_pool_t *pool); Modified: subversion/branches/fsfs-format7/subversion/libsvn_fs_base/dag.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_fs_base/dag.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_fs_base/dag.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_fs_base/dag.c Thu Jul 25 15:29:49 2013 @@ -1576,10 +1576,10 @@ svn_error_t * svn_fs_base__dag_commit_txn(svn_revnum_t *new_rev, svn_fs_txn_t *txn, trail_t *trail, + svn_boolean_t set_timestamp, apr_pool_t *pool) { revision_t revision; - svn_string_t date; apr_hash_t *txnprops; svn_fs_t *fs = txn->fs; const char *txn_id = txn->id; @@ -1605,12 +1605,18 @@ svn_fs_base__dag_commit_txn(svn_revnum_t SVN_ERR(svn_fs_base__txn_make_committed(fs, txn_id, *new_rev, trail, pool)); - /* Set a date on the commit. We wait until now to fetch the date, - so it's definitely newer than any previous revision's date. */ - date.data = svn_time_to_cstring(apr_time_now(), pool); - date.len = strlen(date.data); - return svn_fs_base__set_rev_prop(fs, *new_rev, SVN_PROP_REVISION_DATE, - NULL, &date, trail, pool); + if (set_timestamp) + { + /* Set a date on the commit if requested. We wait until now to fetch the + date, so it's definitely newer than any previous revision's date. */ + svn_string_t date; + date.data = svn_time_to_cstring(apr_time_now(), pool); + date.len = strlen(date.data); + SVN_ERR(svn_fs_base__set_rev_prop(fs, *new_rev, SVN_PROP_REVISION_DATE, + NULL, &date, trail, pool)); + } + + return SVN_NO_ERROR; } Modified: subversion/branches/fsfs-format7/subversion/libsvn_fs_base/dag.h URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_fs_base/dag.h?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_fs_base/dag.h (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_fs_base/dag.h Thu Jul 25 15:29:49 2013 @@ -273,12 +273,16 @@ svn_error_t *svn_fs_base__dag_clone_root latest revision in TXN->FS. If the caller doesn't take care of this, you may lose people's work! + Update commit time to ensure that svn:date revprops remain ordered if + SET_TIMESTAMP is non-zero. + Do any necessary temporary allocation in a subpool of POOL. Consume temporary space at most proportional to the maximum depth of SVN_TXN's tree of mutable nodes. */ svn_error_t *svn_fs_base__dag_commit_txn(svn_revnum_t *new_rev, svn_fs_txn_t *txn, trail_t *trail, + svn_boolean_t set_timestamp, apr_pool_t *pool); Modified: subversion/branches/fsfs-format7/subversion/libsvn_fs_base/fs.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_fs_base/fs.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_fs_base/fs.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_fs_base/fs.c Thu Jul 25 15:29:49 2013 @@ -1493,7 +1493,7 @@ svn_fs_base__init(const svn_version_t *l return svn_error_createf(SVN_ERR_VERSION_MISMATCH, NULL, _("Unsupported FS loader version (%d) for bdb"), loader_version->major); - SVN_ERR(svn_ver_check_list(base_version(), checklist)); + SVN_ERR(svn_ver_check_list2(base_version(), checklist, svn_ver_equal)); SVN_ERR(check_bdb_version()); SVN_ERR(svn_fs_bdb__init(common_pool)); Modified: subversion/branches/fsfs-format7/subversion/libsvn_fs_base/tree.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_fs_base/tree.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_fs_base/tree.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_fs_base/tree.c Thu Jul 25 15:29:49 2013 @@ -2577,6 +2577,7 @@ struct commit_args { svn_fs_txn_t *txn; svn_revnum_t new_rev; + svn_boolean_t set_timestamp; }; @@ -2636,7 +2637,7 @@ txn_body_commit(void *baton, trail_t *tr /* Else, commit the txn. */ return svn_fs_base__dag_commit_txn(&(args->new_rev), txn, trail, - trail->pool); + args->set_timestamp, trail->pool); } @@ -2646,6 +2647,7 @@ svn_error_t * svn_fs_base__commit_txn(const char **conflict_p, svn_revnum_t *new_rev, svn_fs_txn_t *txn, + svn_boolean_t set_timestamp, apr_pool_t *pool) { /* How do commits work in Subversion? @@ -2749,6 +2751,7 @@ svn_fs_base__commit_txn(const char **con /* Try to commit. */ commit_args.txn = txn; + commit_args.set_timestamp = set_timestamp; err = svn_fs_base__retry_txn(fs, txn_body_commit, &commit_args, FALSE, subpool); if (err && (err->apr_err == SVN_ERR_FS_TXN_OUT_OF_DATE)) Modified: subversion/branches/fsfs-format7/subversion/libsvn_fs_base/tree.h URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_fs_base/tree.h?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_fs_base/tree.h (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_fs_base/tree.h Thu Jul 25 15:29:49 2013 @@ -42,6 +42,7 @@ svn_error_t *svn_fs_base__deltify(svn_fs svn_error_t *svn_fs_base__commit_txn(const char **conflict_p, svn_revnum_t *new_rev, svn_fs_txn_t *txn, + svn_boolean_t set_timestamp, apr_pool_t *pool); svn_error_t *svn_fs_base__txn_root(svn_fs_root_t **root_p, svn_fs_txn_t *txn, Modified: subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/fs.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/fs.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/fs.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/fs.c Thu Jul 25 15:29:49 2013 @@ -490,7 +490,7 @@ svn_fs_fs__init(const svn_version_t *loa return svn_error_createf(SVN_ERR_VERSION_MISMATCH, NULL, _("Unsupported FS loader version (%d) for fsfs"), loader_version->major); - SVN_ERR(svn_ver_check_list(fs_version(), checklist)); + SVN_ERR(svn_ver_check_list2(fs_version(), checklist, svn_ver_equal)); *vtable = &library_vtable; return SVN_NO_ERROR; Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_local/ra_plugin.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_local/ra_plugin.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_ra_local/ra_plugin.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_ra_local/ra_plugin.c Thu Jul 25 15:29:49 2013 @@ -1764,7 +1764,7 @@ svn_ra_local__init(const svn_version_t * "ra_local"), loader_version->major); - SVN_ERR(svn_ver_check_list(ra_local_version(), checklist)); + SVN_ERR(svn_ver_check_list2(ra_local_version(), checklist, svn_ver_equal)); #ifndef SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL /* This assumes that POOL was the pool used to load the dso. */ Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/blame.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/blame.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/blame.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/blame.c Thu Jul 25 15:29:49 2013 @@ -111,7 +111,6 @@ static const svn_ra_serf__xml_transition { 0 } }; - /* Conforms to svn_ra_serf__xml_opened_t */ static svn_error_t * blame_opened(svn_ra_serf__xml_estate_t *xes, @@ -359,9 +358,10 @@ svn_ra_serf__get_file_revs(svn_ra_sessio blame_opened, blame_closed, blame_cdata, + NULL, blame_ctx, pool); - handler = svn_ra_serf__create_expat_handler(xmlctx, pool); + handler = svn_ra_serf__create_expat_handler(xmlctx, NULL, pool); handler->method = "REPORT"; handler->path = req_url; Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/commit.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/commit.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/commit.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/commit.c Thu Jul 25 15:29:49 2013 @@ -2269,7 +2269,9 @@ abort_edit(void *edit_baton, && handler->sline.code != 404 ) { - SVN_ERR_MALFUNCTION(); + return svn_error_createf(SVN_ERR_RA_DAV_MALFORMED_DATA, NULL, + _("DELETE returned unexpected status: %d"), + handler->sline.code); } return SVN_NO_ERROR; Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/get_deleted_rev.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/get_deleted_rev.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/get_deleted_rev.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/get_deleted_rev.c Thu Jul 25 15:29:49 2013 @@ -151,10 +151,10 @@ svn_ra_serf__get_deleted_rev(svn_ra_sess pool, pool)); xmlctx = svn_ra_serf__xml_context_create(getdrev_ttable, - NULL, getdrev_closed, NULL, + NULL, getdrev_closed, NULL, NULL, drev_ctx, pool); - handler = svn_ra_serf__create_expat_handler(xmlctx, pool); + handler = svn_ra_serf__create_expat_handler(xmlctx, NULL, pool); handler->method = "REPORT"; handler->path = req_url; Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getdate.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getdate.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getdate.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getdate.c Thu Jul 25 15:29:49 2013 @@ -140,10 +140,10 @@ svn_ra_serf__get_dated_revision(svn_ra_s SVN_ERR(svn_ra_serf__report_resource(&report_target, session, NULL, pool)); xmlctx = svn_ra_serf__xml_context_create(date_ttable, - NULL, date_closed, NULL, + NULL, date_closed, NULL, NULL, date_ctx, pool); - handler = svn_ra_serf__create_expat_handler(xmlctx, pool); + handler = svn_ra_serf__create_expat_handler(xmlctx, NULL, pool); handler->method = "REPORT"; handler->path = report_target; Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getlocations.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getlocations.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getlocations.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getlocations.c Thu Jul 25 15:29:49 2013 @@ -176,10 +176,10 @@ svn_ra_serf__get_locations(svn_ra_sessio pool, pool)); xmlctx = svn_ra_serf__xml_context_create(getloc_ttable, - NULL, getloc_closed, NULL, + NULL, getloc_closed, NULL, NULL, loc_ctx, pool); - handler = svn_ra_serf__create_expat_handler(xmlctx, pool); + handler = svn_ra_serf__create_expat_handler(xmlctx, NULL, pool); handler->method = "REPORT"; handler->path = req_url; Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getlocationsegments.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getlocationsegments.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getlocationsegments.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getlocationsegments.c Thu Jul 25 15:29:49 2013 @@ -178,10 +178,10 @@ svn_ra_serf__get_location_segments(svn_r pool, pool)); xmlctx = svn_ra_serf__xml_context_create(gls_ttable, - NULL, gls_closed, NULL, + NULL, gls_closed, NULL, NULL, gls_ctx, pool); - handler = svn_ra_serf__create_expat_handler(xmlctx, pool); + handler = svn_ra_serf__create_expat_handler(xmlctx, NULL, pool); handler->method = "REPORT"; handler->path = req_url; Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getlocks.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getlocks.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getlocks.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/getlocks.c Thu Jul 25 15:29:49 2013 @@ -246,10 +246,10 @@ svn_ra_serf__get_locks(svn_ra_session_t lock_ctx->hash = apr_hash_make(pool); xmlctx = svn_ra_serf__xml_context_create(getlocks_ttable, - NULL, getlocks_closed, NULL, + NULL, getlocks_closed, NULL, NULL, lock_ctx, pool); - handler = svn_ra_serf__create_expat_handler(xmlctx, pool); + handler = svn_ra_serf__create_expat_handler(xmlctx, NULL, pool); handler->method = "REPORT"; handler->path = req_url; Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/inherited_props.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/inherited_props.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/inherited_props.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/inherited_props.c Thu Jul 25 15:29:49 2013 @@ -258,10 +258,11 @@ svn_ra_serf__get_inherited_props(svn_ra_ iprops_ctx->revision = revision; xmlctx = svn_ra_serf__xml_context_create(iprops_table, - iprops_opened, iprops_closed, NULL, + iprops_opened, iprops_closed, + NULL, NULL, iprops_ctx, scratch_pool); - handler = svn_ra_serf__create_expat_handler(xmlctx, scratch_pool); + handler = svn_ra_serf__create_expat_handler(xmlctx, NULL, scratch_pool); handler->method = "REPORT"; handler->path = req_url; Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/locks.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/locks.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/locks.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/locks.c Thu Jul 25 15:29:49 2013 @@ -142,6 +142,10 @@ static const svn_ra_serf__xml_transition { 0 } }; +static const int locks_expected_status[] = { + 207, + 0 +}; /* Conforms to svn_ra_serf__xml_closed_t */ static svn_error_t * @@ -378,10 +382,10 @@ svn_ra_serf__get_lock(svn_ra_session_t * lock_ctx->lock->path = apr_pstrdup(pool, path); /* be sure */ xmlctx = svn_ra_serf__xml_context_create(locks_ttable, - NULL, locks_closed, NULL, + NULL, locks_closed, NULL, NULL, lock_ctx, pool); - handler = svn_ra_serf__create_expat_handler(xmlctx, pool); + handler = svn_ra_serf__create_expat_handler(xmlctx, locks_expected_status, pool); handler->method = "PROPFIND"; handler->path = req_url; @@ -469,10 +473,10 @@ svn_ra_serf__lock(svn_ra_session_t *ra_s lock_ctx->path, iterpool); xmlctx = svn_ra_serf__xml_context_create(locks_ttable, - NULL, locks_closed, NULL, + NULL, locks_closed, NULL, NULL, lock_ctx, iterpool); - handler = svn_ra_serf__create_expat_handler(xmlctx, iterpool); + handler = svn_ra_serf__create_expat_handler(xmlctx, NULL, iterpool); handler->method = "LOCK"; handler->path = req_url; Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/log.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/log.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/log.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/log.c Thu Jul 25 15:29:49 2013 @@ -579,10 +579,10 @@ svn_ra_serf__get_log(svn_ra_session_t *r pool, pool)); xmlctx = svn_ra_serf__xml_context_create(log_ttable, - log_opened, log_closed, NULL, + log_opened, log_closed, NULL, NULL, log_ctx, pool); - handler = svn_ra_serf__create_expat_handler(xmlctx, pool); + handler = svn_ra_serf__create_expat_handler(xmlctx, NULL, pool); handler->method = "REPORT"; handler->path = req_url; Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/merge.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/merge.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/merge.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/merge.c Thu Jul 25 15:29:49 2013 @@ -404,10 +404,10 @@ svn_ra_serf__run_merge(const svn_commit_ merge_ctx->merge_url = session->session_url.path; xmlctx = svn_ra_serf__xml_context_create(merge_ttable, - NULL, merge_closed, NULL, + NULL, merge_closed, NULL, NULL, merge_ctx, scratch_pool); - handler = svn_ra_serf__create_expat_handler(xmlctx, scratch_pool); + handler = svn_ra_serf__create_expat_handler(xmlctx, NULL, scratch_pool); handler->method = "MERGE"; handler->path = merge_ctx->merge_url; Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/mergeinfo.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/mergeinfo.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/mergeinfo.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/mergeinfo.c Thu Jul 25 15:29:49 2013 @@ -214,10 +214,10 @@ svn_ra_serf__get_mergeinfo(svn_ra_sessio mergeinfo_ctx->include_descendants = include_descendants; xmlctx = svn_ra_serf__xml_context_create(mergeinfo_ttable, - NULL, mergeinfo_closed, NULL, + NULL, mergeinfo_closed, NULL, NULL, mergeinfo_ctx, pool); - handler = svn_ra_serf__create_expat_handler(xmlctx, pool); + handler = svn_ra_serf__create_expat_handler(xmlctx, NULL, pool); handler->method = "REPORT"; handler->path = path; Modified: subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/options.c URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/options.c?rev=1507012&r1=1507011&r2=1507012&view=diff ============================================================================== --- subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/options.c (original) +++ subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/options.c Thu Jul 25 15:29:49 2013 @@ -401,10 +401,10 @@ create_options_req(options_context_t **o new_ctx->youngest_rev = SVN_INVALID_REVNUM; xmlctx = svn_ra_serf__xml_context_create(options_ttable, - NULL, options_closed, NULL, + NULL, options_closed, NULL, NULL, new_ctx, pool); - handler = svn_ra_serf__create_expat_handler(xmlctx, pool); + handler = svn_ra_serf__create_expat_handler(xmlctx, NULL, pool); handler->method = "OPTIONS"; handler->path = session->session_url.path; @@ -545,7 +545,6 @@ svn_ra_serf__probe_proxy(svn_ra_serf__se apr_pool_t *scratch_pool) { svn_ra_serf__handler_t *handler; - svn_error_t *err; handler = apr_pcalloc(scratch_pool, sizeof(*handler)); handler->handler_pool = scratch_pool; @@ -562,27 +561,19 @@ svn_ra_serf__probe_proxy(svn_ra_serf__se /* No special headers. */ - err = svn_ra_serf__context_run_one(handler, scratch_pool); - if (err) + SVN_ERR(svn_ra_serf__context_run_one(handler, scratch_pool)); + /* Some versions of nginx in reverse proxy mode will return 411. They want + a Content-Length header, rather than chunked requests. We can keep other + HTTP/1.1 features, but will disable the chunking. */ + if (handler->sline.code == 411) { - /* Some versions of nginx in reverse proxy mode will return 411. They want - a Content-Length header, rather than chunked requests. We can keep other - HTTP/1.1 features, but will disable the chunking. */ - if (handler->sline.code == 411) - { - serf_sess->using_chunked_requests = FALSE; + serf_sess->using_chunked_requests = FALSE; - svn_error_clear(err); - return SVN_NO_ERROR; - } - - return svn_error_trace( - svn_error_compose_create( - svn_ra_serf__error_on_status(handler->sline, - serf_sess->session_url.path, - handler->location), - err)); + return SVN_NO_ERROR; } + SVN_ERR(svn_ra_serf__error_on_status(handler->sline, + handler->path, + handler->location)); return SVN_NO_ERROR; }