SET REPO=file:///d:/repo/r1 SET REPO_DIR=d:\repo\r1 SET WC=d:\wc pushd %WC% svnadmin create %REPO_DIR% mkdir lib1\trunk mkdir lib1\tags mkdir lib1\branches mkdir lib2\trunk mkdir lib2\tags mkdir lib2\branches mkdir app1\trunk mkdir app1\tags mkdir app1\branches rem create/initial import projects svn import -m "Create library project 1" lib1 %REPO%/lib1 svn import -m "Create library project 2" lib2 %REPO%/lib2 svn import -m "Create application project 1" app1 %REPO%/app1 rem cleanup rmdir /q /s lib1 rmdir /q /s lib2 rmdir /q /s app1 :do_checkout rem initial checkout svn co %REPO%/lib1/trunk lib1 svn co %REPO%/lib2/trunk lib2 svn co %REPO%/app1/trunk app1 :do_properties rem setup svn:externals properties, so app1 references lib1 and lib2 as externals cd app1 echo ^^/lib1/trunk lib1 > externals echo ^^/lib1/trunk lib2 >> externals svn propset svn:externals -F externals . svn commit -m "linked externals" svn up :do_the_test rem Add a file to the lib1 directory echo Hello world, this is lib1 > lib1\file1.txt mkdir lib1\subdir1 echo Hello world, this is lib1 subdir > lib1\subdir1\file1.txt rem Do a commit (on the complete working copy, i.e. x:\wc\app1). We would expect rem (as lib1 is "linked" as an external), that the checkin would occur only rem on the dependent/external /repo/lib1/trunk.