views:

3520

answers:

8

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.

+17  A: 

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

Liudvikas Bukys
"Export" is in the tortoisesvn context menu, and I believe when you drag a versioned folder with the right mouse button to a folder, it offers to export to that folder.
Joeri Sebrechts
+24  A: 

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.

Roger Lipscombe
it's now on the Subversion 1.7 roadmap; looks like there'll be one master .svn. Not sure if it can be configured to be outside of the WC in 1.7 yet
Sander Rijken
A: 

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.

Rahul
+3  A: 

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

MikeJ
+4  A: 

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:

Isak Savo
+2  A: 

+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

Michel
+6  A: 

Robocopy deployment...

robocopy {source} {dest} /MIR /XD _svn /XD .svn
Marc Gravell
A: 

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.

jdecuyper