Philip Martin <philip@codematters.co.uk> writes:
> kfogel@collab.net writes:
I wrote?  Are you sure that wasn't breser? :-)
> > -      /* The revisions must match except when adding a directory with a
> > -         name that matches a directory scheduled for deletion. That's
> > -         because the deleted directory's administrative dir will still be
> > -         in place but will have an arbitrary revision. */
> > -      if (entry->revision != revision
> > -          && !(entry->schedule == svn_wc_schedule_delete && revision == 0))
> > -        return
> > -          svn_error_createf
> > -          (SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
> > -           _("Revision %ld doesn't match existing revision %ld in '%s'"),
> > -           revision, entry->revision,
> > -           svn_path_local_style (path, pool));
> > +      /* When the directory exists and is scheduled for deletion do not
> > +       * check the revision or the URL.  The revision can be any 
> > +       * arbitrary revision and the URL may differ if the add is
> > +       * being driven from a merge which will have a different URL. */
> > +      if (entry->schedule != svn_wc_schedule_delete)
> > +        {
> > +          if (entry->revision != revision)
> > +            return
> > +              svn_error_createf
> > +              (SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
> > +               _("Revision %ld doesn't match existing revision %ld in '%s'"),
> > +               revision, entry->revision, path);
> >  
> > -      /** ### comparing URLs, should they be canonicalized first? */
> > -      if (strcmp (entry->url, url) != 0)
> > -        return
> > -          svn_error_createf
> > -          (SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
> > -           _("URL '%s' doesn't match existing URL '%s' in '%s'"),
> > -           url, entry->url,
> > -           svn_path_local_style (path, pool));
> > +          /** ### comparing URLs, should they be canonicalized first? */
> > +          if (strcmp (entry->url, url) != 0)
> > +            return
> > +              svn_error_createf
> > +              (SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
> > +               _("URL '%s' doesn't match existing URL '%s' in '%s'"),
> > +               url, entry->url, path);
> > +	}
> 
> That looks reasonable.  I remember looking at that code in the past,
> when merge was using an extra copy to do add-with-history, and I
> wasn't confident enough to change it!
> 
> I think there's a related issue: 'svn cp' cannot be used to schedule a
> replacement for a schedule delete item.  It's possible your change
> will lay the ground for fixing that as well, it might be just a
> libsvn_client problem now.
I think Ben had exactly that in mind, if I'm remembering a
conversation correctly...
-K
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Dec  1 23:18:07 2004