Create an experimental branch to work on some ideas re inheritable
properties and get a better handle on the performance concerns that
have been raised.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1297080 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Add a branch readme.

* BRANCH-README: New.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1297081 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Some initial basic functionality.

Rev a few new APIs to allow 'svn pg' and 'svn pl' to find inherited
properties on URL targets (with an FSFS back-end):

  svn_proplist_receiver_t
  svn_client_propget4
  svn_client_proplist3
  svn_fs_node_proplist2
  svn_ra_get_dir3
  svn_ra_get_dir2

* subversion/include/svn_client.h

  (svn_proplist_receiver2_t,
   svn_client_propget5,
   svn_client_proplist4): New.

  (svn_proplist_receiver_t,
   svn_client_propget4,
   svn_client_proplist3): Deprecated.

* subversion/include/svn_fs.h

  (svn_fs_node_proplist2): New.

  (svn_fs_node_proplist): Deprecated.

* subversion/include/svn_props.h

  (svn_prop_inherited_item_t,
   svn_prop_inherited_item_dup,
   svn_prop_inherited_array_dup): New.

* subversion/include/svn_ra.h

  (svn_ra_get_file2,
   svn_ra_get_dir3): New.

  (svn_ra_get_file,
   svn_ra_get_dir2): Deprecated.

* subversion/libsvn_client/deprecated.c

  (svn_client_propget4,
   svn_client_proplist3): Deprecated implementations moved here
   from prop_commands.c.

  (proplist_wrapper_receiver,
   wrap_proplist_receiver): New helpers for svn_client_proplist3.

* subversion/libsvn_client/prop_commands.c
 
  (remote_propget): Support option to get inherited props.  Use standard
   pool argument names.

  (svn_client_propget5): New (doesn't yet support getting inherited props
   from the WC).

  (call_receiver): Update to reflect new svn_proplist_receiver2_t.

  (remote_proplist): Support option to get inherited props.  Update doc
   string, we don't use svn_client_proplist_item_t anymore.  Use standard
   pool argument names.

  (svn_client_proplist4): New (doesn't yet support getting inherited props
   from the WC).

* subversion/libsvn_client/revisions.c

  (svn_client__get_revision_number): Minor comment tweak to reflect that
   svn_client_proplist4 is the latest API.

* subversion/libsvn_fs/fs-loader.c

  (svn_fs_node_proplist2): New.

  (svn_fs_node_proplist): Deprecated.

* subversion/libsvn_fs/fs-loader.h

  (root_vtable_t.node_proplist): Update to reflect changes to 
svn_fs_node_proplist.

* subversion/libsvn_fs_base/tree.c

  (base_node_proplist): Update signature to reflect changes to
   svn_fs_node_proplist, but no BDB implementation yet.

* subversion/libsvn_fs_fs/tree.c

  (fs_node_proplist): Update to reflect changes to svn_fs_node_proplist.

* subversion/libsvn_ra/deprecated

  (svn_ra_get_file,
   svn_ra_get_dir,
   svn_ra_get_dir2): Deprecated implementations moved here from ra_loader.c.

* subversion/libsvn_ra/ra_loader.c

  (svn_ra_get_file2,
   svn_ra_get_dir3): New.

* subversion/libsvn_ra/ra_loader.h

  (svn_ra__vtable_t.get_file,
   svn_ra__vtable_t.get_dir): Update to reflect latest svn_ra_get_file* and
   svn_ra_get_dir* APIs.

* subversion/libsvn_ra/wrapper_template.h

  (compat_get_file,
   compat_get_dir): Pass null for inherited_properties.

* subversion/libsvn_ra_local/ra_plugin.c

  (get_node_props): Support option to get inherited props.

  (svn_ra_local__get_file,
   svn_ra_local__get_dir): Update to reflect latest svn_ra_get_file* and
   svn_ra_get_dir* APIs.

* subversion/libsvn_ra_neon/fetch.c
  
  (svn_ra_neon__get_file,
   svn_ra_neon__get_dir): Update signatures to reflect latest
   svn_ra_get_file* and svn_ra_get_dir* APIs (not implemented yet).

* subversion/libsvn_ra_neon/ra_neon.h

  (svn_ra_neon__get_file,
   svn_ra_neon__get_dir): Update signature to reflect latest
   svn_ra_get_file* and svn_ra_get_dir* APIs.

* subversion/libsvn_ra_serf/ra_serf.h

  (svn_ra_serf__get_file): Update signature to reflect latest
   svn_ra_get_file API.

* subversion/libsvn_ra_serf/serf.c

  (svn_ra_serf__get_dir): Update signature to reflect latest svn_ra_get_dir
   API (not yet implemented).

* subversion/libsvn_ra_serf/update.c

  (svn_ra_serf__get_file): Update signature to reflect latest svn_ra_get_file
   API (not yet implemented).

* subversion/libsvn_ra_svn/client.c

  (ra_svn_get_file,
   ra_svn_get_dir): Update signatures to reflect latest
   svn_ra_get_file* and svn_ra_get_dir* APIs (not implemented yet).

* subversion/libsvn_subr/properties.c

  (svn_prop_inherited_item_dup,
   svn_prop_inherited_array_dup): New.

* subversion/svn/cl.h

  (svn_cl__opt_state_t): Add option for --show-inherited-props.

* subversion/svn/main.c

  (svn_cl__longopt_t): Add identifier for --show-inherited-props.

  (svn_cl__options): Add option code and description for
   --show-inherited-props.

* subversion/svn/propget-cmd.c

  (print_single_prop): New, factored out of print_properties.

  (print_properties): Add support to print inherited properties.

  (svn_cl__propget): Implement --show-inherited-props (no --xml output yet).

* subversion/svn/proplist-cmd.c

  (proplist_receiver_xml): Update signature to match
   svn_proplist_receiver2_t, no implementation yet.

  (proplist_receiver): Implement svn_proplist_receiver2_t.

  (svn_cl__proplist): Implement --show-inherited-props (no --xml output yet).


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1301211 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Sync with ^/subversion/trunk through
r1301213.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1301216 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Add a new capability signifying that a
server knows how to find inherited properties.

* subversion/include/svn_dav.h
  (SVN_DAV_NS_DAV_SVN_INHERITED_PROPS): New.

* subversion/include/svn_ra.h
  (SVN_RA_CAPABILITY_INHERITED_PROPS): New.

* subversion/include/svn_ra_svn.h
  (SVN_RA_SVN_CAP_INHERITED_PROPS): New.

* subversion/libsvn_ra_local/ra_plugin.c
  (svn_ra_local__has_capability): Handle SVN_RA_CAPABILITY_INHERITED_PROPS.

* subversion/libsvn_ra_neon/options.c
  (parse_capabilities): Map SVN_DAV_NS_DAV_SVN_INHERITED_PROPS to
   SVN_RA_CAPABILITY_INHERITED_PROPS.

* subversion/libsvn_ra_serf/options.c
  (capabilities_headers_iterator_callback): Map
   SVN_DAV_NS_DAV_SVN_INHERITED_PROPS to SVN_RA_CAPABILITY_INHERITED_PROPS.

* subversion/libsvn_ra_svn/client.c
  (ra_svn_has_capability): Map SVN_RA_SVN_CAP_INHERITED_PROPS to
   SVN_RA_CAPABILITY_INHERITED_PROPS.

* subversion/mod_dav_svn/version.c
  (get_vsn_options): Advertise SVN_DAV_NS_DAV_SVN_INHERITED_PROPS, which we
   don't actually support yet, but that's coming shortly. 

* subversion/svnserve/serve.c
  (serve): Advertise SVN_RA_SVN_CAP_INHERITED_PROPS, which like mod_dav_svn,
   we don't actually support yet. 


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1303251 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Develop a fallback which allows new clients
to get inherited props from servers that don't have the
SVN_RA_CAPABILITY_INHERITED_PROPS capability.

* subversion/libsvn_ra/ra_loader.c
  (svn_props.h, svn_sorts.h): New #includes.

  (get_inherited_props): New.

  (svn_ra_get_file2,
   svn_ra_get_dir3): Use new fallback code when getting inherited props from
   and old server.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1303252 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Sync with ^/subversion/trunk through
r1303255.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1303257 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Implement getting inherited props over
ra_svn.

* subversion/libsvn_client/prop_commands.c
  (remote_proplist): Raise an error if we insist on asking a server for
   inherited props if that server isn't advertising the
   SVN_RA_CAPABILITY_INHERITED_PROPS capability.

* subversion/libsvn_ra_svn/client.c
  (parse_iproplist): New.

  (ra_svn_get_file,
   ra_svn_get_dir): Implement the client-side stuffs for getting inherited
   props over ra_svn.

* subversion/libsvn_ra_svn/protocol
  (get-file,
   get-dir): Document the new protocol options.

* subversion/svnserve/serve.c
  (get_props): Support getting inherited props via svn_fs_node_proplist2.

  (get_file,
   get_dir): Implement the server-side stuffs for getting inherited props
   over ra_svn.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1305641 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: API comment tweak.

* subversion/include/svn_ra.h
  (svn_ra_get_file2,
   svn_ra_get_dir3): Document the dependency on the
   SVN_RA_CAPABILITY_INHERITED_PROPS capability when asking for inherited
   props.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1305642 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Fix a bug in the new FS API.

* subversion/libsvn_client/prop_commands.c
  (fs_node_proplist): Don't assume callers always want explicit properties,
   they may be looking for inherited only.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1305643 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Fix a bug in the new FS API.

* subversion/libsvn_fs_fs/tree.c
  (fs_node_proplist): Don't assume callers always want explicit properties,
   they may be looking for inherited only.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1305659 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Sync with ^/subversion/trunk through
r1305659.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1305667 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch:

* subversion/libsvn_fs_fs/tree.c
  (svn_sorts.h): New include.

  (fs_node_proplist): Return a depth-first sorted array as promised.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1312073 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Add a dedicated API for getting
inherited properties & finish implementation of inherited property retrieval
via ra_neon and ra_serf.

* subversion/include/private/svn_dav_protocol.h
  (SVN_DAV__INHERITED_PROPS_REPORT): New custom report.

  (SVN_DAV__IPROP_ITEM,
   SVN_DAV__IPROP_PATH,
   SVN_DAV__IPROP_PROPNAME,
   SVN_DAV__IPROP_PROPVAL): New child elements for new report.

* subversion/include/svn_ra.h
  (svn_ra_get_inherited_props): New.

* subversion/libsvn_ra/ra_loader.c
  (svn_ra_get_inherited_props): New.

* subversion/libsvn_ra/ra_loader.h
  (svn_ra__vtable_t.get_inherited_props): New.

* subversion/libsvn_ra_local/ra_plugin.c
  (get_node_props): Handle case where caller wants only inherited props.

  (svn_ra_local__get_inherited_props): New.

  (ra_local_vtable): Add svn_ra_local__get_inherited_props callback.

* subversion/libsvn_ra_neon/fetch.c
  (svn_ra_neon__get_file,
   svn_ra_neon__get_dir): Actually implement retrieval of inherited props,
   which till now was only promised.

* subversion/libsvn_ra_neon/inherited_props.c: New, ra_neon implementation
  of svn_ra_get_inherited_props.

* subversion/libsvn_ra_neon/ra_neon.h
  (svn_ra_neon__get_inherited_props): New.

  (ELEM_iprop_report,
   ELEM_iprop_item,
   ELEM_iprop_path,
   ELEM_iprop_propname,
   ELEM_iprop_propval): New enums.

* subversion/libsvn_ra_neon/session.c
  (neon_vtable): Add svn_ra_neon__get_inherited_props.

* subversion/libsvn_ra_serf/inherited_props.c: New, ra_serf implementation
  of svn_ra_get_inherited_props.

* subversion/libsvn_ra_serf/ra_serf.h
  (svn_ra_serf__get_inherited_props): New.

* subversion/libsvn_ra_serf/serf.c
  (svn_ra_serf__get_dir): Implement retrieval of inherited props via new
   svn_ra_get_inherited_props API.

* subversion/libsvn_ra_serf/update.c
  (svn_ra_serf__get_file): Implement retrieval of inherited props via new
   svn_ra_get_inherited_props API.

* subversion/libsvn_ra_svn/client.c
  (parse_iproplist): Depth-first ordering of inherited property array was
   fixed in r1312073, so stop fixing it here. 

* subversion/mod_dav_svn/dav_svn.h
  (dav_svn__reports_list): Add SVN_DAV__INHERITED_PROPS_REPORT.

  (dav_svn__get_inherited_props_report): New.

* subversion/mod_dav_svn/reports/inherited-props.c: New, report handler
  for querying inherited props.

* subversion/mod_dav_svn/version.c
  (deliver_report): Handle new report.

* subversion/svnserve/serve.c
  (get_props): Allow callers to ask only for inherited props.

  (get_inherited_props): New.

  (main_commands): Add get_inherited_props.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1312074 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Add a server-side log function for
get-inherited-props action.

* subversion/include/private/svn_log.h
  (svn_log__get_inherited_props): New.

* subversion/libsvn_subr/log.c
  (svn_log__get_inherited_props): New.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1312075 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Sync with ^/subversion/trunk through
r1312075.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1312079 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Remove some cruft

* subversion/libsvn_ra_svn/client.c
  (ra_svn_get_inherited_props): Remove a stray comment.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1325533 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Use iterpools in some recent changes, no
functional change.

* subversion/mod_dav_svn/reports/inherited-props.c
  (dav_svn__get_inherited_props_report): Use iterpools.

* subversion/svnserve/serve.c
  (get_file,
   get_dir):  Use iterpools.

git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1325534 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: More iterpools.

* subversion/svnserve/serve.c:
  (get_dir): Actually *use* the iterpools created in r1325534.



git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1325538 13f79535-47bb-0310-9956-ffa450edef68
On the inheritable-props branch: Implement authz checks when retrieving
inherited props.

* subversion/include/svn_repos.h
  (svn_repos_fs_get_inherited_props): New.

* subversion/libsvn_repos/fs-wrap.c
  (svn_sorts.h): New include.

  (svn_repos_fs_get_inherited_props): New, a wrapper around
   svn_fs_node_proplist2 that checks for authorization to parent paths which
   a path inherits from.

* subversion/mod_dav_svn/reports/inherited-props.c
  (dav_svn__get_inherited_props_report): Use svn_repos_fs_get_inherited_props
   in place of svn_fs_node_proplist2.

* subversion/svnserve/serve.c
  (get_props): Use svn_repos_fs_get_inherited_props in place of
   svn_fs_node_proplist2.

  (get_file,
   get_dir,
   get_inherited_props): Update calls to get_props.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/inheritable-props@1325559 13f79535-47bb-0310-9956-ffa450edef68