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

Re: svn commit: r18291 - in trunk/subversion: libsvn_wc tests/cmdline

From: <kfogel_at_collab.net>
Date: 2006-01-30 15:11:44 CET

lundblad@tigris.org writes:
> Log:
> Fix crash in svn status -u when an unversioned and ignored directory
> is in the repository.
>
> Found by: Stefan Küng <tortoisesvn@gmail.com>
>
> * subversion/libsvn_wc/status.c (make_dir_baton): Don't try to get status
> of ignored directory.
>
> * subversion/tests/cmdline/stat_tests.py
> (status_ignored_dir): New test.
> (test_list): Run it.

The log says the crash happens "when an unversioned and ignored
directory is in the repository".

First, did you mean "working copy" instead of "repository"? :-)

Second, a question about the code, see below...

> --- trunk/subversion/libsvn_wc/status.c (original)
> +++ trunk/subversion/libsvn_wc/status.c Mon Jan 30 08:32:54 2006
> @@ -1155,13 +1155,14 @@
> /* Order is important here. We can't depend on parent_status->entry
> being non-NULL until after we've checked all the conditions that
> might indicate that the parent is unversioned ("unversioned" for
> - our purposes includes being an external). */
> + our purposes includes being an external or ignored item). */
> if (parent_status
> && (parent_status->text_status != svn_wc_status_unversioned)
> && (parent_status->text_status != svn_wc_status_deleted)
> && (parent_status->text_status != svn_wc_status_missing)
> && (parent_status->text_status != svn_wc_status_obstructed)
> && (parent_status->text_status != svn_wc_status_external)
> + && (parent_status->text_status != svn_wc_status_ignored)
> && (parent_status->entry->kind == svn_node_dir)
> && (eb->descend || (! pb)))
> {

This conditional gets the entry's status if parent_status is *neither*
unversioned nor ignored. Is it the case that if an object is both
ignored and unversioned, its text_status will be 'ignored' not
'unversioned'? In other words, the crash was happening because even
though the item *was* unversioned, the 'ignore' part dominated, so the
text_status said nothing about its being unversioned?

(I have no objection to the solution, I just want to make sure I
understand what's going on.)

Thanks,
-Karl

-- 
www.collab.net  <>  CollabNet  |  Distributed Development On Demand
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Mon Jan 30 16:52:10 2006

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