dan...@apache.org wrote:
> Author: dannas
> Date: Sat May  1 21:06:36 2010
> New Revision: 940111
> 
[...]

>   (svn_cl__print_status_xml): Add ctx parameter.
> 
> * subversion/svn/status.c
>   (print_status): Add ctx parameter. Check status->conflicted and use wc
>     funcs for fetching further information.
>   svn_cl__print_status_xml,

log message error ^

>   (svn_cl__print_status): Do an explicit check for tree conflicts
>     instead of relying on fields in svn_wc_status3_t. 
> 
> * subversion/svn/status-cmd.c
>   (print_status_normal_or_xml): Update callers to pass a ctx parameter.
> 
> * subversion/include/svn_wc.h
>   (svn_wc_status3_t): Add conflicted field.
> 
> * subversion/include/private/svn_wc_private.h
>   (svn_wc__node_check_conflicts): New.
> 
> * subversion/libsvn_wc/status.c
>   (assemble_status): Initialize status->conflicted.
> 
> * subversion/libsvn_wc/node.c
>   (svn_wc__node_check_conflicts): New.
> 
> Modified:
>     subversion/trunk/subversion/include/private/svn_wc_private.h
>     subversion/trunk/subversion/include/svn_wc.h
>     subversion/trunk/subversion/libsvn_wc/node.c
>     subversion/trunk/subversion/libsvn_wc/status.c
>     subversion/trunk/subversion/svn/cl.h
>     subversion/trunk/subversion/svn/status-cmd.c
>     subversion/trunk/subversion/svn/status.c
> 
> Modified: subversion/trunk/subversion/include/private/svn_wc_private.h
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_wc_private.h?rev=940111&r1=940110&r2=940111&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/include/private/svn_wc_private.h (original)
> +++ subversion/trunk/subversion/include/private/svn_wc_private.h Sat May  1 
> 21:06:36 2010
> @@ -598,6 +598,25 @@ svn_wc__node_is_file_external(svn_boolea
>                                const char *local_abspath,
>                                apr_pool_t *scratch_pool);
>  
> +/**
> + * Check what kinds of conflicts we have on @a local_abspath.
> + *
> + * We could have returned the conflicts at once if it wasn't for the fact
> + * that there can be multiple prop conflicts.
> + *
> + * One or two of @a prop_conflicted, @a text_conflicted and @a
> + * tree_conflicted can be NULL if we're not interrested in that particular
> + * value.
> + */
> +svn_error_t *
> +svn_wc__node_check_conflicts(svn_boolean_t *prop_conflicted,
> +                             svn_boolean_t *text_conflicted,
> +                             svn_boolean_t *tree_conflicted,
> +                             svn_wc_context_t *wc_ctx,
> +                             const char *local_abspath,
> +                             apr_pool_t *result_pool,
> +                             apr_pool_t *scratch_pool);
> +
>  
>  /**
>   * Recursively acquire write locks for @a local_abspath if
> 
> Modified: subversion/trunk/subversion/include/svn_wc.h
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_wc.h?rev=940111&r1=940110&r2=940111&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/include/svn_wc.h (original)
> +++ subversion/trunk/subversion/include/svn_wc.h Sat May  1 21:06:36 2010
> @@ -3645,6 +3645,8 @@ typedef struct svn_wc_status3_t
>    /** The locally present lock creation date.
>     */
>    apr_time_t lock_creation_date;
> +  
> +  svn_boolean_t conflicted;

How about a short comment? ^
something like "TRUE if tree-, prop- and/or text-conflicted"

>  
>    /* NOTE! Please update svn_wc_dup_status3() when adding new fields here. */

I think you did not heed this note. ^

>  } svn_wc_status3_t;
> 
> Modified: subversion/trunk/subversion/libsvn_wc/node.c
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/node.c?rev=940111&r1=940110&r2=940111&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_wc/node.c (original)
> +++ subversion/trunk/subversion/libsvn_wc/node.c Sat May  1 21:06:36 2010
> @@ -1049,3 +1049,32 @@ svn_wc__node_is_file_external(svn_boolea
>                                                              local_abspath,
>                                                              scratch_pool));
>  }
> +
> +svn_error_t *
> +svn_wc__node_check_conflicts(svn_boolean_t *prop_conflicted,
> +                             svn_boolean_t *text_conflicted,
> +                             svn_boolean_t *tree_conflicted,
> +                             svn_wc_context_t *wc_ctx,
> +                             const char *local_abspath,
> +                             apr_pool_t *result_pool,
> +                             apr_pool_t *scratch_pool)
> +{
> +  const apr_array_header_t *conflicts;
> +  int i;
> +
> +  SVN_ERR(svn_wc__db_read_conflicts(&conflicts, wc_ctx->db, local_abspath,
> +                                    result_pool, scratch_pool));
> +
> +  for (i = 0; i < conflicts->nelts; i++)
> +    {
> +      svn_wc_conflict_description2_t *cd;
> +      cd = APR_ARRAY_IDX(conflicts, i, svn_wc_conflict_description2_t *);
> +      if (prop_conflicted && cd->kind == svn_wc_conflict_kind_property)
> +        *prop_conflicted = TRUE;
> +      else if (text_conflicted && cd->kind == svn_wc_conflict_kind_text)
> +        *text_conflicted = TRUE;
> +      else if (tree_conflicted && cd->kind == svn_wc_conflict_kind_tree)
> +        *tree_conflicted = TRUE;
> +    }
> +  return SVN_NO_ERROR;
> +}

nice :)

> 
> Modified: subversion/trunk/subversion/libsvn_wc/status.c
> URL: 
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/status.c?rev=940111&r1=940110&r2=940111&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_wc/status.c (original)
> +++ subversion/trunk/subversion/libsvn_wc/status.c Sat May  1 21:06:36 2010
> @@ -302,6 +302,7 @@ assemble_status(svn_wc_status3_t **statu
>    svn_revnum_t changed_rev;
>    const char *changed_author;
>    apr_time_t changed_date;
> +  svn_boolean_t conflicted;
>  #ifdef HAVE_SYMLINK
>    svn_boolean_t wc_special;
>  #endif /* HAVE_SYMLINK */
> @@ -393,6 +394,7 @@ assemble_status(svn_wc_status3_t **statu
>        stat->lock_owner = NULL;
>        stat->lock_comment = NULL;
>        stat->lock_creation_date = 0;
> +      stat->conflicted = (tree_conflict != NULL);

I don't understand -- what about prop and text conflicts? Below,
->conflicted stand for all three of them.
(If this is correct, I guess it needs a comment)

[...diff truncated]

Nice cleanup!
~Neels

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to