> -----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