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

Reply via email to