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

Re: issue 4345: switch/delete/commit confusion

From: Philip Martin <philip.martin_at_wandisco.com>
Date: Thu, 04 Apr 2013 14:12:23 +0100

"Bert Huijben" <bert_at_qqmail.nl> writes:

>> -----Original Message-----
>> From: MARTIN PHILIP [mailto:codematters_at_ntlworld.com] On Behalf Of
>> Philip Martin
>> Sent: donderdag 4 april 2013 14:23
>> To: Bert Huijben
>> Cc: 'Philip Martin'; dev_at_subversion.apache.org
>> Subject: Re: issue 4345: switch/delete/commit confusion
>>
>> 1.6 replaces the switched URL. As far as I can see 1.6 has resonable
>> behaviour from a user's point of view. The file is marked switched the
>> commit affects the switched item. Even update after committing the
>> delete or replace seems to work: for replace the item remains switched,
>> for delete the switched item is removed from the working copy and update
>> restores the unswitched item.
>
> While this might be/sound reasonable, this is not how
> svn_wc__db_scan_addition() and everything build on top works.
>
> Added nodes are in WC-NG always added below their parent; they don't have a
> URL. What is below an added tree is completely ignored for its status
>
> Changing this, changes the entire WC-NG design in many more ways than I can
> think of...

I've always found the scan_deletion/scan_additon API hard to use. I
don't see anything in the NODES data model that would stop us
implementing the 1.6 behaviour. The only (!) problem is the code.

Three switched nodes deleted:

$ svn st
D S f1
D S f2
D S f3

op-depth local-relpath presence repos-path
     0 normal trunk
     0 f1 normal branch/f1
     0 f2 normal branch/f2
     0 f3 normal branch/f3
     1 f1 base-delete
     1 f2 base-delete
     1 f3 base-delete

Replace one with an add, one with a copy:

$ svn st
D S f1
R S f2
R + S f3

op-depth local-relpath presence repos-path
     0 normal trunk
     0 f1 normal branch/f1
     0 f2 normal branch/f2
     0 f3 normal branch/f3
     1 f1 base-delete
     1 f2 normal
     1 f3 normal C/f4

Commit:

op-depth local-relpath presence repos-path
     0 normal trunk
     0 f1 not-present branch/f1
     0 f2 normal branch/f2
     0 f3 normal branch/f3

Update:

op-depth local-relpath presence repos-path
     0 normal trunk
     0 f1 normal trunk/f1
     0 f2 normal branch/f2
     0 f3 normal branch/f3

The log for the commit would show:

   D /branch/f1
   R /branch/f2
   R /branch/f3 (copied from /C/f4)

-- 
Certified & Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download
Received on 2013-04-04 15:26:19 CEST

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