[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PATCH] Fix for issue 3787

From: Noorul Islam K M <noorul_at_collab.net>
Date: Thu, 07 Apr 2011 10:17:49 +0530

Stefan Sperling <stsp_at_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);
 
Received on 2011-04-07 06:50:00 CEST

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.