Reputation: 47276
They are specially annoying when I need to upload to the server a web solution.
Is there a way of configuring SVN to create the _svn folders outside my working directory? If not, what is the best way to deal with them when you need to copy only the code?
Update: Using "svn export" command is problematic because there are files that are not under source control but necessary like .dll's, xml data files or database files and they will not be exported. Therefore it would be required to manually copy them in there different subdirectories from the working copy each time.
Upvotes: 13
Views: 9974
Reputation: 2494
If you want to delete all sub folders named .svn in windows then create batch file with this content:
for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do (
rd /s /q "%%i"
)
save it in a file del_All_Dot_SVN_Folders.cmd . Run it. Your done.
Thanks to http://www.axelscript.com/2008/03/11/delete-all-svn-files-in-windows/
Remember the above code has .svn whereas the code in the link has only *svn so its better to have the .svn to not accidentally have undesired effect.
Upvotes: 0
Reputation: 91805
It's not (currently) possible to configure SVN (or TortoiseSVN) to create the .svn (or _svn) directories outside the working copy. I believe that the SVN 1.6 roadmap includes revisiting the working-copy library. The ability to put the administrative directories somewhere else might come out of this work, but I'm speculating.
You should use the "svn export" command to create a "clean" copy of your working copy (i.e. without the _svn directories). This works from the command line client.
If you're using TortoiseSVN, you can right-click on the working copy, and choose "Export...". This will ask you for a folder to export the files to. Alternatively, you can right-drag a working copy to a folder (one that's not a working copy), and TortoiseSVN will bring up a context menu; among the options are "SVN Export to here" and "SVN Export all to here", the latter also exporting files not under version control.
Upvotes: 26
Reputation: 3963
We use CruiseControl with robocopy in order to create a clean copy of your repository.
<exec>
<executable>C:\Archivos de programa\Windows Resource Kits\Tools\robocopy.exe</executable>
<buildArgs>E:\CruiseControl\yourproject\Code\trunk\ E:\wwwroot\yourproject *.* /E /XX /XA:H /XO /NDL /NC /NS /NP /XF "*.cache" "*.designer.cs" "*.sln" "*.msbuild" "*.csproj" "*.PDB" "*.user" "*.designer" /XD .svn App_Code obj Properties</buildArgs>
<buildTimeoutSeconds>60</buildTimeoutSeconds>
<successExitCodes>1,0</successExitCodes>
</exec>
/XF and /XD arguments excludes the files and the directories you don't want to upload to production.
You can find more info about robocopy here.
Upvotes: 0
Reputation: 1062492
Robocopy deployment...
robocopy {source} {dest} /MIR /XD _svn /XD .svn
Upvotes: 12
Reputation: 726
+1 for the solution from Isak Savo.
And you can do an XCOPY and exclude "/svn" folders :
XCOPY %1 %1_deploy /EXCLUDE:C:\ExcludeSVN.txt /E /C /I /F /R /Y
Content of ExcludeSVN.txt :
/_svn
In fact, if you want to upoload to a web server, your exclude file can contains a lot more :
Warning : If you exclude .cs files, you gave to re-copy .css file after
Upvotes: 2
Reputation: 35884
In TortoiseSVN, you can right click on the working copy and drag it somewhere else. And when the popup menu appears, select "SVN Export Here". (This requires that all code in the working copy was checked in since the export will be from trunk and not from the working copy)
See these resources for details:
Upvotes: 4
Reputation: 14565
if you use a nant script to enable deployment to the web server it has a _SVN and _SVN/** as automatic excludes when copying files. nant will filter out lots of unwaanted files when copying files via its copy task including:
you can read more about NANT at its project home page here : NANT Home
Upvotes: 3
Reputation: 12231
The really dirty way in Windows: Create a copy of your project, open Explorer, navigate to the directory the copy is in, and do a Find for everything ending with _svn. Once the search is done, select all and hit Delete.
Yuck! But it works really well.
Upvotes: 1