br...@apache.org wrote on Tue, 05 Sep 2017 07:45 +0000:
> Author: brane
> Date: Tue Sep  5 07:45:49 2017
> New Revision: 1807319
> 
> URL: http://svn.apache.org/viewvc?rev=1807319&view=rev
> Log:
> Introduce the concept of a target format for working copy upgrades
> into the client library.

> +++ subversion/branches/better-pristines/subversion/include/svn_client.h Tue 
> Sep  5 07:45:49 2017
> @@ -4201,13 +4201,34 @@ svn_client_cleanup(const char *dir,
>   * @{
>   */
>  
> -/** Recursively upgrade a working copy from any older format to the current
> - * WC metadata storage format.  @a wcroot_dir is the path to the WC root.
> +/**
> + * Recursively upgrade a working copy from any older format to the
> + * given WC metadata storage format.  @a wcroot_dir is the path to the
> + * WC root.
> + *

Suggest to clarify that "Recursively" means into nested working copies
(externals), not into subdirs.

> + * @a wc_format_version is version number of the Subversion client
> + * that supports a given WC metadata format; @c NULL means the newest
> + * supported format. Any other value must be a string representing a
> + * version number, e.g., "1.8" or "1.9.3". The earliest supported
> + * version is defined by #SVN_VERSION_SUPPORTED_WC_FORMAT.
>   *

When might 1.A.3 and 1.A.4 have different formats?

>   * Use @a scratch_pool for any temporary allocations.
>   *
> + * @since New in 1.10.
> + */
> +svn_error_t *
> +svn_client_upgrade2(const char *wcroot_dir,
> +                    const char* wc_format_version,
> +                    svn_client_ctx_t *ctx,
> +                    apr_pool_t *scratch_pool);
> +
> +/**
> + * Like svn_client_upgrade2(), but always upgrades to the newest
> + * supported format.
> + *
> - * @since New in 1.7.
> + * @deprecated Provided for backward compatibility with the 1.7 API.

Why drop @since?  We don't usually remove @since tags when deprecating.
(Both here and in svn_wc_upgrade())

>   */
> +SVN_DEPRECATED
>  svn_error_t *
>  svn_client_upgrade(const char *wcroot_dir,
>                     svn_client_ctx_t *ctx,

> +++ subversion/branches/better-pristines/subversion/include/svn_version.h Tue 
> Sep  5 07:45:49 2017
> @@ -134,6 +134,12 @@ extern "C" {
>  #define SVN_VERSION        SVN_VER_NUMBER SVN_VER_TAG
>  
>  
> +/**
> + * Earliest supported working copy version.
> + * @since New in 1.10.
> + */
> +#define SVN_VERSION_SUPPORTED_WC_FORMAT "1.8.0"

Shouldn't this be a function?  It depends not on the compile-time
library version but on the run-time library version.

> +++ subversion/branches/better-pristines/subversion/include/svn_wc.h Tue Sep  
> 5 07:45:49 2017
> @@ -7447,8 +7447,9 @@ typedef svn_error_t * (*svn_wc_upgrade_g
>   * repository uuid, @a repos_info_func (if non-NULL) will be called
>   * with @a repos_info_baton to provide the missing information.
>   *
> - * @since New in 1.7.
> + * @deprecated Provided for backward compatibility with the 1.7 API.

(This is the @since mentioned above.)

>   */
> +SVN_DEPRECATED
>  svn_error_t *
>  svn_wc_upgrade(svn_wc_context_t *wc_ctx,
>                 const char *local_abspath,

> +++ subversion/branches/better-pristines/subversion/libsvn_client/upgrade.c 
> Tue Sep  5 07:45:49 2017
> @@ -173,16 +176,30 @@ svn_client_upgrade(const char *path,
>        /* Upgrading from <= 1.6, or no svn:properties defined.
>           (There is no way to detect the difference from libsvn_client :( ) */
>  
> -      SVN_ERR(upgrade_externals_from_properties(ctx, local_abspath,
> +      SVN_ERR(upgrade_externals_from_properties(ctx, local_abspath, 
> wc_format,
>                                                  &info_baton, scratch_pool));
>      }
>    return SVN_NO_ERROR;
>  }
>  
> +svn_error_t *
> +svn_client_upgrade2(const char *path,
> +                    const char *wc_format_version,
> +                    svn_client_ctx_t *ctx,
> +                    apr_pool_t *scratch_pool)
> +{
> +  int wc_format;
> +
> +  SVN_ERR(svn_wc__format_from_version_string(&wc_format,
> +                                             wc_format_version,
> +                                             scratch_pool));
> +  return upgrade_internal(path, wc_format, ctx, scratch_pool);

Suggest to use

   SVN_ERR(upgrade_internal(...))

or at least svn_error_trace(), for maintainer mode traces' benefit.

> +++ subversion/branches/better-pristines/subversion/libsvn_wc/wc_db.c Tue Sep 
>  5 07:45:49 2017
> @@ -16053,9 +16054,8 @@ svn_wc__db_bump_format(int *result_forma
>      }
>  
>    SVN_ERR(svn_sqlite__read_schema_version(&format, sdb, scratch_pool));
> -  /* TODO: Parametrize the target format here. */
>    err = svn_wc__upgrade_sdb(result_format, wcroot_abspath,
> -                            sdb, format, SVN_WC__VERSION, scratch_pool);
> +                            sdb, format, target_format, scratch_pool);

(For other reviewers: the upgrade logic invoked here was added/changed
in r1807225.)

Cheers,

Daniel

Reply via email to