Hello all,

Hello all. I save a directory with svn:externals set, external is checked out. 
"svn status -v" 
reports it as 'X' for both WC  1.6 and WC 1.7. When I move the directory with 
svn:externals property 
into another directory: for SVN 1.6 case external is still reported as 'X', but 
in the case of 
SVN1.7 it is reported as unversioned.

I tried to investiage the problem.

svn_wc__internal_walk_status      calls    svn_wc__db_externals_defined_below   
 to fill 
'wb.externals' map.

svn_wc__db_externals_defined_below   performs just a simple SQL request to 
EXTERNALS table without 
considering local moves.

Later         send_unversioned_item just performs a lookup of a moved path 
(directory2/directory1/external)  in this map and of course doesn't find 
anything.

Steps to reproduce:

/tmp$ svnadmin create test
/tmp$ svn co file:///tmp/test test-co
Checked out revision 0.
/tmp$ cd test-co
/tmp/test-co$ svn mkdir directory1 directory2 directory3
A         directory1
A         directory2
A         directory3
/tmp/test-co$ svn propset svn:externals 'file:///tmp/test/directory3 external' 
directory1
property 'svn:externals' set on 'directory1'
/tmp/test-co$ svn commit -m Initial
Adding         directory1
Adding         directory2
Adding         directory3

Committed revision 1.
/tmp/test-co$ svn update
Updating '.':

Fetching external item into 'directory1/external':
External at revision 1.

At revision 1.
/tmp/test-co$ svn status -v
                 1        1 dmit10       .
                 1        1 dmit10       directory1
X                                        directory1/external
                 1        1 dmit10       directory2
                 1        1 dmit10       directory3                             
                                                                                
                                           
                                                                                
                                                                                
                                           
Performing status on external item at 'directory1/external':                    
                                                                                
                                           
                 1        1 dmit10       /tmp/test-co/directory1/external       
                                                                                
                                           
/tmp/test-co$ svn mv directory1 directory2/directory1
A         directory2/directory1                                                 
                                                                                
                                           
D         directory1                                                            
                                                                                
                                           
/tmp/test-co$ svn status -v
                 1        1 dmit10       .                                      
                                                                                
                                           
D                1        1 dmit10       directory1                             
                                                                                
                                           
                 1        1 dmit10       directory2                             
                                                                                
                                           
A  +             -        1 dmit10       directory2/directory1                  
                                                                                
                                           
?                                        directory2/directory1/external         
                                                                                
                                           
                 1        1 dmit10       directory3                             
                                                                                
                                           
                                                                                
                                                                                
                                           
Performing status on external item at 'directory2/directory1/external':         
                                                                                
                                           
                 1        1 dmit10       
/tmp/test-co/directory2/directory1/external    

Reply via email to