Hi,
This patch makes checkouts and updates at svn_depth_empty and
svn_depth_immediates work with servers that do not understand the new
reporter changes, by making the update editor ignore edits on paths below
the edit depth.
With this patch, I can successfully run the depth tests against a 1.4
svnserve. As this is my first attempt at sparse-directories related work,
I'm posting the patch here for review.
[[[
Make updates and checkouts at 'empty' or 'immediates' depth work with old
servers.
* subversion/include/svn_types.h
(svn_depth_t): Remove comment about svn_depth_exclude being potentially
unnecessary.
* subversion/libsvn_ra_svn/client.c
(ra_svn_update): Don't use the SVN_DEPTH_TO_RECURSE macro, because we
don't want svn_depth_immediates mapped to FALSE in this case. Use a
custom check instead.
* subversion/libsvn_wc/update_editor.c
(dir_baton): New member 'depth'.
(file_baton.skipped): Update comment to reflect new usage.
(prep_directory): Remove 'depth' parameter, it is stored in the dir_baton
now. Use db->depth instead of depth when creating the administrative area.
(open_root): Initialize the returned dir_baton's depth to the default
depth of the edit.
(delete_entry): For svn_depth_empty and svn_depth_files, ignore deletions
of children that haven't been explicitly brought in.
(add_directory): If the directory is the target of the edit, set its
depth to that of the edit. Otherwise, initialize the returned dir_baton's
depth based on the depth of the parent. Remove the old depth calculation
code, and update the call to prep_directory.
(open_directory): If the directory is the target of the edit, set its
depth to that of the edit. Otherwise, initialize the returned dir_baton's
depth based on the depth of the parent. If the entry exists on disk, allow
its depth to override svn_depth_infinity.
(change_dir_prop, close_directory): Don't do anything if the directory is
at svn_depth_exclude.
(absent_file_or_dir): Don't do anything if the parent is empty or excluded,
or if it is at svn_depth_files and the absent entry is a directory.
(add_or_open_file): If parent is at svn_depth_empty or svn_depth_exclude,
skip this file.
]]]
--
Vlad
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Mar 24 14:56:56 2007