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

[PATCH]: Re: svn status -u crash w/ moved external

From: <kfogel_at_collab.net>
Date: 2005-04-29 06:20:15 CEST

kfogel@collab.net writes:
> "Rowell, Geoff" <growell@ENVOYWW.COM> writes:
> > I repositioned some externals in our corporate repository. A few
> > subfolders that used to be externals are now actual subfolders. One
> > of the developers ran a "svn status -u" command and it crashed.
>
> Thank you! I have reproduced this with the latest trunk code, using
> your recipe. I am debugging now.

Here's a patch. It passes 'make check', but I haven't committed yet
because I'm not completely confident it's the right solution. I'm
worried that it might prevent status from doing the right thing on
svn:externals in some situations, situations that happen not to be
covered by our test suite.

If anyone has any thoughts about this fix, please follow up.

[[[
Fix bug in status's handling of svn:externals directories.

Thanks to Geoff Rowell <growell@envoyww.com>, who described this bug in
http://subversion.tigris.org/servlets/ReadMsg?list=users&msgNo=30489,
<5C58E90D72EB654D9C62E216338A1E5D70056B@Clavin.corp01.envoyww.com>,
subject "svn status -u crash w/ moved external".

* subversion/libsvn_wc/status.c
  (make_dir_baton): Don't get status for children of external directories.
]]]

Index: subversion/libsvn_wc/status.c
===================================================================
--- subversion/libsvn_wc/status.c (revision 14510)
+++ subversion/libsvn_wc/status.c (working copy)
@@ -1043,6 +1043,10 @@
       && (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)
+ /* Order is important here. If parent_status->text_status is
+ svn_wc_status_external, then parent_status->entry is NULL,
+ so check the former before looking inside the latter. */
       && (parent_status->entry->kind == svn_node_dir)
       && (eb->descend || (! pb)))
     {

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Apr 29 06:52:07 2005

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