Hello,

I am running SVN 1.8.1 under Win7.   We have an extensive collection of 
file externals that we use to manage shared code between projects 
(hundreds of files per working directory).

As known, the performance when performing an SVN Update is slow.  To work 
around this, we're attempting to only update externals that are out of 
date (by comparing the local revisions of each file to what is in the 
svn:externals.  As we iterate across the files, if we see an external out 
of date, we execute an svn update <file>. 

Doing this, I'm starting to get corrupted externals....  I can reproduce 
this using the following the steps listed below.  Even if I am performing 
operations out of order with what is expected, I'd expect that I'd be 
unable to harm or corrupt the working directory....


I basically create a clean checkout of a repository.
Verify everything is cool, but realize one file external needs a new 
revision. 
I edit the property (using TSVN) and commit the property.
I then update the working directory ignoring externals and only for the 
immediate directory (because external updates are slow).
I then update the file I know is out of date (because I just edited the 
svn;externals).
Ouch, I get an error and it reports that the file has been switched.
The only way I can repair this is to delete the checkout and recreate it.

I believe this also occurs under 1.7, but will have to confirm later.

Can any confirm first that this is indeed an issue, and second how to 
resolve this?

Thanks!
Dan


c:\Project_files\Test>svn status -v --depth immediates
              2850     2850 dlellis      .
    X         2818     2818 dlellis      1.txt
    X         2633     2633 dlellis      6.txt
    X         2626     2626 dlellis      7.txt
              2850     2847 dlellis      CLP
              2850     2783 dlellis      SM
    X         2812     2812 dlellis      checkintest.txt
    X         2814     2814 dlellis      commit.vbs
    X         2728     2728 dlellis      project.conf

c:\Project_files\Test>svn pg svn:externals
http://test/pd_sandbox/plcm/swdb/M4000/project.conf@2728 project.conf
http://test/pd_sandbox/plcm/swdb/Temp/6.txt@2633 6.txt
http://test/pd_sandbox/plcm/swdb/Temp/7.txt@2626 7.txt
http://test/pd_sandbox/plcm/swdb/Temp/1.txt@2818 1.txt
http://test/pd_sandbox/plcm/swdb/Temp/commit.vbs@2814 commit.vbs
http://test/pd_sandbox/plcm/swdb/Temp/checkintest.txt@2812 checkintest.txt

***** (Modify external here via TSVN) 1.txt from revision 2818 to 2827.

c:\Project_files\Test>svn pg svn:externals
http://test/pd_sandbox/plcm/swdb/M4000/project.conf@2728 project.conf
http://test/pd_sandbox/plcm/swdb/Temp/6.txt@2633 6.txt
http://test/pd_sandbox/plcm/swdb/Temp/7.txt@2626 7.txt
http://test/pd_sandbox/plcm/swdb/Temp/1.txt@2827 1.txt
http://test/pd_sandbox/plcm/swdb/Temp/commit.vbs@2814 commit.vbs
http://test/pd_sandbox/plcm/swdb/Temp/checkintest.txt@2812 checkintest.txt

c:\Project_files\Test>svn commit . --depth empty -m "checkin test"
Sending        .
Committed revision 2851.

c:\Project_files\Test>svn update --depth empty --ignore-externals
Updating '.':
At revision 2851.

c:\Project_files\Test>svn update 1.txt
Updating '1.txt':
U    1.txt
Updated to revision 2851.

c:\Project_files\Test>svn update
Fetching external item into '1.txt':
***svn: warning: W155035: The specified path has an unexpected status
At revision 2851.
*** svn: E205011: Failure occurred processing one or more externals 
definitions

c:\Project_files\Test>svn status -v --depth immediates
              2851     2851 dlellis      .
***    S         2851     2827 dlellis      1.txt
    X         2633     2633 dlellis      6.txt
    X         2626     2626 dlellis      7.txt
              2851     2847 dlellis      CLP
              2851     2783 dlellis      SM
    X         2812     2812 dlellis      checkintest.txt
    X         2814     2814 dlellis      commit.vbs
    X         2728     2728 dlellis      project.conf

Reply via email to