You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2018/11/13 07:49:08 UTC

svn commit: r1846488 [4/23] - in /subversion/branches/mod-dav-svn-expressions: ./ build/ build/ac-macros/ build/generator/ build/generator/swig/ build/generator/templates/ build/generator/util/ build/win32/ contrib/client-side/ contrib/client-side/svn_...

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_client.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_client.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_client.h Tue Nov 13 07:49:04 2018
@@ -500,7 +500,7 @@ typedef struct svn_client_commit_item3_t
    * contents in @c incoming_prop_changes->pool, so that it has the
    * same lifetime as this data structure.
    *
-   * See http://subversion.tigris.org/issues/show_bug.cgi?id=806 for a
+   * See https://issues.apache.org/jira/browse/SVN-806 for a
    * description of what would happen if the post-commit process
    * didn't group these changes together with all other changes to the
    * item.
@@ -520,7 +520,7 @@ typedef struct svn_client_commit_item3_t
 
   /**
    * When processing the commit this contains the relative path for
-   * the commit session. #NULL until the commit item is preprocessed.
+   * the commit session. NULL until the commit item is preprocessed.
    * @since New in 1.7.
    */
   const char *session_relpath;
@@ -1547,6 +1547,38 @@ svn_client_switch(svn_revnum_t *result_r
 
 /** @} */
 
+/** Callback for svn_client__layout_list()
+ *
+ * @warning EXPERIMENTAL.
+ */
+typedef svn_error_t * (*svn_client__layout_func_t)(
+                            void *layout_baton,
+                            const char *local_abspath,
+                            const char *repos_root_url,
+                            svn_boolean_t not_present,
+                            svn_boolean_t url_changed,
+                            const char *url,
+                            svn_boolean_t revision_changed,
+                            svn_revnum_t revision,
+                            svn_boolean_t depth_changed,
+                            svn_depth_t depth,
+                            apr_pool_t *scratch_pool);
+
+/**
+ * Describe the layout of the working copy below @a local_abspath to
+ * the callback @a layout.
+ *
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client__layout_list(const char *local_abspath,
+                        svn_client__layout_func_t layout,
+                        void *layout_baton,
+                        svn_client_ctx_t *ctx,
+                        apr_pool_t *scratch_pool);
+
+
 /**
  * @defgroup Add Begin versioning files/directories in a working copy.
  *
@@ -3060,11 +3092,17 @@ svn_client_blame(const char *path_or_url
  * The above two options are mutually exclusive. It is an error to set
  * both to TRUE.
  *
+ * If @a pretty_print_mergeinfo is true, then describe 'svn:mergeinfo'
+ * property changes in a human-readable form that says what changes were
+ * merged or reverse merged; otherwise (or if the mergeinfo property values
+ * don't parse correctly) display them just like any other property.
+ *
  * Generated headers are encoded using @a header_encoding.
  *
- * Diff output will not be generated for binary files, unless @a
- * ignore_content_type is TRUE, in which case diffs will be shown
- * regardless of the content types.
+ * If either side has an svn:mime-type property that indicates 'binary'
+ * content, then if @a ignore_content_type is set, attempt to produce the
+ * diff in the usual way, otherwise produce a 'GIT binary diff' in git mode
+ * or print a warning message in non-git mode.
  *
  * @a diff_options (an array of <tt>const char *</tt>) is used to pass
  * additional command line options to the diff processes invoked to compare
@@ -3090,8 +3128,39 @@ svn_client_blame(const char *path_or_url
  * @note @a relative_to_dir doesn't affect the path index generated by
  * external diff programs.
  *
+ * @since New in 1.11.
+ */
+svn_error_t *
+svn_client_diff7(const apr_array_header_t *diff_options,
+                 const char *path_or_url1,
+                 const svn_opt_revision_t *revision1,
+                 const char *path_or_url2,
+                 const svn_opt_revision_t *revision2,
+                 const char *relative_to_dir,
+                 svn_depth_t depth,
+                 svn_boolean_t ignore_ancestry,
+                 svn_boolean_t no_diff_added,
+                 svn_boolean_t no_diff_deleted,
+                 svn_boolean_t show_copies_as_adds,
+                 svn_boolean_t ignore_content_type,
+                 svn_boolean_t ignore_properties,
+                 svn_boolean_t properties_only,
+                 svn_boolean_t use_git_diff_format,
+                 svn_boolean_t pretty_print_mergeinfo,
+                 const char *header_encoding,
+                 svn_stream_t *outstream,
+                 svn_stream_t *errstream,
+                 const apr_array_header_t *changelists,
+                 svn_client_ctx_t *ctx,
+                 apr_pool_t *pool);
+
+/** Similar to svn_client_diff7(), but with @a pretty_print_mergeinfo
+ * always passed as @c TRUE.
+ *
+ * @deprecated Provided for backward compatibility with the 1.10 API.
  * @since New in 1.8.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_diff6(const apr_array_header_t *diff_options,
                  const char *path_or_url1,
@@ -3249,14 +3318,45 @@ svn_client_diff(const apr_array_header_t
  * be either a working-copy path or URL.
  *
  * If @a peg_revision is #svn_opt_revision_unspecified, behave
- * identically to svn_client_diff6(), using @a path_or_url for both of that
+ * identically to svn_client_diff7(), using @a path_or_url for both of that
  * function's @a path_or_url1 and @a path_or_url2 arguments.
  *
- * All other options are handled identically to svn_client_diff6().
+ * All other options are handled identically to svn_client_diff7().
  *
  * @since New in 1.8.
  */
 svn_error_t *
+svn_client_diff_peg7(const apr_array_header_t *diff_options,
+                     const char *path_or_url,
+                     const svn_opt_revision_t *peg_revision,
+                     const svn_opt_revision_t *start_revision,
+                     const svn_opt_revision_t *end_revision,
+                     const char *relative_to_dir,
+                     svn_depth_t depth,
+                     svn_boolean_t ignore_ancestry,
+                     svn_boolean_t no_diff_added,
+                     svn_boolean_t no_diff_deleted,
+                     svn_boolean_t show_copies_as_adds,
+                     svn_boolean_t ignore_content_type,
+                     svn_boolean_t ignore_properties,
+                     svn_boolean_t properties_only,
+                     svn_boolean_t use_git_diff_format,
+                     svn_boolean_t pretty_print_mergeinfo,
+                     const char *header_encoding,
+                     svn_stream_t *outstream,
+                     svn_stream_t *errstream,
+                     const apr_array_header_t *changelists,
+                     svn_client_ctx_t *ctx,
+                     apr_pool_t *pool);
+
+/** Similar to svn_client_diff_peg7(), but with @a pretty_print_mergeinfo
+ * always passed as @c TRUE.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ * @since New in 1.7.
+ */
+SVN_DEPRECATED
+svn_error_t *
 svn_client_diff_peg6(const apr_array_header_t *diff_options,
                      const char *path_or_url,
                      const svn_opt_revision_t *peg_revision,
@@ -3419,7 +3519,7 @@ svn_client_diff_peg(const apr_array_head
  * Calls @a summarize_func with @a summarize_baton for each difference
  * with a #svn_client_diff_summarize_t structure describing the difference.
  *
- * See svn_client_diff6() for a description of the other parameters.
+ * See svn_client_diff7() for a description of the other parameters.
  *
  * @since New in 1.5.
  */
@@ -4274,17 +4374,23 @@ svn_client_relocate(const char *dir,
 
 /**
  * Restore the pristine version of working copy @a paths,
- * effectively undoing any local mods.  For each path in @a paths,
- * revert it if it is a file.  Else if it is a directory, revert
- * according to @a depth:
+ * effectively undoing any local mods. This means returning each
+ * path's versioned status to 'unmodified' and changing its on-disk
+ * state to match that.
+ *
+ * If an item was in a state of conflict, reverting also marks the
+ * conflict as resolved. If there are conflict marker files attached
+ * to the item, these are removed.
  *
  * @a paths is an array of (const char *) local WC paths.
  *
- * If @a depth is #svn_depth_empty, revert just the properties on
- * the directory; else if #svn_depth_files, revert the properties
+ * For each path in @a paths, revert it if it is a file.  Else if it is
+ * a directory, revert according to @a depth:
+ * If @a depth is #svn_depth_empty, revert just
+ * the directory; else if #svn_depth_files, revert the directory
  * and any files immediately under the directory; else if
  * #svn_depth_immediates, revert all of the preceding plus
- * properties on immediate subdirectories; else if #svn_depth_infinity,
+ * immediate subdirectories; else if #svn_depth_infinity,
  * revert path and everything under it fully recursively.
  *
  * @a changelists is an array of <tt>const char *</tt> changelist
@@ -4296,9 +4402,14 @@ svn_client_relocate(const char *dir,
  * If @a clear_changelists is TRUE, then changelist information for the
  * paths is cleared while reverting.
  *
- * If @a metadata_only is TRUE, the files and directories aren't changed
- * by the operation. If there are conflict marker files attached to the
- * targets these are removed.
+ * The @a metadata_only and @a added_keep_local options control the
+ * extent of reverting. If @a metadata_only is TRUE, the working copy
+ * files are untouched, but if there are conflict marker files attached
+ * to these files these markers are removed. Otherwise, if
+ * @a added_keep_local is TRUE, then all items are reverted except an
+ * item that was scheduled as plain 'add' (not a copy) will not be
+ * removed from the working copy. Otherwise, all items are reverted and
+ * their on-disk state changed to match.
  *
  * 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
@@ -4308,8 +4419,28 @@ svn_client_relocate(const char *dir,
  * then do not error, just invoke @a ctx->notify_func2 with @a
  * ctx->notify_baton2, using notification code #svn_wc_notify_skip.
  *
+ * @warning The 'revert' command intentionally and permanently loses
+ * local modifications.
+ *
+ * @since New in 1.11.
+ */
+svn_error_t *
+svn_client_revert4(const apr_array_header_t *paths,
+                   svn_depth_t depth,
+                   const apr_array_header_t *changelists,
+                   svn_boolean_t clear_changelists,
+                   svn_boolean_t metadata_only,
+                   svn_boolean_t added_keep_local,
+                   svn_client_ctx_t *ctx,
+                   apr_pool_t *scratch_pool);
+
+/** Similar to svn_client_revert4(), but with @a added_keep_local set to
+ * TRUE.
+ *
  * @since New in 1.9.
+ * @deprecated Provided for backwards compatibility with the 1.10 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_revert3(const apr_array_header_t *paths,
                    svn_depth_t depth,
@@ -4376,7 +4507,7 @@ typedef struct svn_client_conflict_t svn
 typedef struct svn_client_conflict_option_t svn_client_conflict_option_t;
 
 /**
- * A public enumuneration of conflict option IDs.
+ * A public enumeration of conflict option IDs.
  *
  * @since New in 1.10, unless noted otherwise.
  */
@@ -4427,7 +4558,13 @@ typedef enum svn_client_conflict_option_
   svn_client_conflict_option_incoming_move_dir_merge,
 
   /* Options for local move vs incoming edit on merge. */
-  svn_client_conflict_option_local_move_file_text_merge
+  svn_client_conflict_option_local_move_file_text_merge,
+  svn_client_conflict_option_local_move_dir_merge, /**< @since New in 1.11. */
+
+  /* Options for local missing vs incoming edit on merge. */
+  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. */
+
 } svn_client_conflict_option_id_t;
 
 /**
@@ -4448,26 +4585,45 @@ svn_client_conflict_option_set_merged_pr
   const svn_string_t *merged_propval);
 
 /**
- * Get a list of possible repository paths which can be applied to the
- * svn_client_conflict_option_incoming_move_file_text_merge or
- * svn_client_conflict_option_incoming_move_dir_merge resolution
- * @a option. (If a different option is passed in, this function will
- * raise an assertion failure.)
- *
- * In some situations, there can be multiple possible destinations for an
- * incoming move. One such situation is where a file was copied and moved
- * in the same revision: svn cp a b; svn mv a c; svn commit
+ * Get a list of possible repository paths which can be applied to @a option.
+ *
+ * In some situations, there can be multiple possible destinations for a move.
+ * One such situation is where a file was copied and moved in the same revision:
+ *   svn cp a b; svn mv a c; svn commit
  * When this move is merged elsewhere, both b and c will appear as valid move
  * destinations to the conflict resolver. To resolve such ambiguity, the client
  * may call this function to obtain a list of possible destinations the user
  * may choose from.
  *
+ * @a *possible_moved_to_repos_relpaths 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.
+ *
  * The array is allocated in @a result_pool and will have "const char *"
  * elements pointing to strings also allocated in @a result_pool.
  * All paths are relpaths, and relative to the repository root.
  *
- * @see svn_client_conflict_option_set_moved_to_repos_relpath()
+ * @see svn_client_conflict_option_set_moved_to_repos_relpath2()
+ * @since New in 1.11.
+ */
+svn_error_t *
+svn_client_conflict_option_get_moved_to_repos_relpath_candidates2(
+  apr_array_header_t **possible_moved_to_repos_relpaths,
+  svn_client_conflict_option_t *option,
+  apr_pool_t *result_pool,
+  apr_pool_t *scratch_pool);
+
+/**
+ * Get a list of possible repository paths which can be applied to the
+ * svn_client_conflict_option_incoming_move_file_text_merge, or the
+ * svn_client_conflict_option_incoming_move_dir_merge resolution @a option.
+ *
+ * In SVN 1.10, if a different option is passed in, this function will
+ * raise an assertion failure. Otherwise this function behaves just like
+ * svn_client_conflict_option_get_moved_to_repos_relpath_candidates2().
+ *
  * @since New in 1.10.
+ * @deprecated use svn_client_conflict_option_get_moved_to_repos_relpath_candidates2()
  */
 svn_error_t *
 svn_client_conflict_option_get_moved_to_repos_relpath_candidates(
@@ -4477,10 +4633,9 @@ svn_client_conflict_option_get_moved_to_
   apr_pool_t *scratch_pool);
 
 /**
- * Set the preferred moved target repository path for the
- * svn_client_conflict_option_incoming_move_file_text_merge or
- * svn_client_conflict_option_incoming_move_dir_merge resolution option.
- * 
+ * Set the preferred moved target repository path. If @a option is not
+ * applicable to a moved target repository 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_repos_relpath_candidates().
  * 
@@ -4489,7 +4644,23 @@ svn_client_conflict_option_get_moved_to_
  * svn_client_conflict_option_get_description(). Call these functions again
  * to get updated descriptions containing the newly selected move target.
  *
+ * @since New in 1.11.
+ */
+svn_error_t *
+svn_client_conflict_option_set_moved_to_repos_relpath2(
+  svn_client_conflict_option_t *option,
+  int preferred_move_target_idx,
+  svn_client_ctx_t *ctx,
+  apr_pool_t *scratch_pool);
+
+/**
+ * Like svn_client_conflict_option_set_moved_to_repos_relpath2(), except
+ * that in SVN 1.10 it raises an assertion failure if an option other
+ * than svn_client_conflict_option_incoming_move_file_text_merge or
+ * svn_client_conflict_option_incoming_move_dir_merge is passed.
+ *
  * @since New in 1.10.
+ * @deprecated use svn_client_conflict_option_set_moved_to_repos_relpath2()
  */
 svn_error_t *
 svn_client_conflict_option_set_moved_to_repos_relpath(
@@ -4500,24 +4671,45 @@ svn_client_conflict_option_set_moved_to_
 
 /**
  * Get a list of possible moved-to abspaths in the working copy which can be
- * applied to the svn_client_conflict_option_incoming_move_file_text_merge
- * or svn_client_conflict_option_incoming_move_dir_merge resolution @a option.
- * (If a different option is passed in, this function will raise an assertion
- * failure.)
- *
- * All paths in the returned list correspond to the repository path which
- * is assumed to be the destination of the incoming move operation.
- * To support cases where this destination path is ambiguous, the client may
- * call svn_client_conflict_option_get_moved_to_repos_relpath_candidates()
- * before calling this function to let the user select a repository path first.
+ * applied to @a option.
+ *
+ * All working copy paths in the returned list correspond to one repository
+ * path which is be one of the possible destinations of a move operation.
+ * More than one repository-side move target candidate may exist; call
+ * 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.
+ *
  * If no possible moved-to paths can be found, return an empty array.
  * This doesn't mean that no move happened in the repository. It is possible
  * that the move destination is outside the scope of the current working copy,
  * for example, in which case the conflict must be resolved in some other way.
  *
- * @see svn_client_conflict_option_set_moved_to_abspath()
+ * @see svn_client_conflict_option_set_moved_to_abspath2()
+ * @since New in 1.11.
+ */
+svn_error_t *
+svn_client_conflict_option_get_moved_to_abspath_candidates2(
+  apr_array_header_t **possible_moved_to_abspaths,
+  svn_client_conflict_option_t *option,
+  apr_pool_t *result_pool,
+  apr_pool_t *scratch_pool);
+
+/**
+ * Get a list of possible moved-to abspaths in the working copy which can be
+ * svn_client_conflict_option_incoming_move_file_text_merge, or the
+ * svn_client_conflict_option_incoming_move_dir_merge resolution @a option.
+ *
+ * In SVN 1.10, if a different option is passed in, this function will
+ * raise an assertion failure. Otherwise this function behaves just like
+ * svn_client_conflict_option_get_moved_to_abspath_candidates2().
+ *
  * @since New in 1.10.
+ * @deprecated use svn_client_conflict_option_get_moved_to_abspath_candidates2()
  */
 svn_error_t *
 svn_client_conflict_option_get_moved_to_abspath_candidates(
@@ -4527,14 +4719,34 @@ svn_client_conflict_option_get_moved_to_
   apr_pool_t *scratch_pool);
 
 /**
- * Set the preferred moved target abspath for the
- * svn_client_conflict_option_incoming_move_file_text_merge or
- * svn_client_conflict_option_incoming_move_dir_merge resolution option.
+ * 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_candidates().
+ * 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
+ * to get updated descriptions containing the newly selected move target.
+ *
+ * @since New in 1.11.
+ */
+svn_error_t *
+svn_client_conflict_option_set_moved_to_abspath2(
+  svn_client_conflict_option_t *option,
+  int preferred_move_target_idx,
+  svn_client_ctx_t *ctx,
+  apr_pool_t *scratch_pool);
+
+/**
+ * Like svn_client_conflict_option_set_moved_to_abspath2(), except that
+ * in SVN 1.10 this function raises an assertion failure if an option
+ * other than svn_client_conflict_option_incoming_move_file_text_merge or
+ * svn_client_conflict_option_incoming_move_dir_merge is passed.
+ *
  * @since New in 1.10.
+ * @deprecated use svn_client_conflict_option_set_moved_to_abspath2()
  */
 svn_error_t *
 svn_client_conflict_option_set_moved_to_abspath(
@@ -4583,7 +4795,7 @@ typedef svn_error_t *(*svn_client_confli
 
 /**
  * Walk all conflicts within the specified @a depth of @a local_abspath.
- * Pass each conflict found during the walk to the @conflict_walk_func
+ * 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.
  * 
@@ -4881,7 +5093,7 @@ svn_client_conflict_get_repos_info(const
  * Any output parameter may be set to @c NULL by the caller to indicate that
  * a particular piece of information should not be returned.
  *
- * In case of tree conflicts, this path@revision does not necessarily exist
+ * 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.
  * The responsible incoming change is generally located somewhere between
@@ -6506,7 +6718,7 @@ svn_client_list4(const char *path_or_url
                  svn_client_ctx_t *ctx,
                  apr_pool_t *scratch_pool);
 
-/** Similar to svn_client_list4(), but with @a patterm set to @c NULL.
+/** Similar to svn_client_list4(), but with @a patterns set to @c NULL.
  *
  * @since New in 1.8.
  *
@@ -6549,7 +6761,7 @@ svn_client_list2(const char *path_or_url
 
 /**
  * Similar to svn_client_list2(), but with @a recurse instead of @a depth.
- * If @a recurse is TRUE, pass #svn_depth_files for @a depth; else
+ * If @a recurse is FALSE, pass #svn_depth_immediates for @a depth; else
  * pass #svn_depth_infinity.
  *
  * @since New in 1.4.
@@ -6715,19 +6927,408 @@ svn_client_cat(svn_stream_t *out,
 
 
 
-/** Changelist commands
+/** Shelving v2, with checkpoints
  *
- * @defgroup svn_client_changelist_funcs Client Changelist Functions
+ * @defgroup svn_client_shelves_checkpoints Shelves and checkpoints
  * @{
  */
 
-/** Implementation note:
+/** 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.
  *
- *  For now, changelists are implemented by scattering the
- *  associations across multiple .svn/entries files in a working copy.
- *  However, this client API was written so that we have the option of
- *  changing the underlying implementation -- we may someday want to
- *  store changelist definitions in a centralized database.
+ * 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
+ * @{
  */
 
 /**

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_dav.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_dav.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_dav.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_dav.h Tue Nov 13 07:49:04 2018
@@ -397,6 +397,15 @@ extern "C" {
 
 /** Presence of this in a DAV header in an OPTIONS response indicates
  * that the transmitter (in this case, the server) knows how to handle
+ * 'list' requests.
+ *
+ * @since New in 1.10.
+ */
+#define SVN_DAV_NS_DAV_SVN_LIST\
+            SVN_DAV_PROP_NS_DAV "svn/list"
+
+/** Presence of this in a DAV header in an OPTIONS response indicates
+ * that the transmitter (in this case, the server) knows how to handle
  * svndiff2 format encoding.
  *
  * @since New in 1.10.

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_delta.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_delta.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_delta.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_delta.h Tue Nov 13 07:49:04 2018
@@ -693,12 +693,11 @@ svn_txdelta_skip_svndiff_window(apr_file
 /** A structure full of callback functions the delta source will invoke
  * as it produces the delta.
  *
- * @note Fields may be added to the end of this structure in future
- * versions.  Therefore, users shouldn't allocate structures of this
- * type, to preserve binary compatibility.
- *
- * @note It is recommended to use svn_delta_default_editor() or some other
- * constructor, to ensure that unused slots are filled in with no-op functions.
+ * @note Don't try to allocate one of these yourself.  Instead, always
+ * use svn_delta_default_editor() or some other constructor, to avoid
+ * backwards compatibility problems if the structure is extended in
+ * future releases and to ensure that unused slots are filled in with
+ * no-op functions.
  *
  * <h3>Function Usage</h3>
  *
@@ -769,10 +768,11 @@ svn_txdelta_skip_svndiff_window(apr_file
  *
  * The @c add_file and @c open_file callbacks each return a baton
  * for the file being created or changed.  This baton can then be
- * passed to @c apply_textdelta to change the file's contents, or
- * @c change_file_prop to change the file's properties.  When the
- * producer is finished making changes to a file, it should call
- * @c close_file, to let the consumer clean up and free the baton.
+ * passed to @c apply_textdelta or @c apply_textdelta_stream to change
+ * the file's contents, or @c change_file_prop to change the file's
+ * properties.  When the producer is finished making changes to a
+ * file, it should call @c close_file, to let the consumer clean up
+ * and free the baton.
  *
  * The @c add_file and @c add_directory functions each take arguments
  * @a copyfrom_path and @a copyfrom_revision.  If @a copyfrom_path is
@@ -814,15 +814,16 @@ svn_txdelta_skip_svndiff_window(apr_file
  * 5. When the producer calls @c open_file or @c add_file, either:
  *
  *    (a) The producer must follow with any changes to the file
- *    (@c change_file_prop and/or @c apply_textdelta, as applicable),
- *    followed by a @c close_file call, before issuing any other file
- *    or directory calls, or
+ *    (@c change_file_prop and/or @c apply_textdelta /
+ *    @c apply_textdelta_stream, as applicable), followed by
+ *    a @c close_file call, before issuing any other file or
+ *    directory calls, or
  *
  *    (b) The producer must follow with a @c change_file_prop call if
  *    it is applicable, before issuing any other file or directory
  *    calls; later, after all directory batons including the root
- *    have been closed, the producer must issue @c apply_textdelta
- *    and @c close_file calls.
+ *    have been closed, the producer must issue @c apply_textdelta /
+ *    @c apply_textdelta_stream and @c close_file calls.
  *
  * 6. When the producer calls @c apply_textdelta, it must make all of
  *    the window handler calls (including the @c NULL window at the
@@ -831,7 +832,7 @@ svn_txdelta_skip_svndiff_window(apr_file
  * So, the producer needs to use directory and file batons as if it
  * is doing a single depth-first traversal of the tree, with the
  * exception that the producer may keep file batons open in order to
- * make @c apply_textdelta calls at the end.
+ * make @c apply_textdelta / @c apply_textdelta_stream calls at the end.
  *
  *
  * <h3>Pool Usage</h3>
@@ -855,12 +856,13 @@ svn_txdelta_skip_svndiff_window(apr_file
  * Note that close_directory can be called *before* a file in that
  * directory has been closed. That is, the directory's baton is
  * closed before the file's baton. The implication is that
- * @c apply_textdelta 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 @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.
+ * @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
+ * @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.
  *
  *
  * <h3>Errors</h3>
@@ -1008,7 +1010,8 @@ typedef struct svn_delta_editor_t
   /** We are going to add a new file at @a path, a child of the
    * directory represented by @a parent_baton.  The callback can
    * store a baton for this new file in @a **file_baton; whatever value
-   * it stores there should be passed through to @c apply_textdelta.
+   * it stores there should be passed through to @c apply_textdelta or
+   * @c apply_textdelta_stream.
    *
    * If @a copyfrom_path is non-@c NULL, this add has history (i.e., is a
    * copy), and the origin of the copy may be recorded as
@@ -1040,8 +1043,8 @@ typedef struct svn_delta_editor_t
    *
    * The callback can store a baton for this new file in @a **file_baton;
    * whatever value it stores there should be passed through to
-   * @c apply_textdelta.  If a valid revnum, @a base_revision is the
-   * current revision of the file.
+   * @c apply_textdelta or @c apply_textdelta_stream.  If a valid revnum,
+   * @a base_revision is the current revision of the file.
    *
    * Allocations for the returned @a file_baton should be performed in
    * @a result_pool. It is also typical to save this pool for later usage
@@ -1106,11 +1109,11 @@ typedef struct svn_delta_editor_t
    * more, so whatever resources it refers to may now be freed.
    *
    * @a text_checksum is the hex MD5 digest for the fulltext that
-   * resulted from a delta application, see @c apply_textdelta.  The
-   * checksum is ignored if NULL.  If not null, it is compared to the
-   * checksum of the new fulltext, and the error
-   * SVN_ERR_CHECKSUM_MISMATCH is returned if they do not match.  If
-   * there is no new fulltext, @a text_checksum is ignored.
+   * resulted from a delta application, see @c apply_textdelta and
+   * @c apply_textdelta_stream.  The checksum is ignored if NULL.
+   * If not null, it is compared to the checksum of the new fulltext,
+   * and the error SVN_ERR_CHECKSUM_MISMATCH is returned if they do
+   * not match.  If there is no new fulltext, @a text_checksum is ignored.
    *
    * Any temporary allocations may be performed in @a scratch_pool.
    */
@@ -1147,6 +1150,7 @@ typedef struct svn_delta_editor_t
                              apr_pool_t *scratch_pool);
 
   /** Apply a text delta stream, yielding the new revision of a file.
+   * This callback operates on the passed-in @a editor instance.
    *
    * @a file_baton indicates the file we're creating or updating, and the
    * ancestor file on which it is based; it is the baton set by some
@@ -1166,6 +1170,8 @@ typedef struct svn_delta_editor_t
    * empty string).
    *
    * Any temporary allocations may be performed in @a scratch_pool.
+   *
+   * @since New in 1.10.
    */
   svn_error_t *(*apply_textdelta_stream)(
     const struct svn_delta_editor_t *editor,

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_diff.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_diff.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_diff.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_diff.h Tue Nov 13 07:49:04 2018
@@ -1246,6 +1246,9 @@ svn_diff_get_binary_diff_result_stream(c
 
 /**
  * Data type to manage parsing of patches.
+ *
+ * Represents a patch to one target file.
+ *
  * API users should not allocate structures of this type directly.
  *
  * @since New in 1.7. */
@@ -1272,7 +1275,9 @@ typedef struct svn_patch_t {
   svn_diff_operation_kind_t operation;
 
   /**
-   * Indicates whether the patch is being interpreted in reverse. */
+   * Indicates whether the patch is being interpreted in reverse.
+   * ### If so, how does this affect the interpretation of other fields?
+   */
   svn_boolean_t reverse;
 
   /**

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_fs.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_fs.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_fs.h Tue Nov 13 07:49:04 2018
@@ -1744,7 +1744,7 @@ svn_fs_paths_changed3(svn_fs_path_change
  *
  * Use @a pool for all allocations, including the hash and its values.
  *
- * @note Retrieving the #node_rev_id element of #svn_fs_path_change2_t may
+ * @note Retrieving the #svn_fs_path_change2_t.node_rev_id element may
  *       be expensive in some FS backends.
  *
  * @since New in 1.6.
@@ -1828,9 +1828,9 @@ svn_fs_node_history(svn_fs_history_t **h
  * the same as the original.  This will happen if the original
  * location was an interesting one (where the node was modified, or
  * took place in a copy event).  This behavior allows looping callers
- * to avoid the calling svn_fs_history_location() on the object
- * returned by svn_fs_node_history(), and instead go ahead and begin
- * calling svn_fs_history_prev().
+ * to avoid calling svn_fs_history_location() on the object returned
+ * by svn_fs_node_history(), and instead go ahead and begin calling
+ * svn_fs_history_prev().
  *
  * @note This function uses node-id ancestry alone to determine
  * modifiedness, and therefore does NOT claim that in any of the
@@ -2492,7 +2492,7 @@ svn_fs_file_md5_checksum(unsigned char d
  * svn_fs_file_contents().  In that case, the result of reading from
  * @a *contents is undefined.
  *
- * ### @todo kff: I am worried about lifetime issues with this pool vs
+ * @todo kff: I am worried about lifetime issues with this pool vs
  * the trail created farther down the call stack.  Trace this function
  * to investigate...
  */

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_io.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_io.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_io.h Tue Nov 13 07:49:04 2018
@@ -2410,10 +2410,12 @@ svn_io_write_atomic2(const char *final_p
                      apr_pool_t *scratch_pool);
 
 /** Similar to svn_io_write_atomic2(), but with @a flush_to_disk set
-* to @c TRUE.
-*
-* @deprecated Provided for backward compatibility with the 1.9 API
-*/
+ * to @c TRUE.
+ *
+ * @since New in 1.9.
+ *
+ * @deprecated Provided for backward compatibility with the 1.9 API
+ */
 SVN_DEPRECATED
 svn_error_t *
 svn_io_write_atomic(const char *final_path,

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_opt.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_opt.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_opt.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_opt.h Tue Nov 13 07:49:04 2018
@@ -69,6 +69,10 @@ typedef svn_error_t *(svn_opt_subcommand
 /** The maximum number of options that can be accepted by a subcommand. */
 #define SVN_OPT_MAX_OPTIONS 50
 
+/** The maximum number of paragraphs of help text a subcommand can have.
+ * @since New in 1.11. */
+#define SVN_OPT_MAX_PARAGRAPHS 100
+
 /** Options that have no short option char should use an identifying
  * integer equal to or greater than this.
  */
@@ -77,7 +81,39 @@ typedef svn_error_t *(svn_opt_subcommand
 
 /** One element of a subcommand dispatch table.
  *
+ * @since New in 1.11.
+ */
+typedef struct svn_opt_subcommand_desc3_t
+{
+  /** The full name of this command. */
+  const char *name;
+
+  /** The function this command invokes. */
+  svn_opt_subcommand_t *cmd_func;
+
+  /** A list of alias names for this command (e.g., 'up' for 'update'). */
+  const char *aliases[SVN_OPT_MAX_ALIASES];
+
+  /** A multi-paragraph string describing this command. */
+  const char *help[SVN_OPT_MAX_PARAGRAPHS];
+
+  /** A list of options accepted by this command.  Each value in the
+   * array is a unique enum (the 2nd field in apr_getopt_option_t)
+   */
+  int valid_options[SVN_OPT_MAX_OPTIONS];
+
+  /** A list of option help descriptions, keyed by the option unique enum
+   * (the 2nd field in apr_getopt_option_t), which override the generic
+   * descriptions given in an apr_getopt_option_t on a per-subcommand basis.
+   */
+  struct { int optch; const char *desc; } desc_overrides[SVN_OPT_MAX_OPTIONS];
+} svn_opt_subcommand_desc3_t;
+
+
+/** One element of a subcommand dispatch table.
+ *
  * @since New in 1.4.
+ * @deprecated Provided for backward compatibility with the 1.10 API.
  */
 typedef struct svn_opt_subcommand_desc2_t
 {
@@ -139,8 +175,21 @@ typedef struct svn_opt_subcommand_desc_t
  * Return the entry in @a table whose name matches @a cmd_name, or @c NULL if
  * none.  @a cmd_name may be an alias.
  *
+ * @since New in 1.11.
+ */
+const svn_opt_subcommand_desc3_t *
+svn_opt_get_canonical_subcommand3(const svn_opt_subcommand_desc3_t *table,
+                                  const char *cmd_name);
+
+
+/**
+ * Same as svn_opt_get_canonical_subcommand3(), but with a different
+ * version of the subcommand description table.
+ *
  * @since New in 1.4.
+ * @deprecated Provided for backward compatibility with the 1.10 API.
  */
+SVN_DEPRECATED
 const svn_opt_subcommand_desc2_t *
 svn_opt_get_canonical_subcommand2(const svn_opt_subcommand_desc2_t *table,
                                   const char *cmd_name);
@@ -170,8 +219,22 @@ svn_opt_get_canonical_subcommand(const s
  *
  * The returned value may be statically allocated, or allocated in @a pool.
  *
+ * @since New in 1.11.
+ */
+const apr_getopt_option_t *
+svn_opt_get_option_from_code3(int code,
+                              const apr_getopt_option_t *option_table,
+                              const svn_opt_subcommand_desc3_t *command,
+                              apr_pool_t *pool);
+
+/**
+ * Same as svn_opt_get_option_from_code3(), but with a different
+ * version of the subcommand description table.
+ *
  * @since New in 1.4.
+ * @deprecated Provided for backward compatibility with the 1.10 API.
  */
+SVN_DEPRECATED
 const apr_getopt_option_t *
 svn_opt_get_option_from_code2(int code,
                               const apr_getopt_option_t *option_table,
@@ -198,8 +261,21 @@ svn_opt_get_option_from_code(int code,
  * non-NULL, it is a zero-terminated array, and all subcommands take
  * the options listed in it.
  *
+ * @since New in 1.11.
+ */
+svn_boolean_t
+svn_opt_subcommand_takes_option4(const svn_opt_subcommand_desc3_t *command,
+                                 int option_code,
+                                 const int *global_options);
+
+/**
+ * Same as svn_opt_subcommand_takes_option4(), but with a different
+ * version of the subcommand description table.
+ *
  * @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.10 API.
  */
+SVN_DEPRECATED
 svn_boolean_t
 svn_opt_subcommand_takes_option3(const svn_opt_subcommand_desc2_t *command,
                                  int option_code,
@@ -235,7 +311,7 @@ svn_opt_subcommand_takes_option(const sv
 /**
  * Print a generic (not command-specific) usage message to @a stream.
  *
- * ### @todo Why is @a stream a stdio file instead of an svn stream?
+ * @todo Why is @a stream a stdio file instead of an svn stream?
  *
  * If @a header is non-NULL, print @a header followed by a newline.  Then
  * loop over @a cmd_table printing the usage for each command (getting
@@ -244,8 +320,24 @@ svn_opt_subcommand_takes_option(const sv
  *
  * Use @a pool for temporary allocation.
  *
+ * @since New in 1.11.
+ */
+void
+svn_opt_print_generic_help3(const char *header,
+                            const svn_opt_subcommand_desc3_t *cmd_table,
+                            const apr_getopt_option_t *opt_table,
+                            const char *footer,
+                            apr_pool_t *pool,
+                            FILE *stream);
+
+/**
+ * Same as svn_opt_print_generic_help3(), but with a different
+ * version of the subcommand description table.
+ *
  * @since New in 1.4.
+ * @deprecated Provided for backward compatibility with the 1.10 API.
  */
+SVN_DEPRECATED
 void
 svn_opt_print_generic_help2(const char *header,
                             const svn_opt_subcommand_desc2_t *cmd_table,
@@ -297,8 +389,23 @@ svn_opt_format_option(const char **strin
  * use that second name as an alias for the first name.  This additional
  * behaviour is new in 1.7.
  *
+ * @since New in 1.11.
+ */
+void
+svn_opt_subcommand_help4(const char *subcommand,
+                         const svn_opt_subcommand_desc3_t *table,
+                         const apr_getopt_option_t *options_table,
+                         const int *global_options,
+                         apr_pool_t *pool);
+
+/**
+ * Same as svn_opt_subcommand_help4(), but with a different
+ * version of the subcommand description table.
+ *
  * @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.10 API.
  */
+SVN_DEPRECATED
 void
 svn_opt_subcommand_help3(const char *subcommand,
                          const svn_opt_subcommand_desc2_t *table,
@@ -700,9 +807,30 @@ svn_opt_parse_path(svn_opt_revision_t *r
  * --version flag *and* subcommand arguments on a help command line.
  * The logic for handling such a situation should be in one place.
  *
- * @since New in 1.8.
+ * @since New in 1.11.
  */
+svn_error_t *
+svn_opt_print_help5(apr_getopt_t *os,
+                    const char *pgm_name,
+                    svn_boolean_t print_version,
+                    svn_boolean_t quiet,
+                    svn_boolean_t verbose,
+                    const char *version_footer,
+                    const char *header,
+                    const svn_opt_subcommand_desc3_t *cmd_table,
+                    const apr_getopt_option_t *option_table,
+                    const int *global_options,
+                    const char *footer,
+                    apr_pool_t *pool);
 
+/**
+ * Same as svn_opt_print_help5(), but with a different
+ * version of the subcommand description table.
+ *
+ * @since New in 1.8.
+ * @deprecated Provided for backward compatibility with the 1.10 API.
+ */
+SVN_DEPRECATED
 svn_error_t *
 svn_opt_print_help4(apr_getopt_t *os,
                     const char *pgm_name,

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_props.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_props.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_props.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_props.h Tue Nov 13 07:49:04 2018
@@ -415,19 +415,26 @@ svn_prop_name_is_valid(const char *prop_
 /** Describes external items to check out into this directory.
  *
  * The format is a series of lines, each in the following format:
- *   [-r REV] URL[@PEG] LOCALPATH
+ *
+ *     [-r REV] URL[@PEG] LOCALPATH
+ *
  * LOCALPATH is relative to the directory having this property.
  * REV pins the external to revision REV.
  * URL may be a full URL or a relative URL starting with one of:
- *   ../  to the parent directory of the extracted external
- *   ^/   to the repository root
- *   /    to the server root
- *   //   to the URL scheme
+ *
+ *     ../  to the parent directory of the extracted external
+ *     ^/   to the repository root
+ *     /    to the server root
+ *     //   to the URL scheme
+ *
  * The following format is supported for interoperability with
  * Subversion 1.4 and earlier clients:
- *   LOCALPATH [-r PEG] URL
+ *
+ *     LOCALPATH [-r PEG] URL
+ *
  * The ambiguous format 'relative_path relative_path' is taken as
  * 'relative_url relative_path' with peg revision support.
+ *
  * Lines starting with a '#' character are ignored.
  */
 #define SVN_PROP_EXTERNALS  SVN_PROP_PREFIX "externals"

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_ra.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_ra.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_ra.h Tue Nov 13 07:49:04 2018
@@ -555,9 +555,9 @@ typedef struct svn_ra_callbacks2_t
 
   /** Fetch working copy properties.
    *
-   *<pre> ### we might have a problem if the RA layer ever wants a property
-   * ### that corresponds to a different revision of the file than
-   * ### what is in the WC. we'll cross that bridge one day...</pre>
+   * @note we might have a problem if the RA layer ever wants a property
+   *       that corresponds to a different revision of the file than
+   *       what is in the WC. we'll cross that bridge one day...
    */
   svn_ra_get_wc_prop_func_t get_wc_prop;
 
@@ -1130,13 +1130,12 @@ svn_ra_get_dir(svn_ra_session_t *session
                apr_pool_t *pool);
 
 /**
- * Callback type to be used with @a svn_ra_list.  It will be invoked for
+ * Callback type to be used with svn_ra_list().  It will be invoked for
  * every directory entry found.
  *
  * The full path of the entry is given in @a rel_path and @a dirent contains
- * various additional information.  If @a svn_repos_list has been called
- * with @c path_info_only set, only the @c kind element of this struct
- * will be valid.
+ * various additional information. Only the elements of @a dirent specified
+ * by the @a dirent_fields argument to svn_ra_list() will be valid.
  *
  * @a baton is the user-provided receiver baton.  @a scratch_pool may be
  * used for temporary allocations.
@@ -1155,21 +1154,21 @@ typedef svn_error_t *(* svn_ra_dirent_re
  * In @a session, walk the sub-tree starting at @a path at @a revision down
  * to the given @a depth.  For each directory entry found, @a receiver will
  * be called with @a receiver_baton.  The starting @a path will be reported
- * as well.  Because retrieving elements of a @c svn_dirent_t can be
+ * as well.  Because retrieving elements of a #svn_dirent_t can be
  * expensive, you need to select them individually via flags set in
  * @a dirent_fields.
  *
  * @a patterns is an optional array of <tt>const char *</tt>.  If it is
  * not @c NULL, only those directory entries will be reported whose last
  * path segment matches at least one of these patterns.  This feature uses
- * @c apr_fnmatch for glob matching and requiring '.' to matched by dots
+ * apr_fnmatch() for glob matching and requiring '.' to matched by dots
  * in the path.
  *
  * @a path must point to a directory and @a depth must be at least
- * @c svn_depth_empty.
+ * #svn_depth_empty.
  *
  * If the server doesn't support the 'list' command, return
- * @c SVN_ERR_UNSUPPORTED_FEATURE in preference to any other error that
+ * #SVN_ERR_UNSUPPORTED_FEATURE in preference to any other error that
  * might otherwise be returned.
  *
  * Use @a scratch_pool for temporary memory allocation.
@@ -1858,7 +1857,7 @@ svn_ra_get_location_segments(svn_ra_sess
  * @note Prior to Subversion 1.9, this function may request delta handlers
  * from @a handler even for empty text deltas.  Starting with 1.9, the
  * delta handler / baton return arguments passed to @a handler will be
- * #NULL unless there is an actual difference in the file contents between
+ * NULL unless there is an actual difference in the file contents between
  * the current and the previous call.
  *
  * @since New in 1.5.

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_ra_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_ra_svn.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_ra_svn.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_ra_svn.h Tue Nov 13 07:49:04 2018
@@ -144,7 +144,9 @@ typedef struct svn_ra_svn_cmd_entry_t
   svn_boolean_t terminate;
 } svn_ra_svn_cmd_entry_t;
 
-/** Data types defined by the svn:// protocol. */
+/** Data types defined by the svn:// protocol.
+ *
+ * @since The typedef name is new in 1.10; the enumerators are not. */
 typedef enum
 {
   SVN_RA_SVN_NUMBER,
@@ -177,7 +179,9 @@ typedef svn_error_t *(*svn_ra_svn_edit_c
  *
  * Either @a sock or @a in_stream/@a out_stream must be set, not both.
  * @a compression_level specifies the desired network data compression
- * level (zlib) from 0 (no compression) to 9 (best but slowest).
+ * level from 0 (no compression) to 9 (best but slowest). The effect
+ * of the parameter depends on the compression algorithm; for example,
+ * it is used verbatim by zlib/deflate but ignored by LZ4.
  *
  * If @a zero_copy_limit is not 0, cached file contents smaller than the
  * given limit may be sent directly to the network socket.  Otherwise,

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_repos.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_repos.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_repos.h Tue Nov 13 07:49:04 2018
@@ -375,6 +375,24 @@ typedef void (*svn_repos_notify_func_t)(
                                         const svn_repos_notify_t *notify,
                                         apr_pool_t *scratch_pool);
 
+/** Callback for filtering repository contents during dump.
+ *
+ * Set @a *include to TRUE to indicate that node, identified by path
+ * @a path in @a root should be included in dump, or set it to @c FALSE
+ * to indicate that node should be excluded (presumably according to state
+ * stored in @a baton).
+ *
+ * Do not assume @a scratch_pool has any lifetime beyond this call.
+ *
+ * @since New in 1.10.
+ */
+typedef svn_error_t * (*svn_repos_dump_filter_func_t)(
+  svn_boolean_t *include,
+  svn_fs_root_t *root,
+  const char *path,
+  void *baton,
+  apr_pool_t *scratch_pool);
+
 /**
  * Allocate an #svn_repos_notify_t structure in @a result_pool, initialize
  * and return it.
@@ -843,7 +861,7 @@ typedef svn_error_t *(*svn_repos_freeze_
  * @since New in 1.8.
  */
 svn_error_t *
-svn_repos_freeze(apr_array_header_t *paths,
+svn_repos_freeze(const apr_array_header_t *paths,
                  svn_repos_freeze_func_t freeze_func,
                  void *freeze_baton,
                  apr_pool_t *pool);
@@ -1018,7 +1036,10 @@ svn_repos_hooks_setenv(svn_repos_t *repo
  *
  * @a send_copyfrom_args instructs the driver to send 'copyfrom'
  * arguments to the editor's add_file() and add_directory() methods,
- * whenever it deems feasible.
+ * and therefore to send their content as deltas against the copy source,
+ * whenever it deems feasible. The implementation only does so for
+ * add_file(), and only when the file itself is the copy root (not when
+ * the file is part of a copied subtree).
  *
  * Use @a authz_read_func and @a authz_read_baton (if not @c NULL) to
  * avoid sending data through @a editor/@a edit_baton which is not
@@ -1708,11 +1729,11 @@ svn_repos_stat(svn_dirent_t **dirent,
                apr_pool_t *pool);
 
 /**
- * Callback type to be used with @c svn_repos_list.  It will be invoked for
+ * Callback type to be used with svn_repos_list().  It will be invoked for
  * every directory entry found.
  *
  * The full path of the entry is given in @a path and @a dirent contains
- * various additional information.  If @c svn_repos_list has been called
+ * various additional information.  If svn_repos_list() has been called
  * with @a path_info_only set, only the @a kind element of this struct
  * will be valid.
  *
@@ -1733,14 +1754,14 @@ typedef svn_error_t *(* svn_repos_dirent
  * Walk the sub-tree starting at @a path under @a root up to the given
  * @a depth.  For each directory entry found, @a receiver will be called
  * with @a receiver_baton.  The starting @a path will be reported as well.
- * Because retrieving all elements of a @c svn_dirent_t can be expensive,
+ * Because retrieving all elements of a #svn_dirent_t can be expensive,
  * you may set @a path_info_only to receive only the path name and the node
  * kind.  The entries will be reported ordered by their path.
  *
  * @a patterns is an optional array of <tt>const char *</tt>.  If it is
  * not @c NULL, only those directory entries will be reported whose last
  * path segment matches at least one of these patterns.  This feature uses
- * @c apr_fnmatch for glob matching and requiring '.' to matched by dots
+ * apr_fnmatch() for glob matching and requiring '.' to matched by dots
  * in the path.
  *
  * If @a authz_read_func is not @c NULL, this function will neither report
@@ -1750,7 +1771,7 @@ typedef svn_error_t *(* svn_repos_dirent
  * @a cancel_func and @a cancel_baton.
  *
  * @a path must point to a directory and @a depth must be at least
- * @c svn_depth_empty.
+ * #svn_depth_empty.
  *
  * Use @a scratch_pool for temporary memory allocation.
  *
@@ -2386,7 +2407,7 @@ svn_repos_fs_get_mergeinfo(svn_mergeinfo
  * @note Prior to Subversion 1.9, this function may request delta handlers
  * from @a handler even for empty text deltas.  Starting with 1.9, the
  * delta handler / baton return arguments passed to @a handler will be
- * #NULL unless there is an actual difference in the file contents between
+ * NULL unless there is an actual difference in the file contents between
  * the current and the previous call.
  *
  * @since New in 1.5.
@@ -3310,6 +3331,9 @@ svn_repos_verify_fs(svn_repos_t *repos,
  *            reiterating the existence of previous warnings
  *        ### This is a presentation issue. Caller could do this itself.
  *
+ * If @a filter_func is not @c NULL, it is called for each node being
+ * dumped, allowing the caller to exclude it from dump.
+ *
  * If @a cancel_func is not @c NULL, it is called periodically with
  * @a cancel_baton as argument to see if the client wishes to cancel
  * the dump.
@@ -3329,13 +3353,16 @@ svn_repos_dump_fs4(svn_repos_t *repos,
                    svn_boolean_t include_changes,
                    svn_repos_notify_func_t notify_func,
                    void *notify_baton,
+                   svn_repos_dump_filter_func_t filter_func,
+                   void *filter_baton,
                    svn_cancel_func_t cancel_func,
                    void *cancel_baton,
                    apr_pool_t *pool);
 
 /**
  * Similar to svn_repos_dump_fs4(), but with @a include_revprops and 
- * @a include_changes both set to @c TRUE.
+ * @a include_changes both set to @c TRUE and @a filter_func and
+ * @a filter_baton set to @c NULL.
  *
  * @since New in 1.7.
  * @deprecated Provided for backward compatibility with the 1.9 API.
@@ -3779,7 +3806,7 @@ typedef struct svn_repos_parse_fns3_t
  *
  * @since New in 1.8.
 
- * @since Starting in 1.10, @a parse_fns may contain #NULL pointers for
+ * @since Starting in 1.10, @a parse_fns may contain NULL pointers for
  * those callbacks that the caller is not interested in.
  */
 svn_error_t *

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_string.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_string.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_string.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_string.h Tue Nov 13 07:49:04 2018
@@ -530,8 +530,7 @@ svn_cstring_count_newlines(const char *m
 
 /**
  * Return a cstring which is the concatenation of @a strings (an array
- * of char *) each followed by @a separator (that is, @a separator
- * will also end the resulting string).  Allocate the result in @a pool.
+ * of char *) joined by @a separator.  Allocate the result in @a pool.
  * If @a strings is empty, then return the empty string.
  * If @a trailing_separator is non-zero, also append the separator
  * after the last joined element.

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_time.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_time.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_time.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_time.h Tue Nov 13 07:49:04 2018
@@ -38,14 +38,21 @@ extern "C" {
 
 
 /** Convert @a when to a <tt>const char *</tt> representation allocated
- * in @a pool.  Use svn_time_from_cstring() for the reverse
- * conversion.
+ * in @a pool.
+ *
+ * @see svn_time_from_cstring() for the reverse conversion.
  */
 const char *
 svn_time_to_cstring(apr_time_t when,
                     apr_pool_t *pool);
 
 /** Convert @a data to an @c apr_time_t @a when.
+ *
+ * @see svn_time_to_cstring() for the reverse conversion.
+ *
+ * @deprecated Also accepts a format that was used before Subversion 0.14.
+ * See implementation for details. Use of this format is deprecated.
+ *
  * Use @a pool for temporary memory allocation.
  */
 svn_error_t *

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_types.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_types.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_types.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_types.h Tue Nov 13 07:49:04 2018
@@ -652,7 +652,7 @@ typedef struct svn_dirent_t
   /** node kind */
   svn_node_kind_t kind;
 
-  /** length of file text, or 0 for directories */
+  /** length of file text, otherwise SVN_INVALID_FILESIZE */
   svn_filesize_t size;
 
   /** does the node have props? */

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_utf.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_utf.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_utf.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_utf.h Tue Nov 13 07:49:04 2018
@@ -212,7 +212,7 @@ svn_utf_cstring_from_utf8_ex(const char
  * so when we can detect that at configure time, things will change.
  * Also, this should (?) be moved to apr/apu eventually.
  *
- * See http://subversion.tigris.org/issues/show_bug.cgi?id=807 for
+ * See https://issues.apache.org/jira/browse/SVN-807 for
  * details.
  */
 const char *

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_version.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_version.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_version.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_version.h Tue Nov 13 07:49:04 2018
@@ -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      10
+#define SVN_VER_MINOR      12
 
 /**
  * Patch number.

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_wc.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_wc.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_wc.h Tue Nov 13 07:49:04 2018
@@ -7602,9 +7602,14 @@ svn_wc_relocate(const char *path,
  * If @a clear_changelists is TRUE, then changelist information for the
  * paths is cleared.
  *
- * If @a metadata_only is TRUE, the working copy files are untouched, but
- * if there are conflict marker files attached to these files these
- * markers are removed.
+ * The @a metadata_only and @a added_keep_local options control the
+ * extent of reverting. If @a metadata_only is TRUE, the working copy
+ * files are untouched, but if there are conflict marker files attached
+ * to these files these markers are removed. Otherwise, if
+ * @a added_keep_local is TRUE, then all items are reverted except an
+ * item that was scheduled as plain 'add' (not a copy) will not be
+ * removed from the working copy. Otherwise, all items are reverted and
+ * their on-disk state changed to match.
  *
  * If @a cancel_func is non-NULL, call it with @a cancel_baton at
  * various points during the reversion process.  If it returns an
@@ -7622,8 +7627,30 @@ svn_wc_relocate(const char *path,
  * If @a path is not under version control, return the error
  * #SVN_ERR_UNVERSIONED_RESOURCE.
  *
+ * @since New in 1.11.
+ */
+svn_error_t *
+svn_wc_revert6(svn_wc_context_t *wc_ctx,
+               const char *local_abspath,
+               svn_depth_t depth,
+               svn_boolean_t use_commit_times,
+               const apr_array_header_t *changelist_filter,
+               svn_boolean_t clear_changelists,
+               svn_boolean_t metadata_only,
+               svn_boolean_t added_keep_local,
+               svn_cancel_func_t cancel_func,
+               void *cancel_baton,
+               svn_wc_notify_func2_t notify_func,
+               void *notify_baton,
+               apr_pool_t *scratch_pool);
+
+/** Similar to svn_wc_revert6() but with @a added_keep_local always
+ * set to TRUE.
+ *
  * @since New in 1.9.
+ * @deprecated Provided for backward compatibility with the 1.10 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_wc_revert5(svn_wc_context_t *wc_ctx,
                const char *local_abspath,

Modified: subversion/branches/mod-dav-svn-expressions/subversion/include/svn_xml.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/include/svn_xml.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/include/svn_xml.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/include/svn_xml.h Tue Nov 13 07:49:04 2018
@@ -175,7 +175,7 @@ typedef void (*svn_xml_char_data)(void *
  * but some internal structures may be allocated out of pool.  Use
  * svn_xml_free_parser() to free all memory used by the parser.
  *
- * Since Subversion 1.10 parser will be freed automatically on pool
+ * @since Since Subversion 1.10 parser will be freed automatically on pool
  * cleanup or by svn_xml_free_parser() call.
  */
 svn_xml_parser_t *

Modified: subversion/branches/mod-dav-svn-expressions/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c Tue Nov 13 07:49:04 2018
@@ -118,6 +118,8 @@ password_get_gnome_keyring(svn_boolean_t
 {
   GError *gerror = NULL;
   gchar *gpassword;
+
+  *done = FALSE;
   
   if (!available_collection(non_interactive, pool))
     return SVN_NO_ERROR;
@@ -129,6 +131,7 @@ password_get_gnome_keyring(svn_boolean_t
                                           NULL);
   if (gerror)
     {
+      /* ### TODO: return or log the error? */
       g_error_free(gerror);
     }
   else if (gpassword)
@@ -156,6 +159,8 @@ password_set_gnome_keyring(svn_boolean_t
   GError *gerror = NULL;
   gboolean gstatus;
   
+  *done = FALSE;
+
   if (!available_collection(non_interactive, pool))
     return SVN_NO_ERROR;
 
@@ -170,6 +175,7 @@ password_set_gnome_keyring(svn_boolean_t
                                        NULL);
   if (gerror)
     {
+      /* ### TODO: return or log the error? */
       g_error_free(gerror);
     }
   else if (gstatus)

Modified: subversion/branches/mod-dav-svn-expressions/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/branches/mod-dav-svn-expressions/subversion/libsvn_client/client.h?rev=1846488&r1=1846487&r2=1846488&view=diff
==============================================================================
--- subversion/branches/mod-dav-svn-expressions/subversion/libsvn_client/client.h (original)
+++ subversion/branches/mod-dav-svn-expressions/subversion/libsvn_client/client.h Tue Nov 13 07:49:04 2018
@@ -682,34 +682,6 @@ svn_client__get_diff_editor2(const svn_d
 /* ---------------------------------------------------------------- */
 
 
-/*** Editor for diff summary ***/
-
-/* Set *DIFF_PROCESSOR to a diff processor that will report a diff summary
-   to SUMMARIZE_FUNC.
-
-   P_ROOT_RELPATH will return a pointer to a string that must be set to
-   the root of the operation before the processor is called.
-
-   ORIGINAL_PATH specifies the original path and will be used with
-   **ANCHOR_PATH to create paths as the user originally provided them
-   to the diff function.
-
-   SUMMARIZE_FUNC is called with SUMMARIZE_BATON as parameter by the
-   created callbacks for each changed item.
-*/
-svn_error_t *
-svn_client__get_diff_summarize_callbacks(
-                        const svn_diff_tree_processor_t **diff_processor,
-                        const char ***p_root_relpath,
-                        svn_client_diff_summarize_func_t summarize_func,
-                        void *summarize_baton,
-                        const char *original_target,
-                        apr_pool_t *result_pool,
-                        apr_pool_t *scratch_pool);
-
-/* ---------------------------------------------------------------- */
-
-
 /*** Copy Stuff ***/
 
 /* This structure is used to associate a specific copy or move SRC with a
@@ -754,40 +726,23 @@ typedef struct svn_client__copy_pair_t
 
 /*** Commit Stuff ***/
 
-/* WARNING: This is all new, untested, un-peer-reviewed conceptual
-   stuff.
+/* The "Harvest Committables" System
 
-   The day that 'svn switch' came into existence, our old commit
-   crawler (svn_wc_crawl_local_mods) became obsolete.  It relied far
-   too heavily on the on-disk hierarchy of files and directories, and
-   simply had no way to support disjoint working copy trees or nest
-   working copies.  The primary reason for this is that commit
-   process, in order to guarantee atomicity, is a single drive of a
+   The commit process requires, per repository, a single drive of a
    commit editor which is based not on working copy paths, but on
-   URLs.  With the completion of 'svn switch', it became all too
-   likely that the on-disk working copy hierarchy would no longer be
-   guaranteed to map to a similar in-repository hierarchy.
-
-   Aside from this new brokenness of the old system, an unrelated
-   feature request had cropped up -- the ability to know in advance of
-   your commit, exactly what would be committed (so that log messages
-   could be initially populated with this information).  Since the old
-   crawler discovered commit candidates while in the process of
-   committing, it was impossible to harvest this information upfront.
-   As a workaround, svn_wc_statuses() was used to stat the whole
-   working copy for changes before the commit started...and then the
-   commit would again stat the whole tree for changes.
-
-   Enter the new system.
+   URLs.  The on-disk working copy hierarchy does not, in general,
+   map to a similar in-repository hierarchy, due to switched subtrees
+   and disjoint working copies.
+
+   Also we wish to know exactly what would be committed, in advance of
+   the commit, so that a log message editor can be initially populated
+   with this information.
 
    The primary goal of this system is very straightforward: harvest
    all commit candidate information up front, and cache enough info in
    the process to use this to drive a URL-sorted commit.
 
-   *** END-OF-KNOWLEDGE ***
-
-   The prototypes below are still in development.  In general, the
-   idea is that commit-y processes ('svn mkdir URL', 'svn delete URL',
+   The idea is that commit-y processes ('svn mkdir URL', 'svn delete URL',
    'svn commit', 'svn copy WC_PATH URL', 'svn copy URL1 URL2', 'svn
    move URL1 URL2', others?) generate the cached commit candidate
    information, and hand this information off to a consumer which is
@@ -844,7 +799,7 @@ typedef svn_error_t *(*svn_client__check
      - if the candidate has a lock token, add it to the LOCK_TOKENS hash.
 
      - if the candidate is a directory scheduled for deletion, crawl
-       the directories children recursively for any lock tokens and
+       the directory's children recursively for any lock tokens and
        add them to the LOCK_TOKENS array.
 
    At the successful return of this function, COMMITTABLES will point
@@ -1129,24 +1084,26 @@ svn_client__resolve_conflicts(svn_boolea
                               svn_client_ctx_t *ctx,
                               apr_pool_t *scratch_pool);
 
-/* Produce a diff with depth DEPTH between two files or two directories at
- * LEFT_ABSPATH1 and RIGHT_ABSPATH, using the provided diff callbacks to
- * show changes in files. The files and directories involved may be part of
- * a working copy or they may be unversioned. For versioned files, show
- * property changes, too.
+/* Produce a diff with depth DEPTH between the file or directory at
+ * LEFT_ABSPATH and the file or directory at RIGHT_ABSPATH, reporting
+ * differences to DIFF_PROCESSOR.
  *
- * If ANCHOR_ABSPATH is not null, set it to the anchor of the diff before
- * the first processor call. (The anchor is LEFT_ABSPATH or an ancestor of it)
+ * The files and directories involved may be part of a working copy or
+ * they may be unversioned. For versioned files, show property changes,
+ * too.
+ *
+ * No copy or move information is reported to the diff processor.
+ *
+ * Anchor the DIFF_PROCESSOR at the requested diff targets (LEFT_ABSPATH,
+ * RIGHT_ABSPATH). As any children reached by recursion are matched by
+ * name, a diff processor relpath applies equally to both sides of the diff.
  */
 svn_error_t *
-svn_client__arbitrary_nodes_diff(const char **root_relpath,
-                                 svn_boolean_t *root_is_dir,
-                                 const char *left_abspath,
+svn_client__arbitrary_nodes_diff(const char *left_abspath,
                                  const char *right_abspath,
                                  svn_depth_t depth,
                                  const svn_diff_tree_processor_t *diff_processor,
                                  svn_client_ctx_t *ctx,
-                                 apr_pool_t *result_pool,
                                  apr_pool_t *scratch_pool);