Question

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.

Was it helpful?

Solution

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.

OTHER TIPS

Use "svn export" to create a clean directory tree.

Robocopy deployment...

robocopy {source} {dest} /MIR /XD _svn /XD .svn

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:

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:

  • **/*~
  • **/#*#
  • **/.#*
  • **/%*%
  • **/CVS
  • /CVS/
  • **/.cvsignore
  • **/.svn
  • /.svn/
  • **/_svn
  • /_svn/
  • **/SCCS
  • /SCCS/
  • **/vssver.scc
  • /_vti_cnf/

you can read more about NANT at its project home page here : NANT Home

+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 :

  • .pdb
  • .cs
  • .resx
  • .csproj
  • .sln
  • .webinfo
  • .bak
  • .sql
  • .zip
  • .vspscc
  • .vssscc
  • .scc
  • \Web.config

Warning : If you exclude .cs files, you gave to re-copy .css file after

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.

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.

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top