On Thu, Jul 22, 2010 at 07:59:42PM +0200, Bert Huijben wrote:
> 
> 
> > -----Original Message-----
> > From: cmpil...@apache.org [mailto:cmpil...@apache.org]
> > Sent: donderdag 22 juli 2010 19:55
> > To: comm...@subversion.apache.org
> > Subject: svn commit: r966774 - /subversion/branches/issue-2779-
> > dev/subversion/libsvn_client/update.c
> > 
> > Author: cmpilato
> > Date: Thu Jul 22 17:54:49 2010
> > New Revision: 966774
> > 
> > URL: http://svn.apache.org/viewvc?rev=966774&view=rev
> > Log:
> > On the 'issue-2779-dev' branch:  Get 'svn update' following redirects!
> > 
> > * subversion/libsvn_client/update.c
> >   (update_internal): Check for a corrected URL from the RA subsystem
> >     and, upon finding one, relocate the working copy before the update.
> > 
> > 
> > Modified:
> >     subversion/branches/issue-2779-
> > dev/subversion/libsvn_client/update.c
> > 
> > Modified: subversion/branches/issue-2779-
> > dev/subversion/libsvn_client/update.c
> > URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-
> > dev/subversion/libsvn_client/update.c?rev=966774&r1=966773&r2=966774&vi
> > ew=diff
> > =======================================================================
> > =======
> > --- subversion/branches/issue-2779-
> > dev/subversion/libsvn_client/update.c (original)
> > +++ subversion/branches/issue-2779-
> > dev/subversion/libsvn_client/update.c Thu Jul 22 17:54:49 2010
> > @@ -108,6 +108,7 @@ update_internal(svn_revnum_t *result_rev
> >    const svn_ra_reporter3_t *reporter;
> >    void *report_baton;
> >    const char *anchor_url;
> > +  const char *corrected_url;
> >    const char *target;
> >    const char *repos_root;
> >    svn_error_t *err;
> > @@ -192,10 +193,20 @@ update_internal(svn_revnum_t *result_rev
> >      : NULL;
> > 
> >    /* Open an RA session for the URL */
> > -  SVN_ERR(svn_client__open_ra_session_internal(&ra_session, NULL,
> > anchor_url,
> > +  SVN_ERR(svn_client__open_ra_session_internal(&ra_session,
> > &corrected_url,
> > +                                               anchor_url,
> >                                                 anchor_abspath, NULL,
> > TRUE,
> >                                                 TRUE, ctx, pool));
> > 
> > +  /* If we got a corrected URL from the RA subsystem, we'll need to
> > +     relocate our working copy first. */
> > +  if (corrected_url)
> > +    {
> > +      SVN_ERR(svn_client_relocate(anchor_abspath, anchor_url,
> > corrected_url,
> > +                                  TRUE, ctx, pool));
> > +      anchor_url = corrected_url;
> > +    }
> > +
> 
> Shouldn't we relocate the complete working copy, starting by the working copy 
> root instead of just the operation anchor?

I'm thinking a callback mechanism to ask users if they really
want to relocate to the new URL would be nice. And I agree that
the entire working copy should be relocated (should be easy in WC-NG,
right? :)

Stefan

Reply via email to