Hi Philip...

> URL: http://svn.apache.org/r1577280
> Log:
> Merge the fsfs-lock-many branch to trunk.  [...]

> * subversion/include/svn_fs.h
>   (svn_fs_lock_target_t, svn_fs_lock_result_t,
>    svn_fs_lock2, svn_fs_unlock2): new.
> 
> * subversion/include/svn_repos.h
>   (svn_repos_fs_lock2, svn_repos_fs_unlock2): new.

Do we intend to deprecate the old versions? If not, then it would be better to 
name the new functions something like ...lock_many() instead of ...lock2().

And...

> Modified: subversion/trunk/subversion/include/svn_repos.h
> ==============================================================================
> -/** Like svn_fs_lock(), but invoke the @a repos's pre- and
> +/** Like svn_fs_lock2(), but invoke the @a repos's pre- and
>   * post-lock hooks before and after the locking action.  Use @a pool
>   * for any necessary allocations.
>   *
> - * If the pre-lock hook or svn_fs_lock() fails, throw the original
> - * error to caller.  If an error occurs when running the post-lock
> - * hook, return the original error wrapped with
> + * The pre-lock is run for every path in @a targets. Those entries in
> + * @a targets for which the pre-lock is successful are passed to
> + * svn_fs_lock2 and the post-lock is run for those that are
> + * successfully locked.
> + *
> + * @a results contains the result of running the pre-lock and
> + * svn_fs_lock2 if the pre-lock was successful.  If an error occurs
> + * when running the post-lock hook the error is returned wrapped with
>   * SVN_ERR_REPOS_POST_LOCK_HOOK_FAILED.  If the caller sees this
> - * error, it knows that the lock succeeded anyway.
> + * error, it knows that the some locks succeeded.  In all cases the
> + * caller must handle all errors in @a results to avoid leaks.
>   *
>   * The pre-lock hook may cause a different token to be used for the
>   * lock, instead of @a token; see the pre-lock-hook documentation for
>   * more.
>   *
> + * @since New in 1.9.
> + */
> +svn_error_t *
> +svn_repos_fs_lock2(apr_hash_t **results,
> +                   svn_repos_t *repos,
> +                   apr_hash_t *targets,
> +                   const char *comment,
> +                   svn_boolean_t is_dav_comment,
> +                   apr_time_t expiration_date,
> +                   svn_boolean_t steal_lock,
> +                   apr_pool_t *result_pool,
> +                   apr_pool_t *scratch_pool);
> +
> +/** Similar to svn_repos_fs_lock2() but locks only a single path.
> + *
>   * @since New in 1.2.
>   */
> svn_error_t *
> @@ -2226,6 +2247,14 @@ svn_repos_fs_lock(svn_lock_t **lock,
>   * @since New in 1.2.
>   */

The doc strings for the old and new unlock functions need updating here.

> svn_error_t *
> +svn_repos_fs_unlock2(apr_hash_t **results,
> +                     svn_repos_t *repos,
> +                     apr_hash_t *targets,
> +                     svn_boolean_t break_lock,
> +                     apr_pool_t *result_pool,
> +                     apr_pool_t *scratch_pool);
> +
> +svn_error_t *
> svn_repos_fs_unlock(svn_repos_t *repos,
>                      const char *path,
>                      const char *token,

Reply via email to