Stefan Sperling <s...@elego.de> writes: > On Thu, Mar 10, 2011 at 04:49:32PM +0530, Noorul Islam K M wrote: > >> >> >From issue tracker >> (http://subversion.tigris.org/issues/show_bug.cgi?id=3787) >> >> It would be ever-so-helpful to folks looking to capture and replicate a >> working >> copy sparse checkouts configuration if 'svn info -R' would show exclude >> items, >> if only optionally, and even then if only just with minimal info: >> >> Path: some/excluded-path >> Depth: exclude >> >> Today you cannot look at 'svn info -R' output and get a complete picture of >> what >> is and isn't in the sparse configuration. >> -------------------------------------------------------------------------------- >> >> I added new option "--show-exclude" to 'svn info' subcommand. When this >> option is passed to info command along with '-R', it will include nodes >> with depth 'exclude' also for displaying information. This issue is >> related to 3792 which is already fixed. > > I don't think the new --show-exclude option is necessary. > We should always show information about excluded items in the output > svn info -R. > > Can you rework the patch accordingly? That will also make it smaller. >
Please find updated patch. All tests pass using 'make check'. Log [[[ Fix for issue 3787. Make 'svn info -R' display minimal information about nodes with depth exclude in the tree. * subversion/libsvn_client/info.c (crawl_entries): If depth is infinity or files then pass TRUE to svn_wc__node_walk_children as show_hidden parameter value. * subversion/tests/cmdline/depth_tests.py (info_show_exclude): New test. (test_list): Run it. Patch by: Noorul Islam K M <noorul{_AT_}collab.net> ]]]
Index: subversion/tests/cmdline/depth_tests.py =================================================================== --- subversion/tests/cmdline/depth_tests.py (revision 1089373) +++ subversion/tests/cmdline/depth_tests.py (working copy) @@ -2815,7 +2815,38 @@ None, None, None, None, None, False, '--parents', omega_path) +@Issue(3787) +def info_show_exclude(sbox): + "tests 'info -R' on excluded directory" + sbox.build() + wc_dir = sbox.wc_dir + + A_path = os.path.join(wc_dir, 'A') + svntest.main.run_svn(None, 'up', '--set-depth', 'exclude', A_path) + + expected_info = [{ + 'Path' : '.', + 'Repository Root' : sbox.repo_url, + 'Repository UUID' : svntest.actions.get_wc_uuid(wc_dir), + }] + + expected_info.append({ + 'Path' : 'A', + 'Repository Root' : sbox.repo_url, + 'Repository UUID' : svntest.actions.get_wc_uuid(wc_dir), + 'Depth' : 'exclude', + }) + + expected_info.append({ + 'Path' : re.escape("iota"), + 'Repository Root' : sbox.repo_url, + 'Repository UUID' : svntest.actions.get_wc_uuid(wc_dir), + }) + + os.chdir(wc_dir) + svntest.actions.run_and_verify_info(expected_info, '-R') + #---------------------------------------------------------------------- # list all tests here, starting with None: test_list = [ None, @@ -2862,6 +2893,7 @@ update_excluded_path_sticky_depths, update_depth_empty_root_of_infinite_children, sparse_update_with_dash_dash_parents, + info_show_exclude, ] if __name__ == "__main__": Index: subversion/libsvn_client/info.c =================================================================== --- subversion/libsvn_client/info.c (revision 1089373) +++ subversion/libsvn_client/info.c (working copy) @@ -408,13 +408,17 @@ { struct found_entry_baton fe_baton; svn_error_t *err; + svn_boolean_t show_exclude = FALSE; fe_baton.changelist_hash = changelist_hash; fe_baton.receiver = receiver; fe_baton.receiver_baton = receiver_baton; fe_baton.wc_ctx = ctx->wc_ctx; - err = svn_wc__node_walk_children(ctx->wc_ctx, local_abspath, FALSE, + if (depth == SVN_DEPTH_INFINITY_OR_FILES(TRUE)) + show_exclude = TRUE; + + err = svn_wc__node_walk_children(ctx->wc_ctx, local_abspath, show_exclude, info_found_node_callback, &fe_baton, depth, ctx->cancel_func, ctx->cancel_baton, pool);