subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Shahaf <danie...@elego.de>
Subject Re: svn commit: r1296056 - /subversion/trunk/subversion/libsvn_client/util.c
Date Fri, 02 Mar 2012 08:39:13 GMT
Eewww: I pressed 'page down' and the picture didn't change.  (Duplicate
block of code.)  Break out a helper function?

hwright@apache.org wrote on Fri, Mar 02, 2012 at 05:33:22 -0000:
> Author: hwright
> Date: Fri Mar  2 05:33:22 2012
> New Revision: 1296056
> 
> URL: http://svn.apache.org/viewvc?rev=1296056&view=rev
> Log:
> In the client-side ra Ev2 shim callbacks, make sure we handle copyfrom paths
> correctly.
> 
> Current number of test failures over ra_svn: 357
> 
> * subversion/libsvn_client/util.c
>   (fetch_props_func, fetch_kind_func, fetch_base_func): Detect and appropriately
>     munge copyfrom urls as paths.
> 
> Modified:
>     subversion/trunk/subversion/libsvn_client/util.c
> 
> Modified: subversion/trunk/subversion/libsvn_client/util.c
> URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/util.c?rev=1296056&r1=1296055&r2=1296056&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_client/util.c (original)
> +++ subversion/trunk/subversion/libsvn_client/util.c Fri Mar  2 05:33:22 2012
> @@ -256,8 +256,25 @@ fetch_props_func(apr_hash_t **props,
>                   apr_pool_t *scratch_pool)
>  {
>    struct shim_callbacks_baton *scb = baton;
> -  const char *local_abspath = svn_dirent_join(scb->anchor_abspath, path,
> -                                              scratch_pool);
> +  const char *local_abspath;
> +
> +  if (svn_path_is_url(path))
> +    {
> +      /* This is a copyfrom URL */
> +      const char *wcroot_abspath;
> +      const char *wcroot_url;
> +      const char *relpath;
> +
> +      SVN_ERR(svn_wc__get_wc_root(&wcroot_abspath, scb->wc_ctx,
> +                                  scb->anchor_abspath,
> +                                  scratch_pool, scratch_pool));
> +      SVN_ERR(svn_wc__node_get_url(&wcroot_url, scb->wc_ctx, wcroot_abspath,
> +                                   scratch_pool, scratch_pool));
> +      relpath = svn_uri_skip_ancestor(wcroot_url, path, scratch_pool);
> +      local_abspath = svn_dirent_join(wcroot_abspath, relpath, scratch_pool);
> +    }
> +  else
> +    local_abspath = svn_dirent_join(scb->anchor_abspath, path, scratch_pool);
>  
>    SVN_ERR(svn_wc_get_pristine_props(props, scb->wc_ctx, local_abspath,
>                                      result_pool, scratch_pool));
> @@ -274,8 +291,25 @@ fetch_kind_func(svn_kind_t *kind,
>  {
>    struct shim_callbacks_baton *scb = baton;
>    svn_node_kind_t node_kind;
> -  const char *local_abspath = svn_dirent_join(scb->anchor_abspath, path,
> -                                              scratch_pool);
> +  const char *local_abspath;
> +
> +  if (svn_path_is_url(path))
> +    {
> +      /* This is a copyfrom URL */
> +      const char *wcroot_abspath;
> +      const char *wcroot_url;
> +      const char *relpath;
> +
> +      SVN_ERR(svn_wc__get_wc_root(&wcroot_abspath, scb->wc_ctx,
> +                                  scb->anchor_abspath,
> +                                  scratch_pool, scratch_pool));
> +      SVN_ERR(svn_wc__node_get_url(&wcroot_url, scb->wc_ctx, wcroot_abspath,
> +                                   scratch_pool, scratch_pool));
> +      relpath = svn_uri_skip_ancestor(wcroot_url, path, scratch_pool);
> +      local_abspath = svn_dirent_join(wcroot_abspath, relpath, scratch_pool);
> +    }
> +  else
> +    local_abspath = svn_dirent_join(scb->anchor_abspath, path, scratch_pool);
>  
>    SVN_ERR(svn_wc_read_kind(&node_kind, scb->wc_ctx, local_abspath, FALSE,
>                             scratch_pool));
> @@ -293,12 +327,29 @@ fetch_base_func(const char **filename,
>                  apr_pool_t *scratch_pool)
>  {
>    struct shim_callbacks_baton *scb = baton;
> -  const char *local_abspath = svn_dirent_join(scb->anchor_abspath, path,
> -                                              scratch_pool);
> +  const char *local_abspath;
>    svn_stream_t *pristine_stream;
>    svn_stream_t *temp_stream;
>    svn_error_t *err;
>  
> +  if (svn_path_is_url(path))
> +    {
> +      /* This is a copyfrom URL */
> +      const char *wcroot_abspath;
> +      const char *wcroot_url;
> +      const char *relpath;
> +
> +      SVN_ERR(svn_wc__get_wc_root(&wcroot_abspath, scb->wc_ctx,
> +                                  scb->anchor_abspath,
> +                                  scratch_pool, scratch_pool));
> +      SVN_ERR(svn_wc__node_get_url(&wcroot_url, scb->wc_ctx, wcroot_abspath,
> +                                   scratch_pool, scratch_pool));
> +      relpath = svn_uri_skip_ancestor(wcroot_url, path, scratch_pool);
> +      local_abspath = svn_dirent_join(wcroot_abspath, relpath, scratch_pool);
> +    }
> +  else
> +    local_abspath = svn_dirent_join(scb->anchor_abspath, path, scratch_pool);
> +
>    err = svn_wc_get_pristine_contents2(&pristine_stream, scb->wc_ctx,
>                                        local_abspath, scratch_pool,
>                                        scratch_pool);
> 
> 

Mime
View raw message