> -----Original Message-----
> From: stsp_at_apache.org [mailto:stsp_at_apache.org]
> Sent: woensdag 4 februari 2015 15:59
> To: commits_at_subversion.apache.org
> Subject: svn commit: r1657267 - in /subversion/branches/pin-
> externals/subversion: include/svn_client.h libsvn_client/copy.c
> libsvn_client/deprecated.c svn/copy-cmd.c tests/libsvn_client/client-test.c
> Author: stsp
> Date: Wed Feb 4 14:58:59 2015
> New Revision: 1657267
> URL: http://svn.apache.org/r1657267
> On the pin-externals branch, allow fine-grained API-level control over which
> externals get pinned during a copy. This feature is intended for clients which
> allow users to select specific externals for pinning, like TortoiseSVN does.
> Suggested by: steveking
> * subversion/include/svn_client.h
> (svn_client_copy7): Add externals_to_pin parameter. Extend docstring.
> * subversion/libsvn_client/copy.c
> (make_external_description): New. Factored out from pin_externals_prop().
> (pin_externals_prop): Add externals_to_pin parameter. If set, only pin
> externals matching those in externals_to_pin.
> (resolve_pinned_externals, do_wc_to_wc_copies_with_write_lock,
> do_wc_to_wc_copies, repos_to_repos_copy, wc_to_repos_copy,
> repos_to_wc_copy_single, repos_to_wc_copy_locked, repos_to_wc_copy,
> try_copy, svn_client_copy7): Add new externals_to_pin parameter
> and pass it all the way down to pin_externals_prop().
> (svn_client_move7): Pass NULL for externals_to_pin.
> * subversion/libsvn_client/deprecated.c
> (svn_client_copy6): Pass NULL for externals_to_pin.
> * subversion/svn/copy-cmd.c
> (svn_cl__copy): Pass NULL for externals_to_pin.
> * subversion/tests/libsvn_client/client-test.c
> (test_copy_pin_externals, test_funcs): New test.
> Modified: subversion/branches/pin-externals/subversion/include/svn_client.h
> URL: http://svn.apache.org/viewvc/subversion/branches/pin-
> --- subversion/branches/pin-externals/subversion/include/svn_client.h (original)
> +++ subversion/branches/pin-externals/subversion/include/svn_client.h Wed
> Feb 4 14:58:59 2015
> @@ -4493,8 +4493,16 @@ typedef struct svn_client_copy_source_t
> * as part of this operation.
> * If @a pin_externals is set, pin URLs in copied externals definitions
> - * to their last-changed revision unless they were already pinned to a
> - * particular revision.
> + * to their current revision unless they were already pinned to a
> + * particular revision. If non-NULL, @a externals_to_pin restricts pinning
> + * to a subset of externals. It is a hash table keyed by either a local
> + * absolute path or a URL at which an svn:externals property is set.
> + * The hash table contains apr_array_header_t* elements as returned
> + * by svn_wc_parse_externals_description3(). These arrays contain elements
> + * of type svn_wc_external_item2_t*. Externals corresponding to these
> + * items will be pinned, other externals will not be pinned.
> + * If @a externals_to_pin is @c NULL then all externals are pinned.
> + * If @a pin_externals is @c FALSE then @a externals_to_pin is ignored.
" absolute path or a URL at which an svn:externals property is set."
When should I use URL and when an abspath?
Does that depend on which copy operation I use? (repos->wc, wc->wc, repos->repos)
Do I need to specify the source or the destination path/url?
This already huge chunk of documentation, still leaves out a lot of details I would need to use it.
Personally I liked the feature better, before adding this configuration knob, which still doesn't allow per external pinning (only per svn:externals property), and still requires api users to walk all the externals themselves.
Received on 2015-02-04 16:31:58 CET