> -----Original Message-----
> From: s...@apache.org [mailto:s...@apache.org]
> Sent: woensdag 4 februari 2015 15:59
> To: comm...@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
> Log:
> 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
>     subversion/branches/pin-externals/subversion/libsvn_client/copy.c
>     subversion/branches/pin-externals/subversion/libsvn_client/deprecated.c
>     subversion/branches/pin-externals/subversion/svn/copy-cmd.c
>     subversion/branches/pin-externals/subversion/tests/libsvn_client/client-
> test.c
> 
> Modified: subversion/branches/pin-externals/subversion/include/svn_client.h
> URL: http://svn.apache.org/viewvc/subversion/branches/pin-
> externals/subversion/include/svn_client.h?rev=1657267&r1=1657266&r2=1657
> 267&view=diff
> ================================================================
> ==============
> --- 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.

        Bert

Reply via email to