Invalid change ordering?

Dirk vss2svn at nogga.de
Sat Feb 10 14:23:15 EST 2007


Dirk schrieb:
>
>>
>> Ref the branch handler... ideally, when (say) BAAAAAAA is branched at 
>> revision 3 to create GAAAAAAA, the internal state tracking GAAAAAAA's 
>> parent paths would inherit BAAAAAAA's up to revision 3. Then if 
>> GAAAAAAA is shared elsewhere and then branched or pinned to revision 
>> 1 or 2, it knows where to get this...
> Should be fixed in [298]. The code will query the ancestor for a valid 
> path and the copy from that one.

I have just tested this and was wondering, why the "copy-from" will hide 
all changes in between the copy-from revision and the pin revision. 
E.g.: my test code is like this (in vss pseudo syntax)

ss create branchPinTest.txt   --> version 1
ss commit branchPinTest.txt  --> version 2
ss commit branchPinTest.txt  --> version 3
ss branch branchPinTest.txt subproject/branchPinTest.txt
ss commit subproject/branchPinTest.txt --> version 4
ss commit subproject/branchPinTest.txt --> version 5
ss pin subproject/branchPinTest.txt -v1 --> pin to version 1

The subversion action list is (also abbreviated for clarity)

ADD    /   
ADD    /branchPinTest/   
ADD    /branchPinTest/branchPinTest.txt   
COMMIT    /branchPinTest/branchPinTest.txt   
COMMIT    /branchPinTest/branchPinTest.txt   
ADD    /branchPinTest/shareProject/   
SHARE    /branchPinTest/shareProject/branchPinTest.txt   
BRANCH    /branchPinTest/shareProject/branchPinTest.txt   
COMMIT    /branchPinTest/shareProject/branchPinTest.txt   
COMMIT    /branchPinTest/shareProject/branchPinTest.txt   
PIN    /branchPinTest/shareProject/branchPinTest.txt       
/branchPinTest/branchPinTest.txt (version 1)

now if I show the log of the "subproject/branchPinTest.txt" file:

F:\src\vss2svn\svn>svn log 
file:///F:/svn/test10/branchPinTest/shareProject/branchPinTest.txt
------------------------------------------------------------------------
r8 | Admin | 2007-02-09 22:24:54 +0100 (Fr, 09 Feb 2007) | 1 line
------------------------------------------------------------------------
r2 | Admin | 2007-02-09 22:24:41 +0100 (Fr, 09 Feb 2007) | 1 line
------------------------------------------------------------------------

You see, that all intermediate action in version 3 - 7, alias all the 
commits are not listed in the log. I you show the log from version 7

F:\src\vss2svn\svn>svn log -r7:1 
file:///F:/svn/test10/branchPinTest/shareProject/branchPinTest.txt
------------------------------------------------------------------------
r7 | Admin | 2007-02-09 22:24:53 +0100 (Fr, 09 Feb 2007) | 1 line
------------------------------------------------------------------------
r6 | Admin | 2007-02-09 22:24:53 +0100 (Fr, 09 Feb 2007) | 1 line
------------------------------------------------------------------------
r5 | Admin | 2007-02-09 22:24:50 +0100 (Fr, 09 Feb 2007) | 1 line
------------------------------------------------------------------------
r4 | Admin | 2007-02-09 22:24:48 +0100 (Fr, 09 Feb 2007) | 1 line
------------------------------------------------------------------------
r3 | Admin | 2007-02-09 22:24:48 +0100 (Fr, 09 Feb 2007) | 1 line
------------------------------------------------------------------------
r2 | Admin | 2007-02-09 22:24:41 +0100 (Fr, 09 Feb 2007) | 1 line
------------------------------------------------------------------------

where rev 3, 4, 6 and 7 are the four commits on the file.


So the PIN, as it is implemented now, will hide all intermediate actions 
and for the user this looks like a roll-back to an old version.

While thinking of it, it is exactly what it should be. But quite 
confusing if you come from VSS ;-)

Dirk



More information about the vss2svn-users mailing list