You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2022/01/14 14:01:51 UTC

svn commit: r1897034 [13/37] - in /subversion/branches/multi-wc-format: ./ build/ build/ac-macros/ build/generator/ build/generator/swig/ build/generator/templates/ contrib/client-side/ contrib/client-side/svn_load_dirs/ contrib/hook-scripts/ contrib/s...

Modified: subversion/branches/multi-wc-format/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_client.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_client.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_client.h Fri Jan 14 14:01:45 2022
@@ -736,16 +736,11 @@ typedef svn_error_t *(*svn_client_get_co
  * @{
  */
 
-/** Callback type used by svn_client_blame5() to notify the caller
+/** Callback type used by svn_client_blame6() to notify the caller
  * that line @a line_no of the blamed file was last changed in @a revision
  * which has the revision properties @a rev_props, and that the contents were
  * @a line.
  *
- * @a start_revnum and @a end_revnum contain the start and end revision
- * number of the entire blame operation, as determined from the repository
- * inside svn_client_blame5(). This can be useful for the blame receiver
- * to format the blame output.
- *
  * If svn_client_blame5() was called with @a include_merged_revisions set to
  * TRUE, @a merged_revision, @a merged_rev_props and @a merged_path will be
  * set, otherwise they will be NULL. @a merged_path will be set to the
@@ -758,6 +753,49 @@ typedef svn_error_t *(*svn_client_get_co
  * will be true if the reason there is no blame information is that the line
  * was modified locally. In all other cases @a local_change will be false.
  *
+ * Character Encoding and Line Splitting:
+ *
+ * It is up to the client to determine the character encoding. The @a line
+ * content is delivered without any encoding conversion. The line splitting
+ * is designed to work with ASCII-compatible encodings including UTF-8. Any
+ * of the byte sequences LF ("\n"), CR ("\n"), CR LF ("\r\n") ends a line
+ * and is not included in @a line. The @a line content can include all other
+ * byte values including zero (ASCII NUL).
+ *
+ * @note That is how line splitting is done on the final file content, from
+ * which this callback is driven. It is not entirely clear whether the line
+ * splitting used to calculate diffs between each revision and assign a
+ * revision number to each line is exactly compatible with this in all cases.
+ *
+ * Blaming files that have <tt>svn:mime-type</tt> set to something other
+ * than <tt>text/...</tt> requires the @a ignore_mime_type flag to be set to
+ * true when calling the svn_client_blame6 function.
+ *
+ * @since New in 1.12.
+ */
+typedef svn_error_t *(*svn_client_blame_receiver4_t)(
+  void *baton,
+  apr_int64_t line_no,
+  svn_revnum_t revision,
+  apr_hash_t *rev_props,
+  svn_revnum_t merged_revision,
+  apr_hash_t *merged_rev_props,
+  const char *merged_path,
+  const svn_string_t *line,
+  svn_boolean_t local_change,
+  apr_pool_t *pool);
+
+/**
+ * Similar to #svn_client_blame_receiver4_t, but with the @a line parameter
+ * as a (const char*) instead of an svn_string_t, and the parameters
+ * @a start_revnum and @a end_revnum contain the start and end revision
+ * number of the entire blame operation, as resolved from the repository
+ * inside svn_client_blame6().
+ *
+ * @deprecated Provided for backward compatibility with the 1.11 API.
+ * To replace @a start_revnum and @a end_revnum, see the corresponding
+ * output parameters in svn_client_blame6().
+ *
  * @since New in 1.7.
  */
 typedef svn_error_t *(*svn_client_blame_receiver3_t)(
@@ -1221,7 +1259,7 @@ svn_client_args_to_target_array(apr_arra
  *         #svn_opt_revision_date. <br>
  *         If no error occurred, return #SVN_NO_ERROR.
  *
- * @since New in 1.12.
+ * @since New in 1.15.
  *
  * @see #svn_depth_t <br> #svn_client_ctx_t <br> @ref clnt_revisions for
  *      a discussion of operative and peg revisions.
@@ -2945,6 +2983,12 @@ svn_client_log(const apr_array_header_t
  * #SVN_RA_CAPABILITY_GET_FILE_REVS_REVERSE) and the client is 1.9.0 or
  * newer.
  *
+ * Before the first call to @a receiver, set @a *start_revnum_p and
+ * @a *end_revnum_p to the start and end revision number of the entire
+ * blame operation, as resolved from the repository. This can be useful
+ * for the blame receiver to format the blame output. Any or both of these
+ * arguments may be @c NULL.
+ *
  * Use @a diff_options to determine how to compare different revisions of the
  * target.
  *
@@ -2953,8 +2997,33 @@ svn_client_log(const apr_array_header_t
  *
  * Use @a pool for any temporary allocation.
  *
+ * @since New in 1.12.
+ */
+svn_error_t *
+svn_client_blame6(svn_revnum_t *start_revnum_p,
+                  svn_revnum_t *end_revnum_p,
+                  const char *path_or_url,
+                  const svn_opt_revision_t *peg_revision,
+                  const svn_opt_revision_t *start,
+                  const svn_opt_revision_t *end,
+                  const svn_diff_file_options_t *diff_options,
+                  svn_boolean_t ignore_mime_type,
+                  svn_boolean_t include_merged_revisions,
+                  svn_client_blame_receiver4_t receiver,
+                  void *receiver_baton,
+                  svn_client_ctx_t *ctx,
+                  apr_pool_t *pool);
+
+
+/**
+ * Similar to svn_client_blame6(), but with #svn_client_blame_receiver3_t
+ * as the receiver.
+ *
+ * @deprecated Provided for backwards compatibility with the 1.11 API.
+ *
  * @since New in 1.7.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_blame5(const char *path_or_url,
                   const svn_opt_revision_t *peg_revision,
@@ -2968,9 +3037,8 @@ svn_client_blame5(const char *path_or_ur
                   svn_client_ctx_t *ctx,
                   apr_pool_t *pool);
 
-
 /**
- * Similar to svn_client_blame5(), but with #svn_client_blame_receiver3_t
+ * Similar to svn_client_blame5(), but with #svn_client_blame_receiver2_t
  * as the receiver.
  *
  * @deprecated Provided for backwards compatibility with the 1.6 API.
@@ -4235,7 +4303,7 @@ svn_client_mergeinfo_log_eligible(const
  * in @a dir_abspath after successful working copy cleanup.
  *
  * If @a fix_recorded_timestamps is @c TRUE, this function fixes recorded
- * timestamps for unmodified files in the working copy, reducing comparision
+ * timestamps for unmodified files in the working copy, reducing comparison
  * time on future checks.
  *
  * If @a vacuum_pristines is @c TRUE, and @a dir_abspath points to the working
@@ -4274,7 +4342,7 @@ svn_client_vacuum(const char *dir_abspat
  * dir_abspath are broken, otherwise a normal write lock is obtained.
  *
  * If @a fix_recorded_timestamps is @c TRUE, this function fixes recorded
- * timestamps for unmodified files in the working copy, reducing comparision
+ * timestamps for unmodified files in the working copy, reducing comparison
  * time on future checks.
  *
  * If @a clear_dav_cache is @c TRUE, the caching of DAV information for older
@@ -4338,7 +4406,7 @@ svn_client_cleanup(const char *dir,
  *
  * Use @a scratch_pool for any temporary allocations.
  *
- * @since New in 1.12.
+ * @since New in 1.15.
  */
 svn_error_t *
 svn_client_upgrade2(const char *wcroot_dir,
@@ -4351,7 +4419,7 @@ svn_client_upgrade2(const char *wcroot_d
  * supported format.
  *
  * @since New in 1.7.
- * @deprecated Provided for backward compatibility with the 1.11 API.
+ * @deprecated Provided for backward compatibility with the 1.14 API.
  */
 SVN_DEPRECATED
 svn_error_t *
@@ -4363,7 +4431,7 @@ svn_client_upgrade(const char *wcroot_di
  * Returns the version related to the earliest supported
  * working copy metadata format.
  *
- * @since New in 1.12.
+ * @since New in 1.15.
  */
 const svn_version_t *
 svn_client_supported_wc_version(void);
@@ -4465,6 +4533,10 @@ svn_client_relocate(const char *dir,
  * removed from the working copy. Otherwise, all items are reverted and
  * their on-disk state changed to match.
  *
+ * Consult the @c SVN_CONFIG_OPTION_USE_COMMIT_TIMES option in @a ctx to
+ * determine whether or not to revert timestamp to the time of last
+ * commit ('use-commit-times = yes').
+ *
  * If @a ctx->notify_func2 is non-NULL, then for each item reverted,
  * call @a ctx->notify_func2 with @a ctx->notify_baton2 and the path of
  * the reverted item.
@@ -4619,11 +4691,16 @@ typedef enum svn_client_conflict_option_
   svn_client_conflict_option_sibling_move_file_text_merge, /**< @since New in 1.11. */
   svn_client_conflict_option_sibling_move_dir_merge, /**< @since New in 1.11. */
 
+  /* Options for local move vs incoming move on merge. */
+  svn_client_conflict_option_both_moved_file_merge, /*< @since New in 1.12 */
+  svn_client_conflict_option_both_moved_file_move_merge, /*< @since New in 1.12 */
+  svn_client_conflict_option_both_moved_dir_merge, /*< @since New in 1.12 */
+  svn_client_conflict_option_both_moved_dir_move_merge, /*< @since New in 1.12 */
 } svn_client_conflict_option_id_t;
 
 /**
  * Set a merged property value on @a option to @a merged_propval.
- * 
+ *
  * Setting the merged value is required before resolving the property
  * conflict using an option with ID svn_client_conflict_option_merged_text.
  *
@@ -4692,7 +4769,7 @@ svn_client_conflict_option_get_moved_to_
  *
  * @a preferred_move_target_idx must be a valid index into the list returned
  * by svn_client_conflict_option_get_moved_to_repos_relpath_candidates().
- * 
+ *
  * This function can be called multiple times.
  * It affects the output of svn_client_conflict_tree_get_description() and
  * svn_client_conflict_option_get_description(). Call these functions again
@@ -4733,7 +4810,7 @@ svn_client_conflict_option_set_moved_to_
  * svn_client_conflict_option_get_moved_to_repos_relpath_candidates() before
  * calling this function to let the user select a repository path first.
  * Otherwise, one of the repository-side paths will be selected internally.
- * 
+ *
  * @a *possible_moved_to_abspaths is set to NULL if the @a option does not
  * support multiple move targets. API users may assume that only one option
  * among those which can be applied to a conflict supports move targets.
@@ -4775,10 +4852,10 @@ svn_client_conflict_option_get_moved_to_
 /**
  * Set the preferred moved target working copy path. If @a option is not
  * applicable to a moved target working copy path, do nothing.
- * 
+ *
  * @a preferred_move_target_idx must be a valid index into the list
  * returned by svn_client_conflict_option_get_moved_to_abspath_candidates2().
- * 
+ *
  * This function can be called multiple times.
  * It affects the output of svn_client_conflict_tree_get_description() and
  * svn_client_conflict_option_get_description(). Call these functions again
@@ -4824,7 +4901,7 @@ svn_client_conflict_option_find_by_id(
 
 /**
  * Return a conflict for the conflicted path @a local_abspath.
- * 
+ *
  * @since New in 1.10.
  */
 svn_error_t *
@@ -4839,7 +4916,7 @@ svn_client_conflict_get(svn_client_confl
  *
  * The lifetime of @a conflict is limited. Its allocation in
  * memory will not persist beyond this callback's execution.
- * 
+ *
  * @since New in 1.10.
  */
 typedef svn_error_t *(*svn_client_conflict_walk_func_t)(
@@ -4852,12 +4929,12 @@ typedef svn_error_t *(*svn_client_confli
  * Pass each conflict found during the walk to the @a conflict_walk_func
  * callback, along with @a conflict_walk_func_baton.
  * Use cancellation and notification support provided by client context @a ctx.
- * 
+ *
  * This callback may choose to resolve the conflict. If the act of resolving
  * a conflict creates new conflicts within the walked working copy (as might
  * be the case for some tree conflicts), the callback will be invoked for each
  * such new conflict as well.
- * 
+ *
  * @since New in 1.10.
  */
 svn_error_t *
@@ -4877,7 +4954,7 @@ svn_client_conflict_walk(const char *loc
 * It contains the names of conflicted properties. If no property conflict
 * exists, the array will contain no elements.
 *
-* @since New in 1.10. 
+* @since New in 1.10.
 */
 svn_error_t *
 svn_client_conflict_get_conflicted(svn_boolean_t *text_conflicted,
@@ -5060,7 +5137,7 @@ svn_client_conflict_option_get_descripti
  * Client implementations which aim to avoid excessive interactive prompting
  * may wish to try a recommended resolution option before falling back to
  * asking the user which option to use.
- * 
+ *
  * Conflict resolution with a recommended option is not guaranteed to succeed.
  * Clients should check for errors when trying to resolve a conflict and fall
  * back to other options and/or interactive prompting when the recommended
@@ -5078,7 +5155,7 @@ svn_client_conflict_get_recommended_opti
  * Return the absolute path to the conflicted working copy node described
  * by @a conflict.
  *
- * @since New in 1.10. 
+ * @since New in 1.10.
  */
 const char *
 svn_client_conflict_get_local_abspath(svn_client_conflict_t *conflict);
@@ -5087,7 +5164,7 @@ svn_client_conflict_get_local_abspath(sv
  * Return the operation during which the conflict described by @a
  * conflict was recorded.
  *
- * @since New in 1.10. 
+ * @since New in 1.10.
  */
 svn_wc_operation_t
 svn_client_conflict_get_operation(svn_client_conflict_t *conflict);
@@ -5095,8 +5172,8 @@ svn_client_conflict_get_operation(svn_cl
 /**
  * Return the action an update, switch, or merge operation attempted to
  * perform on the working copy node described by @a conflict.
- * 
- * @since New in 1.10. 
+ *
+ * @since New in 1.10.
  */
 svn_wc_conflict_action_t
 svn_client_conflict_get_incoming_change(svn_client_conflict_t *conflict);
@@ -5109,14 +5186,14 @@ svn_client_conflict_get_incoming_change(
  * modifications in the working copy. During merge operations it may
  * additionally be part of the history of the merge target branch, anywhere
  * between the common ancestor revision and the working copy revision.
- * 
- * @since New in 1.10. 
+ *
+ * @since New in 1.10.
  */
 svn_wc_conflict_reason_t
 svn_client_conflict_get_local_change(svn_client_conflict_t *conflict);
 
 /**
- * Return information about the repository associated with @a conflict. 
+ * Return information about the repository associated with @a conflict.
  * In case of a foreign-repository merge this will differ from the
  * repository information associated with the merge target working copy.
  *
@@ -5134,11 +5211,11 @@ svn_client_conflict_get_repos_info(const
  * old version of the conflicted node described by @a conflict.
  *
  * If the repository-relative path is not available, the @a
- * *incoming_old_repos_relpath will be set to @c NULL, 
+ * *incoming_old_repos_relpath will be set to @c NULL,
  *
  * If the peg revision is not available, @a *incoming_old_regrev will be
  * set to SVN_INVALID_REVNUM.
- * 
+ *
  * If the node kind is not available or if the node does not exist at the
  * specified path and revision, @a *incoming_old_node_kind will be set to
  * svn_node_none.
@@ -5149,7 +5226,7 @@ svn_client_conflict_get_repos_info(const
  *
  * In case of tree conflicts, this "path@revision" does not necessarily exist
  * in the repository, and it does not necessarily represent the incoming
- * change which is responsible for the occurance of the tree conflict.
+ * change which is responsible for the occurrence of the tree conflict.
  * The responsible incoming change is generally located somewhere between
  * the old and new incoming versions.
  *
@@ -5253,7 +5330,7 @@ svn_client_conflict_prop_get_reject_absp
  * Return the set of property values involved in the conflict of property
  * PROPNAME described by @a conflict. If a property value is unavailable the
  * corresponding output argument is set to @c NULL.
- *  
+ *
  * A 3-way diff of these property values can be generated with
  * svn_diff_mem_string_diff3(). A merged version with conflict
  * markers can be generated with svn_diff_mem_string_output_merge3().
@@ -5321,11 +5398,11 @@ const char *
 svn_client_conflict_text_get_mime_type(svn_client_conflict_t *conflict);
 
 /**
- * Return absolute paths to the versions of the text-conflicted file 
+ * Return absolute paths to the versions of the text-conflicted file
  * described by @a conflict.
  *
  * If a particular content is not available, it is set to @c NULL.
- * 
+ *
  * ### Should this be returning svn_stream_t instead of paths?
  * @since: New in 1.10.
  */
@@ -5596,7 +5673,7 @@ svn_client_copy7(const apr_array_header_
 /**
  * Similar to svn_client_copy7(), but doesn't support meta_data_only
  * and cannot pin externals.
- * 
+ *
  *
  * @since New in 1.7.
  * @deprecated Provided for backward compatibility with the 1.8 API.
@@ -6980,405 +7057,6 @@ svn_client_cat(svn_stream_t *out,
 /** @} end group: cat */
 
 
-
-/** Shelving v2, with checkpoints
- *
- * @defgroup svn_client_shelves_checkpoints Shelves and checkpoints
- * @{
- */
-
-/** A shelf.
- *
- * @warning EXPERIMENTAL.
- */
-typedef struct svn_client__shelf_t
-{
-    /* Public fields (read-only for public use) */
-    const char *name;
-    int max_version;  /**< @deprecated */
-
-    /* Private fields */
-    const char *wc_root_abspath;
-    const char *shelves_dir;
-    apr_hash_t *revprops;  /**< non-null; allocated in POOL */
-    svn_client_ctx_t *ctx;
-    apr_pool_t *pool;
-} svn_client__shelf_t;
-
-/** One version of a shelved change-set.
- *
- * @warning EXPERIMENTAL.
- */
-typedef struct svn_client__shelf_version_t
-{
-  /* Public fields (read-only for public use) */
-  svn_client__shelf_t *shelf;
-  apr_time_t mtime;  /**< time-stamp of this version */
-
-  /* Private fields */
-  const char *files_dir_abspath;  /**< abspath of the storage area */
-  int version_number;  /**< version number starting from 1 */
-} svn_client__shelf_version_t;
-
-/** Open an existing shelf or create a new shelf.
- *
- * Create a new shelf (containing no versions) if a shelf named @a name
- * is not found.
- *
- * The shelf should be closed after use by calling svn_client_shelf_close().
- *
- * @a local_abspath is any path in the WC and is used to find the WC root.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_open_or_create(svn_client__shelf_t **shelf_p,
-                                const char *name,
-                                const char *local_abspath,
-                                svn_client_ctx_t *ctx,
-                                apr_pool_t *result_pool);
-
-/** Open an existing shelf named @a name, or error if it doesn't exist.
- *
- * The shelf should be closed after use by calling svn_client_shelf_close().
- *
- * @a local_abspath is any path in the WC and is used to find the WC root.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_open_existing(svn_client__shelf_t **shelf_p,
-                               const char *name,
-                               const char *local_abspath,
-                               svn_client_ctx_t *ctx,
-                               apr_pool_t *result_pool);
-
-/** Close @a shelf.
- *
- * If @a shelf is NULL, do nothing; otherwise @a shelf must be an open shelf.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_close(svn_client__shelf_t *shelf,
-                       apr_pool_t *scratch_pool);
-
-/** Delete the shelf named @a name, or error if it doesn't exist.
- *
- * @a local_abspath is any path in the WC and is used to find the WC root.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_delete(const char *name,
-                        const char *local_abspath,
-                        svn_boolean_t dry_run,
-                        svn_client_ctx_t *ctx,
-                        apr_pool_t *scratch_pool);
-
-/** Save the local modifications found by @a paths, @a depth,
- * @a changelists as a new version of @a shelf.
- *
- * If any paths are shelved, create a new shelf-version and return the new
- * shelf-version in @a *new_version_p, else set @a *new_version_p to null.
- * @a new_version_p may be null if that output is not wanted; a new shelf-
- * version is still saved and may be found through @a shelf.
- *
- * @a paths are relative to the CWD, or absolute.
- *
- * For each successfully shelved path: call @a shelved_func (if not null)
- * with @a shelved_baton.
- *
- * If any paths cannot be shelved: if @a not_shelved_func is given, call
- * it with @a not_shelved_baton for each such path, and still create a new
- * shelf-version if any paths are shelved.
- *
- * This function does not revert the changes from the WC; use
- * svn_client_shelf_unapply() for that.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_save_new_version3(svn_client__shelf_version_t **new_version_p,
-                                   svn_client__shelf_t *shelf,
-                                   const apr_array_header_t *paths,
-                                   svn_depth_t depth,
-                                   const apr_array_header_t *changelists,
-                                   svn_client_status_func_t shelved_func,
-                                   void *shelved_baton,
-                                   svn_client_status_func_t not_shelved_func,
-                                   void *not_shelved_baton,
-                                   apr_pool_t *scratch_pool);
-
-/** Delete all newer versions of @a shelf newer than @a shelf_version.
- *
- * If @a shelf_version is null, delete all versions of @a shelf. (The
- * shelf will still exist, with any log message and other revprops, but
- * with no versions in it.)
- *
- * Leave the shelf's log message and other revprops unchanged.
- *
- * Any #svn_client_shelf_version_t object that refers to a deleted version
- * will become invalid: attempting to use it will give undefined behaviour.
- * The given @a shelf_version will remain valid.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_delete_newer_versions(svn_client__shelf_t *shelf,
-                                       svn_client__shelf_version_t *shelf_version,
-                                       apr_pool_t *scratch_pool);
-
-/** Return in @a shelf_version an existing version of @a shelf, given its
- * @a version_number (starting from 1). Error if that version doesn't exist.
- *
- * There is no need to "close" it after use.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_version_open(svn_client__shelf_version_t **shelf_version_p,
-                              svn_client__shelf_t *shelf,
-                              int version_number,
-                              apr_pool_t *result_pool,
-                              apr_pool_t *scratch_pool);
-
-/** Return in @a shelf_version the newest version of @a shelf.
- *
- * Set @a shelf_version to null if no versions exist.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_get_newest_version(svn_client__shelf_version_t **shelf_version_p,
-                                    svn_client__shelf_t *shelf,
-                                    apr_pool_t *result_pool,
-                                    apr_pool_t *scratch_pool);
-
-/** Return in @a versions_p an array of (#svn_client_shelf_version_t *)
- * containing all versions of @a shelf.
- *
- * The versions will be in chronological order, oldest to newest.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_get_all_versions(apr_array_header_t **versions_p,
-                                  svn_client__shelf_t *shelf,
-                                  apr_pool_t *result_pool,
-                                  apr_pool_t *scratch_pool);
-
-/** Apply @a shelf_version to the WC.
- *
- * If @a dry_run is true, try applying the shelf-version to the WC and
- * report the full set of notifications about successes and conflicts,
- * but leave the WC untouched.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_apply(svn_client__shelf_version_t *shelf_version,
-                       svn_boolean_t dry_run,
-                       apr_pool_t *scratch_pool);
-
-/** Test whether we can successfully apply the changes for @a file_relpath
- * in @a shelf_version to the WC.
- *
- * Set @a *conflict_p to true if the changes conflict with the WC state,
- * else to false.
- *
- * If @a file_relpath is not found in @a shelf_version, set @a *conflict_p
- * to FALSE.
- *
- * @a file_relpath is relative to the WC root.
- *
- * A conflict means the shelf cannot be applied successfully to the WC
- * because the change to be applied is not compatible with the current
- * working state of the WC file. Examples are a text conflict, or the
- * file does not exist or is a directory, or the shelf is trying to add
- * the file but it already exists, or trying to delete it but it does not
- * exist.
- *
- * Return an error only if something is broken, e.g. unable to read data
- * from the specified shelf-version.
- *
- * Leave the WC untouched.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_test_apply_file(svn_boolean_t *conflict_p,
-                                 svn_client__shelf_version_t *shelf_version,
-                                 const char *file_relpath,
-                                 apr_pool_t *scratch_pool);
-
-/** Reverse-apply @a shelf_version to the WC.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_unapply(svn_client__shelf_version_t *shelf_version,
-                         svn_boolean_t dry_run,
-                         apr_pool_t *scratch_pool);
-
-/** Set @a *affected_paths to a hash with one entry for each path affected
- * by the @a shelf_version.
- *
- * The hash key is the path of the affected file, relative to the WC root.
- *
- * (Future possibility: When moves and copies are supported, the hash key
- * is the old path and value is the new path.)
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_paths_changed(apr_hash_t **affected_paths,
-                               svn_client__shelf_version_t *shelf_version,
-                               apr_pool_t *result_pool,
-                               apr_pool_t *scratch_pool);
-
-/** Set @a shelf's revprop @a prop_name to @a prop_val.
- *
- * This can be used to set or change the shelf's log message
- * (property name "svn:log" or #SVN_PROP_REVISION_LOG).
- *
- * If @a prop_val is NULL, delete the property (if present).
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_revprop_set(svn_client__shelf_t *shelf,
-                             const char *prop_name,
-                             const svn_string_t *prop_val,
-                             apr_pool_t *scratch_pool);
-
-/** Set @a shelf's revprops to @a revprop_table.
- *
- * This deletes all previous revprops.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_revprop_set_all(svn_client__shelf_t *shelf,
-                                 apr_hash_t *revprop_table,
-                                 apr_pool_t *scratch_pool);
-
-/** Get @a shelf's revprop @a prop_name into @a *prop_val.
- *
- * If the property is not present, set @a *prop_val to NULL.
- *
- * This can be used to get the shelf's log message
- * (property name "svn:log" or #SVN_PROP_REVISION_LOG).
- *
- * The lifetime of the result is limited to that of @a shelf and/or
- * of @a result_pool.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_revprop_get(svn_string_t **prop_val,
-                             svn_client__shelf_t *shelf,
-                             const char *prop_name,
-                             apr_pool_t *result_pool);
-
-/** Get @a shelf's revprops into @a props.
- *
- * The lifetime of the result is limited to that of @a shelf and/or
- * of @a result_pool.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_revprop_list(apr_hash_t **props,
-                              svn_client__shelf_t *shelf,
-                              apr_pool_t *result_pool);
-
-/** Set the log message in @a shelf to @a log_message.
- *
- * If @a log_message is null, delete the log message.
- *
- * Similar to svn_client_shelf_revprop_set(... SVN_PROP_REVISION_LOG ...).
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_set_log_message(svn_client__shelf_t *shelf,
-                                 const char *log_message,
-                                 apr_pool_t *scratch_pool);
-
-/** Get the log message in @a shelf into @a *log_message.
- *
- * Set @a *log_message to NULL if there is no log message.
- *
- * Similar to svn_client_shelf_revprop_get(... SVN_PROP_REVISION_LOG ...).
- *
- * The result is allocated in @a result_pool.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_get_log_message(char **log_message,
-                                 svn_client__shelf_t *shelf,
-                                 apr_pool_t *result_pool);
-
-/** Information about a shelf.
- *
- * @warning EXPERIMENTAL.
- */
-typedef struct svn_client__shelf_info_t
-{
-  apr_time_t mtime;  /**< mtime of the latest change */
-} svn_client__shelf_info_t;
-
-/** Set @a *shelf_infos to a hash, keyed by shelf name, of pointers to
- * @c svn_client_shelf_info_t structures, one for each shelf in the
- * given WC.
- *
- * @a local_abspath is any path in the WC and is used to find the WC root.
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_list(apr_hash_t **shelf_infos,
-                      const char *local_abspath,
-                      svn_client_ctx_t *ctx,
-                      apr_pool_t *result_pool,
-                      apr_pool_t *scratch_pool);
-
-/** Report the shelved status of all the shelved paths in @a shelf_version
- * via @a walk_func(@a walk_baton, ...).
- *
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client__shelf_version_status_walk(svn_client__shelf_version_t *shelf_version,
-                                     const char *wc_relpath,
-                                     svn_wc_status_func4_t walk_func,
-                                     void *walk_baton,
-                                     apr_pool_t *scratch_pool);
-/** @} */
-
 /** Changelist commands
  *
  * @defgroup svn_client_changelist_funcs Client Changelist Functions
@@ -7912,7 +7590,7 @@ svn_client_get_wc_root(const char **wcro
  * Set @a *min_revision and @a *max_revision to the lowest and highest
  * revision numbers found within @a local_abspath.  If @a committed is
  * TRUE, set @a *min_revision and @a *max_revision to the lowest and
- * highest comitted (i.e. "last changed") revision numbers,
+ * highest committed (i.e. "last changed") revision numbers,
  * respectively.  NULL may be passed for either of @a min_revision and
  * @a max_revision to indicate the caller's lack of interest in the
  * value.  Use @a scratch_pool for temporary allocations.

Modified: subversion/branches/multi-wc-format/subversion/include/svn_cmdline.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_cmdline.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_cmdline.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_cmdline.h Fri Jan 14 14:01:45 2022
@@ -341,7 +341,7 @@ svn_cmdline_auth_plaintext_passphrase_pr
  * from the future.
  *
  * @a trust_server_cert_other_failure: If @c TRUE, accept certificates
- * even if any other verification failure than the above occured.
+ * even if any other verification failure than the above occurred.
  *
  * @a cfg is the @c SVN_CONFIG_CATEGORY_CONFIG configuration, and
  * @a cancel_func and @a cancel_baton control the cancellation of the

Modified: subversion/branches/multi-wc-format/subversion/include/svn_compat.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_compat.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_compat.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_compat.h Fri Jan 14 14:01:45 2022
@@ -84,7 +84,7 @@ svn_compat_log_revprops_out_string(const
                                    const svn_string_t **message,
                                    apr_hash_t *revprops);
 
-/** Simiar to svn_compat_log_revprops_out_string() but returns C-style strings
+/** Similar to svn_compat_log_revprops_out_string() but returns C-style strings
  * instead of #svn_string_t.
  *
  * @since New in 1.5.

Modified: subversion/branches/multi-wc-format/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_config.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_config.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_config.h Fri Jan 14 14:01:45 2022
@@ -44,8 +44,8 @@ extern "C" {
 /**************************************************************************
  ***                                                                    ***
  ***  For a description of the SVN configuration file syntax, see       ***
- ***  your ~/.subversion/README, which is written out automatically by  ***
- ***  svn_config_ensure().                                              ***
+ ***  your ~/.subversion/README.txt, which is written out automatically ***
+ ***  by svn_config_ensure().                                           ***
  ***                                                                    ***
  **************************************************************************/
 

Modified: subversion/branches/multi-wc-format/subversion/include/svn_delta.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_delta.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_delta.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_delta.h Fri Jan 14 14:01:45 2022
@@ -495,6 +495,10 @@ svn_txdelta_send_contents(const unsigned
  * since there's nothing else in the delta application's context to
  * supply a path for error messages.)
  *
+ * The @a source stream will NOT be closed. The @a target stream will be
+ * closed when the window handler is given a null window to signal the
+ * end of the delta.
+ *
  * @note To avoid lifetime issues, @a error_info is copied into
  * @a pool or a subpool thereof.
  */
@@ -859,7 +863,7 @@ svn_txdelta_skip_svndiff_window(apr_file
  * @c apply_textdelta / @c apply_textdelta_stream and @c close_file
  * should not refer to a parent directory baton UNLESS the editor has
  * taken precautions to allocate it in a pool of the appropriate
- * lifetime (the @a dir_pool passed to @c open_directory and
+ * lifetime (the @a result_pool passed to @c open_directory and
  * @c add_directory definitely does not have the proper lifetime).
  * In general, it is recommended to simply avoid keeping a parent
  * directory baton in a file baton.
@@ -1285,24 +1289,47 @@ svn_delta_depth_filter_editor(const svn_
 /** Callback function type for svn_delta_path_driver().
  *
  * The handler of this callback is given the callback baton @a
- * callback_baton, @a path which is a relpath relative to the
+ * callback_baton, @a editor and @a edit_baton which represent the
+ * editor being driven, @a relpath which is a relpath relative to the
  * root of the edit, and the @a parent_baton which represents
- * path's parent directory as created by the editor passed to
- * svn_delta_path_driver().
+ * @a relpath's parent directory as created by the editor.
  *
- * If @a path represents a directory, the handler must return a @a
- * *dir_baton for @a path, generated from the same editor (so that the
- * driver can later close that directory).
- *
- * If, however, @a path represents a file, the handler should NOT
- * return any file batons.  It can close any opened or added files
- * immediately, or delay that close until the end of the edit when
- * svn_delta_path_driver() returns.
+ * If the handler deletes the node at @a relpath (and does not replace it
+ * with an added directory) it must set @a *dir_baton to null or leave
+ * it unchanged.
+ *
+ * If the handler opens (or adds) a directory at @a relpath, it must set
+ * @a *dir_baton to the directory baton for @a relpath, generated from
+ * the same editor. The driver will close the directory later.
+ *
+ * If the handler opens (or adds) a file at @a relpath, the handler must
+ * set @a *dir_baton to null or leave it unchanged.  The handler must
+ * either close the file immediately, or delay that close until the end
+ * of the edit when svn_delta_path_driver() returns.
  *
  * Finally, if @a parent_baton is @c NULL, then the root of the edit
  * is also one of the paths passed to svn_delta_path_driver().  The
  * handler of this callback must call the editor's open_root()
  * function and return the top-level root dir baton in @a *dir_baton.
+ *
+ * @since New in 1.12.
+ */
+typedef svn_error_t *(*svn_delta_path_driver_cb_func2_t)(
+  void **dir_baton,
+  const svn_delta_editor_t *editor,
+  void *edit_baton,
+  void *parent_baton,
+  void *callback_baton,
+  const char *relpath,
+  apr_pool_t *pool);
+
+/** Like #svn_delta_path_driver_cb_func2_t but without the @a editor and
+ * @a edit_baton parameters. The user must arrange for the editor to be
+ * passed through @a callback_baton (if required, which it usually is).
+ * And @a path could possibly have a '/' prefix instead of being a relpath;
+ * see the note on svn_delta_path_driver2().
+ *
+ * @deprecated Provided for backward compatibility with the 1.11 API.
  */
 typedef svn_error_t *(*svn_delta_path_driver_cb_func_t)(
   void **dir_baton,
@@ -1312,23 +1339,50 @@ typedef svn_error_t *(*svn_delta_path_dr
   apr_pool_t *pool);
 
 
-/** Drive @a editor (with its @a edit_baton) to visit each path in @a paths.
+/** Drive @a editor (with its @a edit_baton) to visit each path in @a relpaths.
+ *
  * As each path is hit as part of the editor drive, use
  * @a callback_func and @a callback_baton to allow the caller to handle
  * the portion of the editor drive related to that path.
  *
- * Each path in @a paths is a (const char *) relpath, relative
- * to the root path of the @a edit. The editor drive will be
- * performed in the same order as @a paths. The paths should be sorted
- * using something like svn_sort_compare_paths to ensure that a depth-first
- * pattern is observed for directory/file baton creation. If @a sort_paths
+ * Each path in @a relpaths is a (const char *) relpath, relative
+ * to the root path of the edit. The editor drive will be
+ * performed in the same order as @a relpaths. The paths should be sorted
+ * using something like svn_sort_compare_paths() to ensure that each
+ * directory in the depth-first walk is visited only once. If @a sort_paths
  * is set, the function will sort the paths for you. Some callers may need
  * further customization of the order (ie. libsvn_delta/compat.c).
  *
+ * If the first target path (after any requested sorting) is @c "" (the
+ * root of the edit), the callback function will be responsible for
+ * calling the editor's @c open_root method; otherwise, this function
+ * will call @c open_root.
+ *
  * Use @a scratch_pool for all necessary allocations.
  *
- * @since New in 1.8.
+ * @since New in 1.12.
+ */
+svn_error_t *
+svn_delta_path_driver3(const svn_delta_editor_t *editor,
+                       void *edit_baton,
+                       const apr_array_header_t *relpaths,
+                       svn_boolean_t sort_paths,
+                       svn_delta_path_driver_cb_func2_t callback_func,
+                       void *callback_baton,
+                       apr_pool_t *pool);
+
+/** Like svn_delta_path_driver3() but with a different callback function
+ * signature.
+ *
+ * Optionally, paths in @a paths could have a '/' prefix instead of being
+ * relpaths. If any of them do, then (since 1.12) ALL paths sent to the
+ * callback will have a '/' prefix.
+ *
+ * @deprecated Provided for backward compatibility with the 1.11 API.
+ * @since New in 1.8. Before 1.12, paths sent to the callback were the
+ * exact paths passed in @a paths.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_delta_path_driver2(const svn_delta_editor_t *editor,
                        void *edit_baton,
@@ -1358,6 +1412,80 @@ svn_delta_path_driver(const svn_delta_ed
                       void *callback_baton,
                       apr_pool_t *scratch_pool);
 
+
+/** A state object for the path driver that is obtained from
+ * svn_delta_path_driver_start() and driven by
+ * svn_delta_path_driver_step() and svn_delta_path_driver_finish().
+ *
+ * @since New in 1.12.
+ */
+typedef struct svn_delta_path_driver_state_t svn_delta_path_driver_state_t;
+
+/** Return a path driver object that can drive @a editor (with its
+ * @a edit_baton) to visit a series of paths.
+ *
+ * As each path is hit as part of the editor drive, the path driver will
+ * call @a callback_func and @a callback_baton to allow the caller to handle
+ * the portion of the editor drive related to that path.
+ *
+ * This will not call the editor's open_root method; for that, see
+ * svn_delta_path_driver_step().
+ *
+ * @since New in 1.12.
+ */
+svn_error_t *
+svn_delta_path_driver_start(svn_delta_path_driver_state_t **state_p,
+                            const svn_delta_editor_t *editor,
+                            void *edit_baton,
+                            svn_delta_path_driver_cb_func2_t callback_func,
+                            void *callback_baton,
+                            apr_pool_t *result_pool);
+
+/** Visit @a relpath.
+ *
+ * @a state is the object returned by svn_delta_path_driver_start().
+ *
+ * @a relpath is a relpath relative to the root path of the edit.
+ *
+ * This function uses the editor and the callback that were originally
+ * supplied to svn_delta_path_driver_start().
+ *
+ * This drives the editor in a depth-first order, closing and then opening
+ * directories if necessary to move from the last visited path to the new
+ * path, as required by the editor driving rules.
+ *
+ * This then calls the callback to allow the caller to handle
+ * the portion of the editor drive related to that path.
+ *
+ * If the first path to visit is @c "" (the root of the edit), the
+ * callback function will be responsible for calling the editor's
+ * @c open_root method; otherwise, this function will call @c open_root.
+ *
+ * The order of paths to visit should in general be sorted using something
+ * like svn_sort_compare_paths() to ensure that each directory in the
+ * depth-first walk is visited only once. Some editors may rely on such a
+ * restriction.
+ *
+ * @since New in 1.12.
+ */
+svn_error_t *
+svn_delta_path_driver_step(svn_delta_path_driver_state_t *state,
+                           const char *relpath,
+                           apr_pool_t *scratch_pool);
+
+/** Finish driving the editor.
+ *
+ * @a state is the object returned by svn_delta_path_driver_start().
+ *
+ * This drives the editor to close any open directories and then calls
+ * the editor's @c close_edit method.
+ *
+ * @since New in 1.12.
+ */
+svn_error_t *
+svn_delta_path_driver_finish(svn_delta_path_driver_state_t *state,
+                             apr_pool_t *scratch_pool);
+
 /** @} */
 
 

Modified: subversion/branches/multi-wc-format/subversion/include/svn_diff.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_diff.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_diff.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_diff.h Fri Jan 14 14:01:45 2022
@@ -711,7 +711,7 @@ svn_diff_file_output_unified(svn_stream_
  * @a conflict_latest to be displayed as conflict markers in the output.
  * If @a conflict_original, @a conflict_modified, @a conflict_latest and/or
  * @a conflict_separator is @c NULL, a default marker will be displayed.
- * @a conflict_style dictates how conflicts are displayed. 
+ * @a conflict_style dictates how conflicts are displayed.
  * Uses @a scratch_pool for temporary allocations.
  *
  * If not @c NULL, call @a cancel_func with @a cancel_baton once or multiple

Modified: subversion/branches/multi-wc-format/subversion/include/svn_dirent_uri.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_dirent_uri.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_dirent_uri.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_dirent_uri.h Fri Jan 14 14:01:45 2022
@@ -60,12 +60,14 @@
  * form, except:
  *
  *    - @c svn_dirent_canonicalize()
+ *    - @c svn_dirent_canonicalize_safe()
  *    - @c svn_dirent_is_canonical()
  *    - @c svn_dirent_internal_style()
  *    - @c svn_relpath_canonicalize()
+ *    - @c svn_relpath_canonicalize_safe()
  *    - @c svn_relpath_is_canonical()
- *    - @c svn_relpath__internal_style()
  *    - @c svn_uri_canonicalize()
+ *    - @c svn_uri_canonicalize_safe()
  *    - @c svn_uri_is_canonical()
  *
  * The Subversion codebase also recognizes some other classes of path:
@@ -144,17 +146,47 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-/** Convert @a dirent from the local style to the canonical internal style.
+/**
+ * Convert @a dirent from the local style to the canonical internal style.
  * "Local style" means native path separators and "." for the empty path.
  *
  * Allocate the result in @a result_pool.
  *
+ * @warning This function may call @c abort() if the @a dirent parameter
+ *          is not a valid local-style path.
+ *          Use svn_dirent_internal_style_safe() for tainted input.
+ *
  * @since New in 1.6.
  */
 const char *
 svn_dirent_internal_style(const char *dirent,
                           apr_pool_t *result_pool);
 
+/**
+ * Convert @a dirent from the local style to the canonical internal style
+ * and return it in @a *internal_style_dirent. "Local style" means native
+ * path separators and "." for the empty path.
+ *
+ * Similar to svn_dirent_internal_style() (which see), but returns an error
+ * if the @a dirent can not be canonicalized or of the result does not pass
+ * the svn_dirent_is_canonical() test.
+ *
+ * If the function fails and @a non_canonical_result is not @c NULL, the
+ * result of the failed canonicalization attempt (which may be @c NULL)
+ * will be returned in @a *non_canonical_result.
+ *
+ * Allocates the results in @a result_pool. Uses @a scratch_pool for
+ * temporary allocations.
+ *
+ * @since New in 1.12.
+ */
+svn_error_t *
+svn_dirent_internal_style_safe(const char **internal_style_dirent,
+                               const char **non_canonical_result,
+                               const char *dirent,
+                               apr_pool_t *result_pool,
+                               apr_pool_t *scratch_pool);
+
 /** Convert @a dirent from the internal style to the local style.
  * "Local style" means native path separators and "." for the empty path.
  * If the input is not canonical, the output may not be canonical.
@@ -167,18 +199,6 @@ const char *
 svn_dirent_local_style(const char *dirent,
                        apr_pool_t *result_pool);
 
-/** Convert @a relpath from the local style to the canonical internal style.
- * "Local style" means native path separators and "." for the empty path.
- *
- * Allocate the result in @a result_pool.
- *
- * @since New in 1.7.
- */
-const char *
-svn_relpath__internal_style(const char *relpath,
-                            apr_pool_t *result_pool);
-
-
 /** Join a base dirent (@a base) with a component (@a component).
  *
  * If either @a base or @a component is the empty string, then the other
@@ -453,7 +473,8 @@ svn_boolean_t
 svn_uri_is_root(const char *uri,
                 apr_size_t len);
 
-/** Return a new dirent like @a dirent, but transformed such that some types
+/**
+ * Return a new dirent like @a dirent, but transformed such that some types
  * of dirent specification redundancies are removed.
  *
  * This involves:
@@ -467,14 +488,43 @@ svn_uri_is_root(const char *uri,
  *
  * Allocate the result in @a result_pool.
  *
+ * @warning This function may call @c abort() if @a dirent can not be
+ *          canonicalized.
+ *          Use svn_dirent_canonicalize_safe() for tainted input.
+ *
  * @since New in 1.6.
  */
 const char *
 svn_dirent_canonicalize(const char *dirent,
                         apr_pool_t *result_pool);
 
+/**
+ * Return a new @a *canonical_dirent like @a dirent, but transformed such
+ * that some types of dirent specification redundancies are removed.
+ *
+ * Similar to svn_dirent_canonicalize() (which see), but returns an error
+ * if the @a dirent can not be canonicalized or of the result does not pass
+ * the svn_dirent_is_canonical() test.
+ *
+ * If the function fails and @a non_canonical_result is not @c NULL, the
+ * result of the failed canonicalization attempt (which may be @c NULL)
+ * will be returned in @a *non_canonical_result.
+ *
+ * Allocates the results in @a result_pool. Uses @a scratch_pool for
+ * temporary allocations.
+ *
+ * @since New in 1.12.
+ */
+svn_error_t *
+svn_dirent_canonicalize_safe(const char **canonical_dirent,
+                             const char **non_canonical_result,
+                             const char *dirent,
+                             apr_pool_t *result_pool,
+                             apr_pool_t *scratch_pool);
+
 
-/** Return a new relpath like @a relpath, but transformed such that some types
+/**
+ * Return a new relpath like @a relpath, but transformed such that some types
  * of relpath specification redundancies are removed.
  *
  * This involves:
@@ -486,14 +536,44 @@ svn_dirent_canonicalize(const char *dire
  *
  * Allocate the result in @a result_pool.
  *
+ * @warning This function may call @c abort() if @a relpath can not be
+ *          canonicalized.
+ *          Use svn_relpath_canonicalize_safe() for tainted input.
+ *
  * @since New in 1.7.
  */
 const char *
 svn_relpath_canonicalize(const char *relpath,
                          apr_pool_t *result_pool);
 
+/**
+ * Return a new @a *canonical_relpath like @a relpath, but transformed such
+ * that some types of relpath specification redundancies are removed.
+ *
+ * Similar to svn_relpath_canonicalize() (which see), but returns an error
+ * if the @a relpath can not be canonicalized or of the result does not
+ * pass the svn_relpath_is_canonical() test.
+ *
+ * If the function fails and @a non_canonical_result is not @c NULL, the
+ * result of the failed canonicalization attempt (which may be @c NULL)
+ * will be returned in @a *non_canonical_result.
+ *
+ * Allocates the results in @a result_pool. Uses @a scratch_pool for
+ * temporary allocations.
+ *
+ * @since New in 1.12.
+ */
+
+svn_error_t *
+svn_relpath_canonicalize_safe(const char **canonical_relpath,
+                              const char **non_canonical_result,
+                              const char *relpath,
+                              apr_pool_t *result_pool,
+                              apr_pool_t *scratch_pool);
 
-/** Return a new uri like @a uri, but transformed such that some types
+
+/**
+ * Return a new uri like @a uri, but transformed such that some types
  * of uri specification redundancies are removed.
  *
  * This involves:
@@ -510,12 +590,41 @@ svn_relpath_canonicalize(const char *rel
  *
  * Allocate the result in @a result_pool.
  *
- * @since New in 1.7.
+ * @warning This function may call @c abort() if @a uri can not be
+ *          canonicalized.
+ *          Use svn_uri_canonicalize_safe() for tainted input.
+ *
+  * @since New in 1.7.
  */
 const char *
 svn_uri_canonicalize(const char *uri,
                      apr_pool_t *result_pool);
 
+/**
+ *  Return a new @a *canonical_uri like @a uri, but transformed such that
+ * some types of uri specification redundancies are removed.
+ *
+ * Similar to svn_uri_canonicalize() (which see), but returns an error if
+ * the @a uri can not be canonicalized or of the result does not pass the
+ * svn_uri_is_canonical() test.
+ *
+ * If the function fails and @a non_canonical_result is not @c NULL, the
+ * result of the failed canonicalization attempt (which may be @c NULL)
+ * will be returned in @a *non_canonical_result.
+ *
+ * Allocates the results in @a result_pool. Uses @a scratch_pool for
+ * temporary allocations.
+ *
+ * @since New in 1.12.
+ */
+svn_error_t *
+svn_uri_canonicalize_safe(const char **canonical_uri,
+                          const char **non_canonical_result,
+                          const char *uri,
+                          apr_pool_t *result_pool,
+                          apr_pool_t *scratch_pool);
+
+
 /** Return @c TRUE iff @a dirent is canonical.
  *
  * Use @a scratch_pool for temporary allocations.

Modified: subversion/branches/multi-wc-format/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_error_codes.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_error_codes.h Fri Jan 14 14:01:45 2022
@@ -888,6 +888,21 @@ SVN_ERROR_START
              SVN_ERR_FS_CATEGORY_START + 67,
              "Content checksums supposedly match but content does not.")
 
+  /** @since New in 1.13. */
+  SVN_ERRDEF(SVN_ERR_FS_UNRECOGNIZED_IOCTL_CODE,
+             SVN_ERR_FS_CATEGORY_START + 68,
+             "Unrecognized filesystem I/O control code")
+
+  /** @since New in 1.14. */
+  SVN_ERRDEF(SVN_ERR_FS_REP_SHARING_NOT_ALLOWED,
+             SVN_ERR_FS_CATEGORY_START + 69,
+             "Rep-sharing is not allowed.")
+
+  /** @since New in 1.14. */
+  SVN_ERRDEF(SVN_ERR_FS_REP_SHARING_NOT_SUPPORTED,
+             SVN_ERR_FS_CATEGORY_START + 70,
+             "Rep-sharing is not supported.")
+
   /* repos errors */
 
   SVN_ERRDEF(SVN_ERR_REPOS_LOCKED,
@@ -1482,6 +1497,11 @@ SVN_ERROR_START
              SVN_ERR_MISC_CATEGORY_START + 46,
              "LZ4 decompression failed")
 
+  /** @since New in 1.12.  */
+  SVN_ERRDEF(SVN_ERR_CANONICALIZATION_FAILED,
+             SVN_ERR_MISC_CATEGORY_START + 47,
+             "Could not canonicalize path or URI")
+
   /* command-line client errors */
 
   SVN_ERRDEF(SVN_ERR_CL_ARG_PARSING_ERROR,
@@ -1769,7 +1789,7 @@ SVN_ERROR_START
 
   SVN_ERRDEF(SVN_ERR_X509_CERT_VERIFY_FAILED,
              SVN_ERR_X509_CATEGORY_START + 19,
-             "Certficate verification failed")
+             "Certificate verification failed")
 
 SVN_ERROR_END
 

Modified: subversion/branches/multi-wc-format/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_fs.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_fs.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_fs.h Fri Jan 14 14:01:45 2022
@@ -394,7 +394,7 @@ typedef enum svn_fs_upgrade_notify_actio
   svn_fs_upgrade_format_bumped
 } svn_fs_upgrade_notify_action_t;
 
-/** The type of an upgrade notification function.  @a number is specifc
+/** The type of an upgrade notification function.  @a number is specific
  * to @a action (see #svn_fs_upgrade_notify_action_t); @a action is the
  * type of action being performed.  @a baton is the corresponding baton
  * for the notification function, and @a scratch_pool can be used for
@@ -3503,6 +3503,54 @@ svn_fs_info_dup(const void *info,
                 apr_pool_t *result_pool,
                 apr_pool_t *scratch_pool);
 
+/**
+ * A structure specifying the filesystem-specific input/output operation.
+ *
+ * @see svn_fs_ioctl()
+ *
+ * @since New in 1.13.
+ */
+typedef struct svn_fs_ioctl_code_t
+{
+  const char *fs_type;
+  int code;
+} svn_fs_ioctl_code_t;
+
+/**
+ * A convenience macro to declare #svn_fs_ioctl_code_t codes.
+ *
+ * @since New in 1.13.
+ */
+#define SVN_FS_DECLARE_IOCTL_CODE(name, fs_type, code) \
+  static const svn_fs_ioctl_code_t name = { fs_type, code }
+
+/**
+ * Issue a filesystem-specific input/output operation defined by @a ctlcode
+ * (usually, a low-level operation which cannot be expressed by other
+ * filesystem APIs).  If @a fs is @c NULL, issue a global operation.
+ * If @a fs is not @c NULL, issue an operation that is specific to this
+ * filesystem instance.
+ *
+ * If the filesystem cannot handle this ioctl code, return the
+ * #SVN_ERR_FS_UNRECOGNIZED_IOCTL_CODE error.
+ *
+ * Allocate the result in @a result_pool, use @a scratch_pool for temporary
+ * allocations.
+ *
+ * @see #svn_fs_ioctl_code_t
+ *
+ * @since New in 1.13.
+ */
+svn_error_t *
+svn_fs_ioctl(svn_fs_t *fs,
+             svn_fs_ioctl_code_t ctlcode,
+             void *input,
+             void **output_p,
+             svn_cancel_func_t cancel_func,
+             void *cancel_baton,
+             apr_pool_t *result_pool,
+             apr_pool_t *scratch_pool);
+
 /** @} */
 
 #ifdef __cplusplus

Modified: subversion/branches/multi-wc-format/subversion/include/svn_opt.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_opt.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_opt.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_opt.h Fri Jan 14 14:01:45 2022
@@ -27,6 +27,8 @@
 #ifndef SVN_OPT_H
 #define SVN_OPT_H
 
+#include "svn_opt_impl.h"
+
 #include <apr.h>
 #include <apr_pools.h>
 #include <apr_getopt.h>
@@ -443,43 +445,7 @@ svn_opt_subcommand_help(const char *subc
 
 
 /* Parsing revision and date options. */
-
-/**
- * Various ways of specifying revisions.
- *
- * @note
- * In contexts where local mods are relevant, the `working' kind
- * refers to the uncommitted "working" revision, which may be modified
- * with respect to its base revision.  In other contexts, `working'
- * should behave the same as `committed' or `current'.
- */
-enum svn_opt_revision_kind {
-  /** No revision information given. */
-  svn_opt_revision_unspecified,
-
-  /** revision given as number */
-  svn_opt_revision_number,
-
-  /** revision given as date */
-  svn_opt_revision_date,
-
-  /** rev of most recent change */
-  svn_opt_revision_committed,
-
-  /** (rev of most recent change) - 1 */
-  svn_opt_revision_previous,
-
-  /** .svn/entries current revision */
-  svn_opt_revision_base,
-
-  /** current, plus local mods */
-  svn_opt_revision_working,
-
-  /** repository youngest */
-  svn_opt_revision_head
-
-  /* please update svn_opt__revision_to_string() when extending this enum */
-};
+/* NOTE: svn_opt_revision_kind is defined in svn_opt_impl.h */
 
 /**
  * A revision value, which can be specified as a number or a date.

Modified: subversion/branches/multi-wc-format/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_ra.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_ra.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_ra.h Fri Jan 14 14:01:45 2022
@@ -65,7 +65,7 @@ svn_ra_version(void);
  * @a close_baton as appropriate.
  *
  * @a path is relative to the "root" of the session, defined by the
- * @a repos_URL passed to svn_ra_open4() vtable call.
+ * @a repos_URL passed to svn_ra_open5() vtable call.
  *
  * @a name is the name of the property to fetch. If the property is present,
  * then it is returned in @a value. Otherwise, @a *value is set to @c NULL.
@@ -229,7 +229,7 @@ typedef void (*svn_ra_progress_notify_fu
  *
  * @a revision is the target revision number of the received replay report.
  *
- * @a editor and @a edit_baton should provided by the callback implementation.
+ * @a *editor and @a *edit_baton should provided by the callback implementation.
  *
  * @a replay_baton is the baton as originally passed to replay_range.
  *
@@ -253,7 +253,7 @@ typedef svn_error_t *(*svn_ra_replay_rev
  *
  * @a revision is the target revision number of the received replay report.
  *
- * @a editor and @a edit_baton should provided by the callback implementation.
+ * @a editor and @a edit_baton are the values provided by the REVSTART callback.
  *
  * @a replay_baton is the baton as originally passed to replay_range.
  *
@@ -273,7 +273,7 @@ typedef svn_error_t *(*svn_ra_replay_rev
 
 /**
  * Callback function that checks if an ra_svn tunnel called
- * @a tunnel_name is handled by the callbakcs or the default
+ * @a tunnel_name is handled by the callbacks or the default
  * implementation.
  *
  * @a tunnel_baton is the baton as originally passed to ra_open.
@@ -369,7 +369,7 @@ typedef struct svn_ra_reporter3_t
    * implementor should assume the directory has no entries or props.
    *
    * This will *override* any previous set_path() calls made on parent
-   * paths.  @a path is relative to the URL specified in svn_ra_open4().
+   * paths.  @a path is relative to the URL specified in svn_ra_open5().
    *
    * If @a lock_token is non-NULL, it is the lock token for @a path in the WC.
    *
@@ -520,7 +520,7 @@ typedef struct svn_ra_reporter_t
 /** A collection of callbacks implemented by libsvn_client which allows
  * an RA layer to "pull" information from the client application, or
  * possibly store information.  libsvn_client passes this vtable to
- * svn_ra_open4().
+ * svn_ra_open5().
  *
  * Each routine takes a @a callback_baton originally provided with the
  * vtable.
@@ -710,6 +710,14 @@ typedef struct svn_ra_session_t svn_ra_s
  * within the new repository root URL that @a repos_URL pointed to within
  * the old repository root URL.
  *
+ * If @a redirect_url is not NULL and a @corrected_url is returned, then
+ * @a redirect_url contains a non-canonicalized version of @a corrected_url,
+ * as communicated in the network protocol used by the RA provider.
+ * THe @a redirect_url should be used for to detect redirection loops.
+ * Canonicalization may change the protocol-level URL in a way that
+ * makes detection of redirect loops impossible in some cases since URLs which
+ * are different at the protocol layer could map to the same canonicalized URL.
+ *
  * Return @c SVN_ERR_RA_UUID_MISMATCH if @a uuid is non-NULL and not equal
  * to the UUID of the repository at @c repos_URL.
  *
@@ -728,8 +736,26 @@ typedef struct svn_ra_session_t svn_ra_s
  *
  * @see svn_client_open_ra_session().
  *
+ * @since New in 1.14.
+ */
+svn_error_t *
+svn_ra_open5(svn_ra_session_t **session_p,
+             const char **corrected_url,
+             const char **redirect_url,
+             const char *repos_URL,
+             const char *uuid,
+             const svn_ra_callbacks2_t *callbacks,
+             void *callback_baton,
+             apr_hash_t *config,
+             apr_pool_t *pool);
+
+/** Similar to svn_ra_open5(), but with @a redirect_url always passed
+ * as @c NULL.
+ *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.13 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_open4(svn_ra_session_t **session_p,
              const char **corrected_url,
@@ -2218,7 +2244,7 @@ svn_ra_has_capability(svn_ra_session_t *
 
 /**
  * The capability of a server to automatically remove transaction
- * properties prefixed with SVN_PROP_EPHEMERAL_PREFIX.
+ * properties prefixed with #SVN_PROP_TXN_PREFIX.
  *
  * @since New in 1.8.
  */

Modified: subversion/branches/multi-wc-format/subversion/include/svn_ra_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_ra_svn.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_ra_svn.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_ra_svn.h Fri Jan 14 14:01:45 2022
@@ -201,7 +201,7 @@ typedef svn_error_t *(*svn_ra_svn_edit_c
  * If @a max_out is not 0, error out and close the connection whenever more
  * than @a max_out bytes have been send as response to some command.
  *
- * @note The limits enforced may vary slightly by +/- the I/O buffer size. 
+ * @note The limits enforced may vary slightly by +/- the I/O buffer size.
  *
  * @note If @a out_stream is an wrapped apr_file_t* the backing file will be
  * used for some operations.

Modified: subversion/branches/multi-wc-format/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_repos.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_repos.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_repos.h Fri Jan 14 14:01:45 2022
@@ -679,7 +679,7 @@ svn_repos_fs_type(svn_repos_t *repos,
  * The optional @a cancel_func callback will be invoked with
  * @a cancel_baton as usual to allow the user to preempt this potentially
  * lengthy operation.
- * 
+ *
  * Use @a scratch_pool for temporary allocations.
  *
  * @since New in 1.9.
@@ -1595,6 +1595,10 @@ svn_repos_get_commit_editor5(const svn_d
  * #SVN_PROP_REVISION_AUTHOR and #SVN_PROP_REVISION_LOG properties,
  * respectively.  @a user and @a log_msg may both be @c NULL.
  *
+ * @note The @a repos_url parameter has been renamed for clarity to
+ * @a repos_url_decoded in svn_repos_get_commit_editor5(), but remains
+ * functionally the same.
+ *
  * @since New in 1.4.
  *
  * @deprecated Provided for backward compatibility with the 1.4 API.
@@ -1960,7 +1964,7 @@ svn_repos_node_location_segments(svn_rep
  *       @a copyfrom_known is always @c TRUE.
  *
  * @note To allow for extending this structure in future releases,
- * always use svn_repos_path_change_create() to allocate the stucture.
+ * always use svn_repos_path_change_create() to allocate the structure.
  *
  * @see svn_fs_path_change3_t
  *
@@ -2017,7 +2021,7 @@ typedef svn_error_t *(*svn_repos_path_ch
  * A structure to represent all the information about a particular log entry.
  *
  * @note To allow for extending this structure in future releases,
- * always use svn_repos_log_entry_create() to allocate the stucture.
+ * always use svn_repos_log_entry_create() to allocate the structure.
  *
  * @since New in 1.10.
  */
@@ -2155,7 +2159,7 @@ typedef svn_error_t *(*svn_repos_log_ent
  * (i.e. retrieve none if the array is empty).
  *
  * If any invocation of @a revision_receiver or @a path_change_receiver
- * returnn an error, return that error immediately and without wrapping it.
+ * return an error, return that error immediately and without wrapping it.
  *
  * If @a start or @a end is a non-existent revision, return the error
  * #SVN_ERR_FS_NO_SUCH_REVISION, without ever invoking @a revision_receiver.
@@ -3360,7 +3364,7 @@ svn_repos_dump_fs4(svn_repos_t *repos,
                    apr_pool_t *pool);
 
 /**
- * Similar to svn_repos_dump_fs4(), but with @a include_revprops and 
+ * Similar to svn_repos_dump_fs4(), but with @a include_revprops and
  * @a include_changes both set to @c TRUE and @a filter_func and
  * @a filter_baton set to @c NULL.
  *
@@ -4147,6 +4151,19 @@ svn_error_t *
 svn_repos_authz_initialize(apr_pool_t *pool);
 
 /**
+ * Callback for reporting authz file parsing warnings.
+ *
+ * The implementation may use @a scratch_pool for temporary
+ * allocations but should not assume that the lifetime of that pool
+ * persists past the callback invocation.
+ *
+ * The implementation @e must @e not clear @a error.
+ */
+typedef void (*svn_repos_authz_warning_func_t)(void *baton,
+                                               const svn_error_t *error,
+                                               apr_pool_t *scratch_pool);
+
+/**
  * Read authz configuration data from @a path (a dirent, an absolute file url
  * or a registry path) into @a *authz_p, allocated in @a pool.
  *
@@ -4164,8 +4181,31 @@ svn_repos_authz_initialize(apr_pool_t *p
  * repository instance.  Otherwise, set it to NULL and the repositories will
  * be opened as needed.
  *
+ * If the @a warning_func callback is not @c NULL, it is called
+ * (with @a warning_baton) to report non-fatal warnings emitted by
+ * the parser.
+ *
+ * @since New in 1.12.
+ */
+svn_error_t *
+svn_repos_authz_read4(svn_authz_t **authz_p,
+                      const char *path,
+                      const char *groups_path,
+                      svn_boolean_t must_exist,
+                      svn_repos_t *repos_hint,
+                      svn_repos_authz_warning_func_t warning_func,
+                      void *warning_baton,
+                      apr_pool_t *result_pool,
+                      apr_pool_t *scratch_pool);
+
+/**
+ * Similar to svn_repos_authz_read3(), but with @a warning_func and
+ * @a warning_baton set to @c NULL.
+ *
  * @since New in 1.10.
+ * @deprecated Provided for backward compatibility with the 1.11 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_repos_authz_read3(svn_authz_t **authz_p,
                       const char *path,
@@ -4206,12 +4246,35 @@ svn_repos_authz_read(svn_authz_t **authz
 
 /**
  * Read authz configuration data from @a stream into @a *authz_p,
- * allocated in @a pool.
+ * allocated in @a result_pool.
  *
  * If @a groups_stream is set, use the global groups parsed from it.
  *
+ * If the @a warning_func callback is not @c NULL, it is called
+ * (with @a warning_baton) to report non-fatal warnings emitted by
+ * the parser.
+ *
+ * Uses @a scratch_pool for temporary aloocations.
+ *
+ * @since New in 1.12.
+ */
+svn_error_t *
+svn_repos_authz_parse2(svn_authz_t **authz_p,
+                       svn_stream_t *stream,
+                       svn_stream_t *groups_stream,
+                       svn_repos_authz_warning_func_t warning_func,
+                       void *warning_baton,
+                       apr_pool_t *result_pool,
+                       apr_pool_t *scratch_pool);
+
+/**
+ * Similar to svn_repos_authz_parse2(), but with @a warning_func and
+ * @a warning_baton set to @c NULL.
+ *
  * @since New in 1.8.
+ * @deprecated Provided for backward compatibility with the 1.11 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_repos_authz_parse(svn_authz_t **authz_p,
                       svn_stream_t *stream,

Modified: subversion/branches/multi-wc-format/subversion/include/svn_types.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_types.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_types.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_types.h Fri Jan 14 14:01:45 2022
@@ -27,6 +27,8 @@
 #ifndef SVN_TYPES_H
 #define SVN_TYPES_H
 
+#include "svn_types_impl.h"
+
 /* ### this should go away, but it causes too much breakage right now */
 #include <stdlib.h>
 #include <limits.h> /* for ULONG_MAX */
@@ -303,28 +305,7 @@ apr_hash_this_val(apr_hash_index_t *hi);
 
 
 
-/** The various types of nodes in the Subversion filesystem. */
-typedef enum svn_node_kind_t
-{
-  /** absent */
-  svn_node_none,
-
-  /** regular file */
-  svn_node_file,
-
-  /** directory */
-  svn_node_dir,
-
-  /** something's here, but we don't know what */
-  svn_node_unknown,
-
-  /**
-   * symbolic link
-   * @note This value is not currently used by the public API.
-   * @since New in 1.8.
-   */
-  svn_node_symlink
-} svn_node_kind_t;
+/* NOTE: svn_node_kind_t is defined in svn_types_impl.h */
 
 /** Return a constant string expressing @a kind as an English word, e.g.,
  * "file", "dir", etc.  The string is not localized, as it may be used for
@@ -346,23 +327,7 @@ svn_node_kind_t
 svn_node_kind_from_word(const char *word);
 
 
-/** Generic three-state property to represent an unknown value for values
- * that are just like booleans.  The values have been set deliberately to
- * make tristates disjoint from #svn_boolean_t.
- *
- * @note It is unsafe to use apr_pcalloc() to allocate these, since '0' is
- * not a valid value.
- *
- * @since New in 1.7. */
-typedef enum svn_tristate_t
-{
-  /** state known to be false (the constant does not evaulate to false) */
-  svn_tristate_false = 2,
-  /** state known to be true */
-  svn_tristate_true,
-  /** state could be true or false */
-  svn_tristate_unknown
-} svn_tristate_t;
+/* NOTE: svn_tristate_t is defined in svn_types_impl.h */
 
 /** Return a constant string "true", "false" or NULL representing the value of
  * @a tristate.
@@ -422,15 +387,11 @@ svn_tristate__from_word(const char * wor
 
 
 
-/** A revision number. */
-typedef long int svn_revnum_t;
+/* NOTE: svn_revnum_t and SVN_INVALID_REVNUM are defined in svn_types_impl.h */
 
 /** Valid revision numbers begin at 0 */
 #define SVN_IS_VALID_REVNUM(n) ((n) >= 0)
 
-/** The 'official' invalid revision num */
-#define SVN_INVALID_REVNUM ((svn_revnum_t) -1)
-
 /** Not really invalid...just unimportant -- one day, this can be its
  * own unique value, for now, just make it the same as
  * #SVN_INVALID_REVNUM.
@@ -494,55 +455,7 @@ enum svn_recurse_kind
   svn_recursive
 };
 
-/** The concept of depth for directories.
- *
- * @note This is similar to, but not exactly the same as, the WebDAV
- * and LDAP concepts of depth.
- *
- * @since New in 1.5.
- */
-typedef enum svn_depth_t
-{
-  /* The order of these depths is important: the higher the number,
-     the deeper it descends.  This allows us to compare two depths
-     numerically to decide which should govern. */
-
-  /** Depth undetermined or ignored.  In some contexts, this means the
-      client should choose an appropriate default depth.  The server
-      will generally treat it as #svn_depth_infinity. */
-  svn_depth_unknown    = -2,
-
-  /** Exclude (i.e., don't descend into) directory D.
-      @note In Subversion 1.5, svn_depth_exclude is *not* supported
-      anywhere in the client-side (libsvn_wc/libsvn_client/etc) code;
-      it is only supported as an argument to set_path functions in the
-      ra and repos reporters.  (This will enable future versions of
-      Subversion to run updates, etc, against 1.5 servers with proper
-      svn_depth_exclude behavior, once we get a chance to implement
-      client-side support for svn_depth_exclude.)
-  */
-  svn_depth_exclude    = -1,
-
-  /** Just the named directory D, no entries.  Updates will not pull in
-      any files or subdirectories not already present. */
-  svn_depth_empty      =  0,
-
-  /** D + its file children, but not subdirs.  Updates will pull in any
-      files not already present, but not subdirectories. */
-  svn_depth_files      =  1,
-
-  /** D + immediate children (D and its entries).  Updates will pull in
-      any files or subdirectories not already present; those
-      subdirectories' this_dir entries will have depth-empty. */
-  svn_depth_immediates =  2,
-
-  /** D + all descendants (full recursion from D).  Updates will pull
-      in any files or subdirectories not already present; those
-      subdirectories' this_dir entries will have depth-infinity.
-      Equivalent to the pre-1.5 default update behavior. */
-  svn_depth_infinity   =  3
-
-} svn_depth_t;
+/* NOTE: svn_depth_t is defined in svn_types_impl.h */
 
 /** Return a constant string expressing @a depth as an English word,
  * e.g., "infinity", "immediates", etc.  The string is not localized,
@@ -643,7 +556,7 @@ svn_depth_from_word(const char *word);
 /** A general subversion directory entry.
  *
  * @note To allow for extending the #svn_dirent_t structure in future
- * releases, always use svn_dirent_create() to allocate the stucture.
+ * releases, always use svn_dirent_create() to allocate the structure.
  *
  * @since New in 1.6.
  */

Modified: subversion/branches/multi-wc-format/subversion/include/svn_version.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_version.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_version.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_version.h Fri Jan 14 14:01:45 2022
@@ -61,7 +61,7 @@ extern "C" {
  * Modify when new functionality is added or new interfaces are
  * defined, but all changes are backward compatible.
  */
-#define SVN_VER_MINOR      12
+#define SVN_VER_MINOR      15
 
 /**
  * Patch number.
@@ -346,7 +346,7 @@ svn_version_ext_build_time(const svn_ver
  * @return The canonical host triplet (arch-vendor-osname) of the
  * system where libsvn_subr was compiled.
  *
- * @note On Unix-like systems (includng Mac OS X), this string is the
+ * @note On Unix-like systems (including Mac OS X), this string is the
  * same as the output of the config.guess script.
  *
  * @since New in 1.8.

Modified: subversion/branches/multi-wc-format/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_wc.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_wc.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_wc.h Fri Jan 14 14:01:45 2022
@@ -1303,7 +1303,11 @@ typedef enum svn_wc_notify_action_t
 
   /** Done searching the repository for details about a conflict.
    * @since New in 1.10. */
-  svn_wc_notify_end_search_tree_conflict_details
+  svn_wc_notify_end_search_tree_conflict_details,
+
+  /** A warning, specified in #svn_wc_notify_t.err.
+   * @since New in 1.15. */
+  svn_wc_notify_warning,
 
 } svn_wc_notify_action_t;
 
@@ -2220,7 +2224,7 @@ typedef struct svn_wc_conflict_result_t
   svn_boolean_t save_merged;
 
   /** If not NULL, this is the new merged property, used when choosing
-   * #svn_wc_conflict_choose_merged. This value is prefered over using
+   * #svn_wc_conflict_choose_merged. This value is preferred over using
    * merged_file.
    *
    * @since New in 1.9.
@@ -3291,19 +3295,19 @@ typedef struct svn_wc_info_t
 
   /**
    * The format of the working copy.
-   * @since New in 1.12.
+   * @since New in 1.15.
    */
   int wc_format;
 
   /**
    * The oldest supporter working copy format.
-   * @since New in 1.12.
+   * @since New in 1.15.
    */
   int wc_format_min;
 
   /**
    * The newest supporter working copy format.
-   * @since New in 1.12.
+   * @since New in 1.15.
    */
   int wc_format_max;
 } svn_wc_info_t;
@@ -3566,7 +3570,7 @@ svn_wc_mark_missing_deleted(const char *
  * Use @a scratch_pool for temporary allocations.
  *
  * @since New in 1.7.
- * @deprecated Provided for backwards compatibility with the 1.11 API.
+ * @deprecated Provided for backwards compatibility with the 1.14 API.
  */
 SVN_DEPRECATED
 svn_error_t *
@@ -5252,7 +5256,7 @@ svn_wc_committed_queue_create(apr_pool_t
  * turns the node and its implied descendants as the new unmodified state at
  * the new specified revision. Unless @a recurse is TRUE, changes on
  * descendants are not committed as changes directly. In this case they should
- * be queueud as their own changes.
+ * be queued as their own changes.
  *
  * If @a remove_lock is @c TRUE, any entryprops related to a repository
  * lock will be removed.
@@ -7470,7 +7474,7 @@ typedef svn_error_t * (*svn_wc_upgrade_g
  * with @a repos_info_baton to provide the missing information.
  *
  * @since New in 1.7
- * @deprecated Provided for backward compatibility with the 1.11 API.
+ * @deprecated Provided for backward compatibility with the 1.14 API.
  */
 SVN_DEPRECATED
 svn_error_t *

Modified: subversion/branches/multi-wc-format/subversion/include/svn_x509.h
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/include/svn_x509.h?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/include/svn_x509.h (original)
+++ subversion/branches/multi-wc-format/subversion/include/svn_x509.h Fri Jan 14 14:01:45 2022
@@ -54,7 +54,7 @@ extern "C" {
 typedef struct svn_x509_certinfo_t svn_x509_certinfo_t;
 
 /**
- * Representation of an atttribute in an X.509 name (e.g. Subject or Issuer)
+ * Representation of an attribute in an X.509 name (e.g. Subject or Issuer)
  *
  * @since New in 1.9.
  */

Modified: subversion/branches/multi-wc-format/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c (original)
+++ subversion/branches/multi-wc-format/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c Fri Jan 14 14:01:45 2022
@@ -120,10 +120,10 @@ password_get_gnome_keyring(svn_boolean_t
   gchar *gpassword;
 
   *done = FALSE;
-  
+
   if (!available_collection(non_interactive, pool))
     return SVN_NO_ERROR;
-  
+
   gpassword = secret_password_lookup_sync(SECRET_SCHEMA_COMPAT_NETWORK, NULL,
                                           &gerror,
                                           "domain", realmstring,
@@ -140,7 +140,7 @@ password_get_gnome_keyring(svn_boolean_t
       g_free(gpassword);
       *done = TRUE;
     }
-  
+
   return SVN_NO_ERROR;
 }
 
@@ -158,7 +158,7 @@ password_set_gnome_keyring(svn_boolean_t
 {
   GError *gerror = NULL;
   gboolean gstatus;
-  
+
   *done = FALSE;
 
   if (!available_collection(non_interactive, pool))
@@ -182,7 +182,7 @@ password_set_gnome_keyring(svn_boolean_t
     {
       *done = TRUE;
     }
-  
+
   return SVN_NO_ERROR;
 }
 

Modified: subversion/branches/multi-wc-format/subversion/libsvn_auth_kwallet/kwallet.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/libsvn_auth_kwallet/kwallet.cpp?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/libsvn_auth_kwallet/kwallet.cpp (original)
+++ subversion/branches/multi-wc-format/subversion/libsvn_auth_kwallet/kwallet.cpp Fri Jan 14 14:01:45 2022
@@ -227,10 +227,10 @@ kwallet_password_get(svn_boolean_t *done
   KLocalizedString::setApplicationDomain("subversion"); /* translation domain */
 
   /* componentName appears in KDE GUI prompts */
-  KAboutData aboutData(QStringLiteral("subversion"),     /* componentName */
+  KAboutData aboutData(QString("subversion"),            /* componentName */
                        i18n(get_application_name(parameters,
                                                  pool)), /* displayName */
-                       QStringLiteral(SVN_VER_NUMBER));
+                       QString(SVN_VER_NUMBER));
   KAboutData::setApplicationData(aboutData);
 #else
   KCmdLineArgs::init(q_argc, q_argv,
@@ -309,10 +309,10 @@ kwallet_password_set(svn_boolean_t *done
   KLocalizedString::setApplicationDomain("subversion"); /* translation domain */
 
   /* componentName appears in KDE GUI prompts */
-  KAboutData aboutData(QStringLiteral("subversion"),     /* componentName */
+  KAboutData aboutData(QString("subversion"),            /* componentName */
                        i18n(get_application_name(parameters,
                                                  pool)), /* displayName */
-                       QStringLiteral(SVN_VER_NUMBER));
+                       QString(SVN_VER_NUMBER));
   KAboutData::setApplicationData(aboutData);
 #else
   KCmdLineArgs::init(q_argc, q_argv,

Modified: subversion/branches/multi-wc-format/subversion/libsvn_client/add.c
URL: http://svn.apache.org/viewvc/subversion/branches/multi-wc-format/subversion/libsvn_client/add.c?rev=1897034&r1=1897033&r2=1897034&view=diff
==============================================================================
--- subversion/branches/multi-wc-format/subversion/libsvn_client/add.c (original)
+++ subversion/branches/multi-wc-format/subversion/libsvn_client/add.c Fri Jan 14 14:01:45 2022
@@ -647,7 +647,7 @@ svn_client__get_all_auto_props(apr_hash_
 
 
   /* Are "traditional" auto-props enabled?  If so grab them from the
-    config.  This is our starting set auto-props, which may be overriden
+    config.  This is our starting set auto-props, which may be overridden
     by svn:auto-props. */
   SVN_ERR(svn_config_get_bool(cfg, &use_autoprops,
                               SVN_CONFIG_SECTION_MISCELLANY,
@@ -983,12 +983,13 @@ svn_client_add5(const char *path,
 
 static svn_error_t *
 path_driver_cb_func(void **dir_baton,
+                    const svn_delta_editor_t *editor,
+                    void *edit_baton,
                     void *parent_baton,
                     void *callback_baton,
                     const char *path,
                     apr_pool_t *pool)
 {
-  const svn_delta_editor_t *editor = callback_baton;
   SVN_ERR(svn_path_check_valid(path, pool));
   return editor->add_directory(path, parent_baton, NULL,
                                SVN_INVALID_REVNUM, pool, dir_baton);
@@ -1177,8 +1178,8 @@ mkdir_urls(const apr_array_header_t *url
 
   /* Call the path-based editor driver. */
   err = svn_error_trace(
-        svn_delta_path_driver2(editor, edit_baton, targets, TRUE,
-                               path_driver_cb_func, (void *)editor, pool));
+        svn_delta_path_driver3(editor, edit_baton, targets, TRUE,
+                               path_driver_cb_func, NULL, pool));
 
   if (err)
     {