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

Re: svn commit: r1076712 - in /subversion/trunk/subversion/libsvn_wc: revision_status.c wc-queries.sql wc_db.c wc_db.h

From: Stefan Sperling <stsp_at_elego.de>
Date: Thu, 3 Mar 2011 19:48:22 +0100

On Thu, Mar 03, 2011 at 01:40:55PM -0500, C. Michael Pilato wrote:
> On 03/03/2011 01:15 PM, stsp_at_apache.org wrote:
> > Author: stsp
> > Date: Thu Mar 3 18:15:46 2011
> > New Revision: 1076712
> >
> > URL: http://svn.apache.org/viewvc?rev=1076712&view=rev
> > Log:
> > As a first step towards eliminating use of the node walker in
> > svn_wc_revision_status2(), use a DB query to determine the min/max revisions
> > of the working copy, instead of obtaining this information during the crawl.
>
> I was *just* making changes in this space. Why? Because this code needs to
> ignore file externals when determining the revision range and status and
> such. In fact, I was just getting ready to run the full test suite with the
> attached patch, which appears to fix issue #3816[1]. Can we modify your
> MIN_MAX sqlite statement to skip nodes which are file externals?

Off-hand I have no better idea than selecting properties, parsing them,
and determining if any of them configures a file external.
That could be made to work but it's quite hairy.

I think that, going forward, we'll need a better representation
of externals in the DB in order to be able to make queries consider
them in a more straightforward way.

What do you think about trying to tackle that instead of adding
little hacks here and there to fix file external bugs?
Hacks that ultimately limit progress in wc-ng?

>
> -- C-Mike
>
> [1] http://subversion.tigris.org/issues/show_bug.cgi?id=3816
>
> -----------------
>
> Index: subversion/libsvn_wc/revision_status.c
> ===================================================================
> --- subversion/libsvn_wc/revision_status.c (revision 1076717)
> +++ subversion/libsvn_wc/revision_status.c (working copy)
> @@ -61,6 +61,7 @@
> svn_revnum_t revision;
> svn_revnum_t item_rev;
> svn_depth_t depth;
> + svn_boolean_t is_file_external;
> svn_wc__db_status_t status;
>
> SVN_ERR(svn_wc__db_read_info(&status, NULL, &revision, NULL,
> @@ -89,6 +90,12 @@
> wb->result->modified = TRUE;
> }
>
> + /* Ignore file externals. */
> + SVN_ERR(svn_wc__internal_is_file_external(&is_file_external, wb->db,
> + local_abspath, scratch_pool));
> + if (is_file_external)
> + return SVN_NO_ERROR;
> +
> if (! wb->result->switched)
> {
> svn_boolean_t wc_root;
>
> --
> C. Michael Pilato <cmpilato_at_collab.net>
> CollabNet <> www.collab.net <> Distributed Development On Demand
>
Received on 2011-03-03 19:49:12 CET

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