2009-09-16 07:17:36 Paul T. Burba napisał(a):
> Author: pburba
> Date: Tue Sep 15 22:17:36 2009
> New Revision: 39350
>
> Log:
> Implement --depth / -R options for 'svn mergeinfo'.
>
> * subversion/include/private/svn_mergeinfo_private.h
> (svn_mergeinfo__add_suffix_to_mergeinfo): New.
>
> * subversion/include/svn_client.h
> (svn_client_mergeinfo_log): New.
> (svn_client_mergeinfo_log_merged): Mark as deprecated.
> (svn_client_mergeinfo_log_eligible): Mark as deprecated.
>
> * subversion/libsvn_client/mergeinfo.c
> (get_mergeinfo): Get a mergeinfo catalog instead of mergeinfo, add
> flag to get subtree mergeinfo, and top it off with some wcng goodness, i.e
> remove an unneeded svn_wc_entry_t and use the dual-pool paradigm.
> (find_nearest_ancestor): New.
> (filter_log_entry_baton_t): Add new members.
> (filter_log_entry_with_rangelist): Use the new members of
> filter_log_entry_baton_t to determine if a revision only *appears* to
> be partially merged.
> (logs_for_mergeinfo_rangelist): Add several new arguments to support
> subtree mergeinfo consideration. Rename POOL arg to SCRATCH_POOL to
> accurately reflect how it is used. No need for a result pool.
> (svn_client_mergeinfo_log_merged): Reimplement as wrapper around
> svn_client_mergeinfo_log.
> (svn_client_mergeinfo_get_merged): Update call to get_mergeinfo().
> (svn_client_mergeinfo_log): New.
> (svn_client_mergeinfo_log_eligible): Reimplement as wrapper around
> svn_client_mergeinfo_log.
> (svn_client_suggest_merge_sources): Update call to get_mergeinfo().
>
> * subversion/libsvn_subr/mergeinfo.c
> (svn_mergeinfo__add_suffix_to_mergeinfo): New.
>
> * subversion/svn/main.c
> (svn_cl__cmd_table): Add --depth and -R as valid options to 'svn mergeinfo'
> subcommand.
>
> * subversion/svn/mergeinfo-cmd.c
> (svn_cl__mergeinfo): Set default depth to empty. Replace calls to
> svn_client_mergeinfo_log_[eligible|merged] with
> svn_client_mergeinfo_log.
>
> * subversion/tests/cmdline/mergeinfo_tests.py
> (recursive_mergeinfo): New.
>
> Modified:
> trunk/subversion/include/private/svn_mergeinfo_private.h
> trunk/subversion/include/svn_client.h
> trunk/subversion/libsvn_client/mergeinfo.c
> trunk/subversion/libsvn_subr/mergeinfo.c
> trunk/subversion/svn/main.c
> trunk/subversion/svn/mergeinfo-cmd.c
> trunk/subversion/tests/cmdline/mergeinfo_tests.py
>
> Modified: trunk/subversion/include/private/svn_mergeinfo_private.h
> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/include/private/svn_mergeinfo_private.h?pathrev=39350&r1=39349&r2=39350
> ==============================================================================
> --- trunk/subversion/include/private/svn_mergeinfo_private.h Tue Sep 15 15:35:35 2009 (r39349)
> +++ trunk/subversion/include/private/svn_mergeinfo_private.h Tue Sep 15 22:17:36 2009 (r39350)
> @@ -98,6 +98,17 @@ svn_mergeinfo__remove_prefix_from_catalo
> const char *prefix,
> apr_pool_t *pool);
>
> +/* Makes a deep copy of MERGEINFO in *OUT_MERGEINFO. If SUFFIX_REL_PATH is
> + a valid relative path then add it to the end of each key path in
> + *OUT_MERGEINFO. *OUT_MERGEINFO is allocated in RESULT_POOL. SCRATCH_POOL
> + is used for any temporary allocations. */
> +svn_error_t *
> +svn_mergeinfo__add_suffix_to_mergeinfo(svn_mergeinfo_t *out_mergeinfo,
> + svn_mergeinfo_t mergeinfo,
> + const char *suffix,
> + apr_pool_t *result_pool,
> + apr_pool_t *scratch_pool);
> +
> /* Create a string representation of CATALOG in *OUTPUT, allocated in POOL.
> The hash keys of CATALOG and the merge source paths of each key's mergeinfo
> are represented in sorted order as per svn_sort_compare_items_as_paths.
>
> Modified: trunk/subversion/include/svn_client.h
> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/include/svn_client.h?pathrev=39350&r1=39349&r2=39350
> ==============================================================================
> --- trunk/subversion/include/svn_client.h Tue Sep 15 15:35:35 2009 (r39349)
> +++ trunk/subversion/include/svn_client.h Tue Sep 15 22:17:36 2009 (r39350)
> @@ -2926,17 +2926,49 @@ svn_client_mergeinfo_get_merged(apr_hash
>
>
> /**
> - * Drive log entry callbacks @a receiver / @a receiver_baton with the
> - * revisions merged from @a merge_source_path_or_url (as of @a
> - * src_peg_revision) into @a path_or_url (as of @a peg_revision). @a
> - * ctx is a context used for authentication.
> + * If @a finding_merged is TRUE, then drive log entry callbacks
> + * @a receiver / @a receiver_baton with the revisions merged from
> + * @a merge_source_path_or_url (as of @a src_peg_revision) into
> + * @a path_or_url (as of @a peg_revision). If @a finding_merged is FALSE
> + * then find the revisions eligible for merging.
> + *
> + * If @a depth is @c svn_depth_empty consider only the explicit or
> + * inherited mergeinfo on @a path_or_url when calculating merged revisions
> + * from @a merge_source_path_or_url. If @a depth is @c svn_depth_infinity
> + * then also consider the explicit subtree mergeinfo under @a path_or_url.
> + * If a depth other than @c svn_depth_empty or @c svn_depth_infinity is
> + * requested then return a @c SVN_ERR_UNSUPPORTED_FEATURE error.
> *
> * @a discover_changed_paths and @a revprops are the same as for
> - * svn_client_log4(). Use @a pool for all necessary allocations.
> + * svn_client_log4(). Use @a scratch_pool for all temporary allocations.
> + *
> + * @a ctx is a context used for authentication.
> *
> * If the server doesn't support retrieval of mergeinfo, return an @c
> * SVN_ERR_UNSUPPORTED_FEATURE error.
> *
> + * @since New in 1.7.
> + */
> +svn_error_t *
> +svn_client_mergeinfo_log(const char *path_or_url,
> + svn_boolean_t finding_merged,
> + const svn_opt_revision_t *peg_revision,
> + const char *merge_source_path_or_url,
> + const svn_opt_revision_t *src_peg_revision,
> + svn_log_entry_receiver_t receiver,
> + void *receiver_baton,
> + svn_boolean_t discover_changed_paths,
> + svn_depth_t depth,
> + const apr_array_header_t *revprops,
> + svn_client_ctx_t *ctx,
> + apr_pool_t *scratch_pool);
> +
> +/**
> + * Similar to svn_client_mergeinfo_log(), but finds only merged revisions
> + * and always operates at @a depth @c svn_depth_empty.
> + *
> + * @deprecated Provided for backwards compatibility with the 1.5 API.
s/1.5/1.6/
> + *
> * @since New in 1.5.
> */
> svn_error_t *
> @@ -2952,16 +2984,10 @@ svn_client_mergeinfo_log_merged(const ch
> apr_pool_t *pool);
>
> /**
> - * Drive log entry callbacks @a receiver / @a receiver_baton with the
> - * revisions eligible for merge from @a merge_source_path_or_url (as
> - * of @a src_peg_revision) into @a path_or_url (as of @a
> - * peg_revision). @a ctx is a context used for authentication.
> - *
> - * @a discover_changed_paths and @a revprops are the same as for
> - * svn_client_log4(). Use @a pool for all necessary allocations.
> + * Similar to svn_client_mergeinfo_log(), but finds only eligible revisions
> + * and always operates at @a depth @c svn_depth_empty.
> *
> - * If the server doesn't support retrieval of mergeinfo, return an @c
> - * SVN_ERR_UNSUPPORTED_FEATURE error.
> + * @deprecated Provided for backwards compatibility with the 1.5 API.
s/1.5/1.6/
> *
> * @since New in 1.5.
> */
--
Arfrever Frehtes Taifersar Arahesis
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2395365
Received on 2009-09-16 08:24:28 CEST