Noorul Islam K M <noo...@collab.net> writes:

> Stefan Sperling <s...@elego.de> writes:
>
>> On Thu, Mar 03, 2011 at 10:39:11PM +0530, Noorul Islam K M wrote:
>>
>>> @@ -164,9 +171,18 @@
>>>    if (tmpinfo->depth == svn_depth_unknown)
>>>      tmpinfo->depth = svn_depth_infinity;
>>>  
>>> -  SVN_ERR(svn_wc__node_get_schedule(&tmpinfo->schedule, NULL,
>>> -                                    wc_ctx, local_abspath, pool));
>>> +  if (exclude)
>>> +    tmpinfo->depth = svn_depth_exclude;
>>>  
>>> +  err = svn_wc__node_get_schedule(&tmpinfo->schedule, NULL,
>>> +                                  wc_ctx, local_abspath, pool);
>>> +
>>
>> The following needs some curly braces:
>>
>>> +  if (err)
>>> +    if (exclude && err->apr_err == SVN_ERR_ENTRY_NOT_FOUND)
>>> +      svn_error_clear(err);
>>> +    else
>>> +      return svn_error_return(err);
>>> +
>>>    SVN_ERR(svn_wc_get_wc_root(&tmpinfo->wcroot_abspath, wc_ctx,
>>>                               local_abspath, pool, pool));
>>>  
>
> I saw the warning but I thought it is readable and easily understood.
>
> Please find attached updated patch.
>
> Thanks and Regards
> Noorul
>
> Index: subversion/tests/cmdline/depth_tests.py
> ===================================================================
> --- subversion/tests/cmdline/depth_tests.py   (revision 1076929)
> +++ subversion/tests/cmdline/depth_tests.py   (working copy)
> @@ -2348,8 +2348,6 @@
>                                       'mkdir', 'C')
>  
>  
> -# Issue 3792.
> -@XFail()
>  @Issue(3792)
>  def info_excluded(sbox):
>    "'info' should treat excluded item as versioned"
> Index: subversion/svn/info-cmd.c
> ===================================================================
> --- subversion/svn/info-cmd.c (revision 1076929)
> +++ subversion/svn/info-cmd.c (working copy)
> @@ -344,6 +344,10 @@
>            SVN_ERR(svn_cmdline_printf(pool, _("Depth: immediates\n")));
>            break;
>  
> +        case svn_depth_exclude:
> +          SVN_ERR(svn_cmdline_printf(pool, _("Depth: exclude\n")));
> +          break;
> +
>          case svn_depth_infinity:
>            /* Infinity is the default depth for working copy
>               directories.  Let's not print it, it's not special enough
> Index: subversion/include/private/svn_wc_private.h
> ===================================================================
> --- subversion/include/private/svn_wc_private.h       (revision 1076929)
> +++ subversion/include/private/svn_wc_private.h       (working copy)
> @@ -764,6 +764,16 @@
>                           apr_pool_t *result_pool,
>                           apr_pool_t *scratch_pool);
>  
> +/**
> + * Find whether @a local_abspath is set with depth exclude using @a wc_ctx. 
> + */
> +svn_error_t *
> +svn_wc__node_depth_is_exclude(svn_boolean_t *exclude,
> +                              svn_wc_context_t *wc_ctx,
> +                              const char *local_abspath,
> +                              apr_pool_t *scratch_pool);
> +
> +
>  #ifdef __cplusplus
>  }
>  #endif /* __cplusplus */
> Index: subversion/libsvn_wc/node.c
> ===================================================================
> --- subversion/libsvn_wc/node.c       (revision 1076929)
> +++ subversion/libsvn_wc/node.c       (working copy)
> @@ -1528,3 +1528,28 @@
>  
>    return SVN_NO_ERROR;
>  }
> +
> +svn_error_t *
> +svn_wc__node_depth_is_exclude(svn_boolean_t *exclude,
> +                              svn_wc_context_t *wc_ctx,
> +                              const char *local_abspath,
> +                              apr_pool_t *scratch_pool)
> +{
> +  svn_wc__db_status_t status;
> +  svn_error_t *err;
> +  
> +  *exclude = FALSE;
> +
> +  err = svn_wc__db_read_info(&status, NULL, NULL, NULL, NULL, NULL, NULL,
> +                             NULL, NULL, NULL, NULL, NULL, NULL, NULL,
> +                             NULL, NULL, NULL, NULL, NULL, NULL, NULL,
> +                             NULL, NULL, NULL,
> +                             wc_ctx->db, local_abspath, scratch_pool,
> +                             scratch_pool);
> +
> +  if ((! err) && (status == svn_wc__db_status_excluded))
> +    *exclude = TRUE;
> +
> +  return svn_error_return(err);
> +}
> +
> Index: subversion/libsvn_client/info.c
> ===================================================================
> --- subversion/libsvn_client/info.c   (revision 1076929)
> +++ subversion/libsvn_client/info.c   (working copy)
> @@ -96,13 +96,20 @@
>    apr_time_t lock_date;
>    const svn_checksum_t *checksum;
>    svn_node_kind_t kind;
> +  svn_error_t *err;
> +  svn_boolean_t exclude = FALSE;
>  
>    SVN_ERR(svn_wc_read_kind(&kind, wc_ctx, local_abspath, FALSE, pool));
>  
>    if (kind == svn_node_none)
> -    return svn_error_createf(SVN_ERR_WC_PATH_NOT_FOUND, NULL,
> -                             _("The node '%s' was not found."),
> -                             svn_dirent_local_style(local_abspath, pool));
> +    {
> +      svn_error_clear(svn_wc__node_depth_is_exclude(&exclude, wc_ctx,
> +                                                    local_abspath, pool));
> +      if (! exclude)
> +        return svn_error_createf(SVN_ERR_WC_PATH_NOT_FOUND, NULL,
> +                                 _("The node '%s' was not found."),
> +                                 svn_dirent_local_style(local_abspath, 
> pool));
> +    }
>  
>    tmpinfo = apr_pcalloc(pool, sizeof(*tmpinfo));
>    tmpinfo->kind = kind;
> @@ -164,9 +171,20 @@
>    if (tmpinfo->depth == svn_depth_unknown)
>      tmpinfo->depth = svn_depth_infinity;
>  
> -  SVN_ERR(svn_wc__node_get_schedule(&tmpinfo->schedule, NULL,
> -                                    wc_ctx, local_abspath, pool));
> +  if (exclude)
> +    tmpinfo->depth = svn_depth_exclude;
>  
> +  err = svn_wc__node_get_schedule(&tmpinfo->schedule, NULL,
> +                                  wc_ctx, local_abspath, pool);
> +
> +  if (err)
> +    {
> +      if (exclude && err->apr_err == SVN_ERR_ENTRY_NOT_FOUND)
> +        svn_error_clear(err);
> +      else
> +        return svn_error_return(err);
> +    }
> +
>    SVN_ERR(svn_wc_get_wc_root(&tmpinfo->wcroot_abspath, wc_ctx,
>                               local_abspath, pool, pool));
>  

Stefan,

I fixed the warning issue. Is there anything else do be done with this
patch?

Thanks and Regards
Noorul

Reply via email to